目的
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など既存または後続の描画状態設定と明確に分離する。
- オプションモジュールなしでも正常に描画できる。
完了条件
優先順位
- このIssue: Outline
- AlphaToMask
- ZWrite override
- Separate Blend + BlendOp
- ZTest
- Offset
目的
Pure Baseの全ベースシェーダーに、Shader-Coreホストとして利用できる最小限のアウトライン描画パスを追加する。
アウトライン自体へ多数の視覚機能を内蔵するのではなく、Pure Base単体でも基本的なアウトラインを描画でき、Shader-Coreモジュールから拡張できる基盤を提供する。
0.2.0後の描画機能拡張として最優先で扱う。
対象
PureBase/UnlitPureBase/ToonPureBase/PBRPureBase/Hybrid設計事項
実装前に次を確定する。
_Cutoffを使用するか。_Cullとは独立したアウトライン用Cull設定を持つか。実装要件
完了条件
優先順位