Skip to content

全ベースシェーダーにアウトライン描画パスを追加する #49

Description

@PenguinDOOM

目的

Pure Baseの全ベースシェーダーに、Shader-Coreホストとして利用できる最小限のアウトライン描画パスを追加する。

アウトライン自体へ多数の視覚機能を内蔵するのではなく、Pure Base単体でも基本的なアウトラインを描画でき、Shader-Coreモジュールから拡張できる基盤を提供する。

0.2.0後の描画機能拡張として最優先で扱う。

対象

  • PureBase/Unlit
  • PureBase/Toon
  • PureBase/PBR
  • PureBase/Hybrid
  • Outline用ShaderLab Pass
  • Outline用の頂点変形、色、幅、カリング、アルファ処理
  • Shader-Coreフェーズとの統合
  • 公開プロパティ、シェーダー契約、テスト

設計事項

実装前に次を確定する。

  • アウトラインを独立Passとして実装する方法。
  • 頂点法線方向への押し出しを基本方式とするか。
  • 幅の単位と距離・投影による見え方をどこまで補正するか。
  • Outline Passで使用するShader-Coreフェーズと、モジュールから拡張可能にする範囲。
  • Opaque、Cutout、Transparentそれぞれでのアルファ処理。
  • Cutout時にベース描画と同じ _Cutoff を使用するか。
  • Transparent時のアウトラインのBlend、ZWrite、Render Queue、ソート規則。
  • Cull Frontを標準としつつ、既存の _Cull とは独立したアウトライン用Cull設定を持つか。
  • ShadowCasterおよびMetaへアウトライン形状を寄与させないことを契約として固定するか。
  • アウトラインを無効化したときに不要な描画Passコストを発生させない方法。

実装要件

  • 4つのベースシェーダーで同じアウトライン契約を使用する。
  • Pure Base本体には基本的な幅・色・有効無効など、ホストとして必要な最小限の設定だけを持たせる。
  • Rim、テクスチャ付きアウトライン、距離フェードなど任意の視覚機能は原則としてShader-Coreモジュール側へ委ねる。
  • ForwardBase / ForwardAddの既存ライティング所有権を壊さない。
  • Rendering Mode、Cull、Blend、ZWriteなど既存または後続の描画状態設定と明確に分離する。
  • オプションモジュールなしでも正常に描画できる。

完了条件

  • 4つのベースシェーダーでアウトラインを有効・無効にできる。
  • 基本的なアウトライン幅と色を設定できる。
  • Opaque、Cutout、Transparentで仕様どおり描画される。
  • Cutout境界で意図しない輪郭の張り出しや欠落がない。
  • Outline PassのCull、Depth、Blend、Queueの契約が文書化されている。
  • Shader-Coreモジュールからアウトライン処理を拡張できる境界が明確になっている。
  • ShadowCasterとMetaへ意図しないアウトライン寄与がない。
  • アウトライン無効時に既存描画結果を変更しない。
  • 公開プロパティABIとシェーダー契約を更新する。
  • 代表的な描画回帰テストと影響範囲のDaily検証が通る。

優先順位

  1. このIssue: Outline
  2. AlphaToMask
  3. ZWrite override
  4. Separate Blend + BlendOp
  5. ZTest
  6. Offset

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions