3D表面のプロパティを計算するアルゴリズム——色、反射、粗さ。ジオメトリと最終ピクセル間のレンダリングの中核。
シェーダー (Shader)
3Dレンダリングのセットアップ画面に向かい、ジオメトリを構築したとします。メッシュはきれいで、リギングも正しく、ライトも配置済み。しかし、シェーダーなしでは、平坦で色味のないポリゴンしか見えません。シェーダーとは、この表面が光にどう反応するか、素材の粗さはどの程度か、どれだけ反射し、どれだけ吸収するかをリアルタイム(またはオフラインレンダリング時)に決定するプログラムです。これはGPU上で、ピクセルごとに一行ずつ実行されます。
実際のVFXワークフローでは、シェーダーは物理的に妥当な、あるいは意図的に様式化された素材の説明を記述するためのツールです。MayaやHoudiniのようなエンジンソフトウェアでは、シェーダーネットワークを使用します。テクスチャマップ(アルベド、ノーマル、ラフネス、メタリック)を組み合わせ、それらを数学的な演算で接続し、Arnold、RenderMan、V-Rayなどのレンダリングバックエンドにフィードします。各接続はデータの流れであり、最終的なシェーダーは各表面要素のローカルな照明方程式を計算します。
多くの場合、PBRシェーダー(Physically-Based Rendering)を使用します。これは、さまざまな光の状況で一貫した素材の振る舞いを保証する標準です。粗い金属は、湿った木材や人間の皮膚とは異なるシェーダーパラメータを持ちます。値を無闇に調整するのではなく、物理的に整合性の取れた素材の特性を設定します。これが、推測とプロフェッショナルな見た目の違いです。最終的なカットで、光の屈折がおかしい、反射が強すぎる、といったことにすぐに気づき、シェーダーに戻って調整し、再レンダリングすることになります。
ゲームエンジン(Unreal、Unity)では、HLSLやGLSLでシェーダーを記述することが多く、またはビジュアルなノードベースのエディタを使用します。パフォーマンスは非常に重要です。複雑すぎるシェーダーはフレームレートを低下させます。映画VFXでは、より計算負荷の高い処理が可能であり、一晩でのレンダリングも許容されます。しかし、そこでも非効率なシェーダーはレンダーファームの時間と予算を浪費します。ここであなたの知識が、ショットが4時間でレンダリングされるか40時間でレンダリングされるかを決定します。
実践的なヒント:簡単なシェーダーを読み、デバッグする方法を学びましょう。ソフトウェアのビジュアライゼーションモードを活用し、ノーマルマップ、オクルージョンマップ、スペキュラーなしの生のディフューズなどを見てみましょう。何かが間違っているように見えたら、画像ではなくシェーダーネットワーク内のコンポーネントを特定します。これにより、何時間も節約できます。