Skip to content

全ベースシェーダーにステンシル操作を追加する #3

Description

@PenguinDOOM

目的

0.2.0で、Pure Baseの全ベースシェーダーからUnity Built-in Render Pipelineのステンシル操作を設定できるようにする。

既定値では現在の描画結果を変えず、必要なマテリアルだけがステンシルを利用できる設計にする。

対象

  • PureBase/Unlit
  • PureBase/Toon
  • PureBase/PBR
  • PureBase/Hybrid
  • 関連する公開プロパティ、ShaderLab Pass、シェーダー契約、テスト

設計事項

実装前に次を確定する。

  • 公開するステンシル設定
    • Reference
    • Read Mask
    • Write Mask
    • Compare Function
    • Pass Operation
    • Fail Operation
    • ZFail Operation
  • ステンシルを適用するPass
    • ForwardBase
    • ForwardAdd
    • ShadowCaster
    • Meta
  • 全シェーダーで同じプロパティ名と既定値を使用するか
  • 既定値で実質的にステンシル無効となり、既存マテリアルの描画を維持できるか

実装要件

  • 4つのベースシェーダーで一貫した公開プロパティを使用する。
  • Passごとの差異が必要な場合は、その理由を契約文書へ記載する。
  • ステンシル設定以外のブレンド、深度、カリング、Cutout契約を変更しない。
  • 不要なシェーダーバリアントを増やさない。
  • オプションモジュールなしでも各シェーダーが正しく動作する。

完了条件

  • 公開する設定項目と適用Passが決定されている。
  • 4つのベースシェーダーでステンシルを設定できる。
  • 既定値で0.1.x相当の描画結果を維持する。
  • ForwardBaseとForwardAddを含む対象Passで設定が意図どおり反映される。
  • 公開プロパティABIとシェーダー契約を更新する。
  • ステンシル無効・書き込み・比較・マスクの代表ケースを検証する。
  • 影響範囲のDaily検証が通る。
  • 0.2.0-beta.1のRelease validationが通る。

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions