4 / 4 表示の問題と描画工程の対応
正常な表示と問題のある表示を比較し、最初に結果が変わる描画工程から原因候補を絞り込みます。
デバッグは最初の違いを探す作業
完成画面だけを見ると、原因になりそうな場所が多すぎます。正常な条件と問題のある条件を一つずつ比較し、最初に結果が変わる段階を探すと、調査範囲を狭められます。
一度に一つだけ条件を変える
Material、Camera、Depth、描画順を同時に変えると、どの変更が結果へ影響したか分かりません。比較するときは一つの条件だけを切り替え、他の条件を固定します。
中間結果を確認する
Vertex Position、Normal、UV、Depth、Maskなどを色として表示すると、完成色になる前の値を確認できます。画面が黒い場合も、入力が届いていないのか、計算途中で0になったのか、出力先が違うのかを分けられます。
問題を五つの領域へ分ける
表示問題を、形状、表面、深度、描画順、画面効果へ分類します。この分類は正解を即座に決めるものではなく、最初に開く道具や確認する値を選ぶための入口です。
形状と表面
輪郭や位置が違う場合は、Mesh、Transform、Vertex Stageを先に確認します。形は正しいが色や模様だけが違う場合は、Material、Texture、Fragment Stageを確認します。
深度と描画順
手前の物体が消える、奥の物体が上に見える場合はDepth TestやDepth Writeを確認します。半透明同士の重なりだけが不自然な場合は、Render Queueや描画順を疑います。Render Queueは、Materialをどの描画グループと順序で処理するかを示す値です。
画面効果
Scene内の個別Materialは正しく、画面全体だけが変化する場合はPost ProcessやFull Screen Effectを確認します。Frame Debuggerで、どのイベント以降に問題が現れるかを探します。
実習:切り替え前後で最初の違いを探す
- 正常設定の画面とFrame Debuggerのイベント順を記録します。
- Frame Debuggerを
Disableにし、下の表から設定を一つ選んでInspectorで変更します。変更前の値を控えてください。 - 再度
Enableにし、正常時と変更後で、最初に結果が変わるイベントを探します。 - 問題を五つの領域のいずれかへ分類します。
- 入力、中間値、出力のうち、次に確認する値を決めます。
- Frame Debuggerを
DisableにしてUndoで設定を戻し、Gameビューが最初の表示へ戻ったことを確認します。
| 切り替え | 変化の手掛かり | 次に確認する対象 |
|---|---|---|
Directional LightのShadows > Shadow TypeをSoft ShadowsからNo Shadowsへ | Capsuleなどが床に落とす影が消える | Lightの影設定、Shadow Map、影用Pass |
Stanford BunnyのMesh Rendererのチェックを外す | ウサギが消え、Cube・Sphere・床が直接見える | Rendererの有効状態、Transparentの描画 |
Main CameraのRendering > Post Processingのチェックを外す | 輪郭の色ずれやにじみ、画面全体の色が変わる | CameraのPost Processing、Volume Profile、最終合成 |
Lightの影を無効にしても、表面の陰影やSSAOによる暗さは残る場合があります。Post Processingを無効にしても、Materialの色や照明による明るさは残ります。「暗い部分が残る」「まだ明るい」だけで操作の失敗と判断せず、別の工程による変化も区別してください。
Post Processingを無効にした画面でも、ウサギ越しの床の模様は曲がって見えます。この屈折はウサギのShaderで計算しているため、画面全体に適用する色収差やBloomとは別の処理です。
操作できないとき
Inspectorの変更が画面に反映されない場合は、Frame DebuggerをDisableにしたか、対象のGameObjectを選んでいるか、Gameビューを見ているかの順に確認します。イベントの表示名が本文と違う場合は、対象のMaterial、Pass、Render Targetから役割を追ってください。
編集モードで変えたSceneの設定やMaterial Assetの値は、そのまま残ります。Play中でもMaterial Assetの変更は残ることがあるため、各比較の直後にUndoで戻してください。Field PrefabやVolume Profileへ実験の変更を保存しないようにします。
観察記録を知識へ変える
記録には、操作だけでなく判断理由を書きます。「Depth設定を変更した」ではなく、「手前と奥の比較が崩れたためDepth Testを確認した」のように、見えた現象と確認箇所を結びます。
次回以降も、表示がおかしいときは完成Shaderを最初から書き直さず、問題が現れる最初の段階を探します。
- 正常条件と問題条件の違いを一つに絞った
- 最初に結果が変わるDraw Eventを探した
- 問題を五つの領域のいずれかへ分類した
- 次に確認する中間値と理由を説明できる
- 設定を戻して再確認した