Skip to content

全ベースシェーダーにDepth Offset設定を追加する #54

Description

@PenguinDOOM

目的

Pure Baseの全ベースシェーダーでShaderLabの Offset Factor, Units を設定可能にし、Z-fighting回避や意図的な深度バイアスが必要な描画に対応する。

通常のマテリアルではOffsetを無効相当の既定値とし、必要な場合だけ明示的に使用できる描画状態契約へ拡張する。

対象

  • PureBase/Unlit
  • PureBase/Toon
  • PureBase/PBR
  • PureBase/Hybrid
  • ForwardBaseのDepth Offset
  • ForwardAddのDepth Offset
  • 必要に応じてShadowCasterおよびOutline PassのDepth Offset
  • Material Inspector UI
  • 公開プロパティ、シェーダー契約、テスト

設計事項

実装前に次を確定する。

  • Offset FactorOffset Units の公開プロパティ名と型。
  • ForwardBaseとForwardAddで同じ値を共有するか、個別設定にするか。
  • 既定値を 0, 0 として現行描画を維持すること。
  • ShadowCasterへ同じOffsetを適用するか、独立設定または固定値とするか。
  • Outline Pass実装後、アウトライン用Offsetを独立設定にするか。
  • Rendering Mode切り替え時にOffsetを変更しない独立設定とするか。
  • 大きな正負値によるDepth precisionやクリッピング上の注意点をどこまでUIまたは文書で示すか。

実装要件

  • 4つのベースシェーダーで同じDepth Offset契約を使用する。
  • 既定値では現行描画結果を変更しない。
  • Rendering Mode normalizerがOffsetを不要に上書きしない。
  • 複数選択、Undo、保存、再読み込みで値を正しく維持する。
  • 不要なシェーダーバリアントを増やさない。

完了条件

  • ForwardBaseで Offset Factor, Units を設定できる。
  • ForwardAddでの適用仕様が決定され、必要な場合は設定できる。
  • 既定値は 0, 0 で、既存マテリアルの描画を変更しない。
  • ShadowCaster / Outlineへの適用範囲が明確になっている。
  • Rendering Mode切り替えおよびResyncでユーザー指定値が意図せず変更されない。
  • 公開プロパティABIとシェーダー契約を更新する。
  • Z-fightingを含む代表的なDepth Offset回帰確認と影響範囲のDaily検証が通る。

優先順位

ZTest (#53) の次に実装する。

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions