Appearance
第12回 統合制作
前回: 第11回 品質とパフォーマンス
今回の授業内容
- 作品で必要なシェーダーの要件を定義する
- 最小実装、発展実装、品質設定を分ける
- 中間値の可視化と計測で問題を切り分ける
- ゲームまたはエフェクトのシーンへ組み込む
- 実装方法、比較結果、制約を発表する
制作テーマを選ぶ
次の3テーマから1つを選びます。過去回のコードを出発点にし、作品の目的に合わせて再設計します。
水面
- 波の方向とスケール
- 深度による色吸収
- 屈折とフレネル
- 岸やオブジェクトとの交差泡
- 作品の世界観に合う色と速度
雲または煙
- 大きな密度の形
- FBM とドメインワープ
- 光側と影側の色
- ステップ数と内部解像度
- シーン上のシルエットと移動
SDF オブジェクト
- 基本形状の集合演算
- Smooth Min とノイズによる有機的な形
- 法線、ライティング、ソフトシャドウ
- 時間による変形
- ステップ数と描画距離
要件を実装順序に変換する
最初に見た目の希望ではなく、確認可能な条件として書きます。
| 分類 | 記述例 |
|---|---|
| 用途 | ボスエリアの浅い水場に使う |
| 最低到達 | 水深で浅い色と深い色が切り替わる |
| 発展 | プレイヤー周辺に泡を追加する |
| 品質 | 60 fps を維持する中品質設定を用意する |
| 制約 | URP、指定シーン、フルHDで比較する |
必須要件を先に実装し、動作確認後に発展機能を追加します。
制作の進め方
- テーマ、使用シーン、必要な見た目を決める
- 使用する既習技術を3つ以上選ぶ
- 最小実装の完成条件を書く
- 中間値の可視化モードを用意する
- 最小実装を完成させ、スクリーンショットを残す
- 発展機能を1つずつ追加する
- 低、中、高品質を比較する
- ゲームまたはエフェクトのシーンへ組み込む
- 組み込み後に再計測する
レビューの観点
ペアまたは教員のレビューで、次の順に確認します。
- 要件と見た目が一致しているか
- 入力値と中間計算を可視化できるか
- HLSL 関数の役割が分かれているか
- ループに最大回数と早期終了があるか
- 品質設定による差が説明できるか
- 作品内で表現が役割を持っているか
成果発表
発表は次の順番で2から3分にまとめます。
- どのような作品に使うシェーダーか
- 使用した主要な計算は何か
- 最小実装から何を改善したか
- 低・中・高品質で何が変わるか
- 現在残っている制約は何か
実装の結果だけでなく、比較画像と計測値を示します。
完成条件
- 用途、最低到達、発展、品質、制約が記述されている
- 後期で学んだ技術を3つ以上統合している
- 中間値を可視化してデバッグできる
- 低、中、高品質のいずれかで作品に組み込まれている
- 比較画像、計測値、実装の制約を発表できる
後期のまとめ
後期は Shader Graph で見ていた計算を HLSL へ移し、ループ、ノイズ、視線レイ、SDF、レイマーチ、ボリューム、水面、レイトレースの原理へ発展しました。
シェーダーの完成は、画面に表示された瞬間ではありません。目的に応じて実装を分け、中間値を確認し、品質と負荷を計測し、作品の中で役割を持たせるところまでがシェーダー設計です。