』は、もうご覧になりましたか?何百万人もの心を掴んだこの二つの短編映像作品ですが、多くの人が興味津々なのは、ニール・ブロムカンプ氏とそのチームが一体どのようにして、リアルタイムであの素晴らしいエフェクトを実現させたかということです。シェーダー、リアルタイムレンダリングなどに関する記事も公開していますので、是非併せてお読みください。チームのソフトウェアエンジニアです。グラフィックの統合などを担当しました。インターンのエンジニアとして働いていました。チームのテクニカル・アート・スーパーバイザーです。ルック・デベロップメントなどを手掛けてきました。よって統合されて生み出された数々のエフェクトが盛り込まれ、多くの注目を集めました。どのようにしてあの印象的なエフェクトを実現したかを、二つの重要な側面に的を絞って見ていきます。フレームに焦点を当てたリアルタイムレンダリングの分析に興味のある方は是非この先を読み進めてください。(フレーム分析とグラフィックのデバッグのための大変便利なツール)を使って分析していきます。実現した視覚表現を一歩踏み込んで理解することができるでしょう。次のステップとして便利に使用できます。併用についての詳細はこちらでお読みいただけます。遅延レンダリングパスでレンダーされています。バッファ(ジオメトリバッファ)として集合的に参照される一式のバッファ内にレンダーされているということです。バッファには、レンダーパイプラインで後々実行されるライティング計算に必要となるデータが、全て含まれています。つの構成要素すべてに、それぞれの不透明なオブジェクトに関する次のデータを書くことが可能になります。RGB/オクルージョン・アルファチャンネル(ARGB32)物体の「固有の色」および、ジオメトリのベイク済アンビエント・オクルージョンです。PBR(物理ベースレンダリング)ワークフローに対応しています。内部的にはどちらのワークフロー入力も、このバッファ内に書かれた同じ情報に落とし込まれます。入力を一元化するために行われます。ワールド法線のRGB/アルファチャンネル未使用(ARGB2101010)より精度の高いバッファは、ワールド空間法線や、面の向いている方向を各ピクセルで保存するために使用されます。この情報は、光源との関係に基づいて照度を計算する上で極めて重要です。バッファ内にレンダーされます。このバッファは、パイプラインの後段で反射の収集とライティングの集積にも使用されます。ライティングでレンダーされています。*透明および不透明なアイテムでカスタムのシェーディングモデルを持つものは、パイプラインの後段で異なる形で扱われます。バッファがレンダーされると、シーンの深度もそれ自体の特殊なバッファ内にレンダーされます。空間へのシーンの投影中・投影後の両方で、三次元の感覚を維持するために非常に重要です。これは、後々遅延シェーディングで必要になる、ピクセルのワールド位置を再構成する上においても不可欠です。リアルタイムでよく使われる高度な後処理エフェクトの根幹となるのは、このデプスバッファとステンシルバッファです。デプスバッファとステンシルバッファステンシルバッファ(右)はデプスバッファと同じリソースを使用しています。ステンシルバッファは、ピクセルをピクセル自身にレンダーされた要素に基づいて分類する際に特に役立ちます。後々この情報を利用してピクセルを識別し、各ピクセルに何の処理を施すか選択することができます。ステンシルバッファはライトカリングマスクに使用されています。サブサーフェス・スキャタリング(SSS)を起こすオブジェクトを判別するためにも使用されています。バッファの生成中に)追加のバッファ内にインデックスも書き込まれるようになりました。このバッファは後に、サブサーフェス・プロファイルから送られた重要なデータを含むバケット内の検索に使用されます。このバッファには、どの程度の散乱が起こるべきかを示すスカラーも保存されています。)散乱範囲(半径)上述の通り、重要なデータがサブサーフェス拡散プロファイルから取得されますが、このプロファイルはエディター側でユーザーが作成します。このユーザー定義のプロファイルによって、透明性の高い媒体中で拡散光がどのように散乱するかが設定されます。サブサーフェス・スキャタリング・プロファイル前方散乱や透過率もこれらのプロファイルによって制御可能です。この例は、肉の薄い耳や鼻孔を光が通過するショットなどで見ることができます。送られ、後で読み出されます。ジオメトリの複雑な要素がすべて効率的に、少数のバッファ上へと遅延されたことになります。これにより、後の処理にかかるほぼすべての計算コストが、ある程度一定した予測可能なものになります。これはなぜかと言うと、ライティングの計算が、シーンのジオメトリの複雑性に全く影響されなくなったからです。主要なライティングの前に、事前に必要な重要なパスがいくつか残っています。キューブマップに照らし合わせて計算が実行され、環境反射が求められます。ラフネス・法線・ビュー方向・反射色などの情報を踏まえて一連の方程式を解くことで、物理的に正しい環境からの反射が得られます。バッファに加算ブレンドされます。環境反射シャドウこれで、レンダラーが必要とする事前処理のほとんどが完了しました。ここでレンダラーは遅延ライティングの段階に入ります。これはシャドウから始まります。)という広く知られたテクニックを使用しています。このコンセプトは単純です。我々の眼は遠くを見れば見るほどディテールが見えなくなる。すればコンピューターグラフィックでも、遠方の物のディテールの計算に多くの資源を費やす必要はないだろう、という考え方です。このコンセプトに基づいてカメラからの距離に応じてシャドウマップの解像度を変化させる技術です。人のキャラクターに関しては一式のスポットライトが使われています。同じことが、これ以外のいくつかのショットでも行われています。ライティングアーティストが何故このようなやり方を選んだかと言うと、ショット内の重要なビジュアル要素を強調する上で、より自由度の高い方法だったからです。「コンタクトシャドウ」と呼ばれる技術も導入されています。これはデプスバッファをレイマーチングすることで精度の高いシャドウを実現するものです。写真測量環境における粒度の細かいシャドウのディテールを表現可能にした、とりわけ重要な技術です。シャドウマッピングのテクニックと併用できます。遅延シェーディングこれですべてのピースが揃い、各ピクセルのライティング状況を完全に再現するのに十分な情報が整いました。バッファにライトを集積します。バッファの内容は、シャドウマップを含む現在のライトの情報を使用して計算されます。最初のステップとして、ピクセルのワールド空間ポジションがデプスバッファから再構成されます。ピクセルのワールド空間ポジションは後に、面上の地点の、眼に対する方向を計算するのに使用されます。これは後々、視点に基づくスペキュラー反射を決定する上で非常に重要です。シャドウその他のライトの情報(クッキーなど)も、最終結果の減衰のために単一のスカラー項に集められます。バッファからすべての面データが取得されます。(BRDF)にサブミットされ、最終的なシェーディングが行われます。サブサーフェスオブジェクト以外の不透明なオブジェクトの最終的なライティングをすべて集積ここまでの時点でシーンのシェーディングはほぼ完全に施されましたが、白いアウトラインは一体何でしょう?これは上記で触れた、ステンシルバッファ内でサブサーフェス・スキャタリング用に印を付けたピクセルで、これらのピクセルのシェーディングはまだ行われていない状態なのです。サブサーフェス・スキャタリング(表面下散乱)上記で少し触れましたが、サブサーフェス・スキャタリングとは拡散光の散乱および再出現であり、これは光を通す媒体中において最もよく見ることができます(実はサブサーフェス・スキャタリングは金属以外のすべての物体中においてある程度は起こるものなのですが、大抵の場合はこれに気付かないのです)。皮膚などはこの最も典型的な例です。シェーディングの計算に関する詳細をお読みいただけます)この問いに対する答えは単純ではありません。つの図にある緑色の円はひとつのピクセルを表しており、その中央に入射光が入って来ています。青い矢印は拡散光、オレンジ色の矢印は反射光を表します。左の図では、全ての拡散光がマテリアルの中で散乱した後、同ピクセルの境界内で再出現しています。通常レンダリングを行うマテリアルのほとんどは、この状態になります。この場合は、拡散光はその入って来た地点から出ていくという想定が確実に成立します。問題は、右の図のように、拡散光が非常に大きく散乱するためにピクセルの範囲外から再出現してしまうようなマテリアルをレンダーする場合です。このような場合には上述の想定が成り立たず、これを解決するためには高度なテクニックが必要になります。最新鋭のリアルタイムサブサーフェス・スキャタリング技術によって、ライティングに特殊なスクリーンスペースブラーが施されています。これを行うには、拡散ライティング(拡散光)とスペキュラーライティング(反射光)をそれぞれのバッファ内に確実に分別する必要があります。これは何故でしょうか?上の図をもう一度ご覧ください。反射光は、表面下の現象に全く関係なく、表面でそのまま反射しているのが分かります。このことから、少なくとも表面下の近似値の計算が完了するまでは、スペキュラーライティング(反射光)は拡散ライティング(拡散光)と分けておく必要があるのです。下のクローズアップしたキャプチャ画像で、分別されたライティングを分かりやすく確認できます。全ての反射光は完全に拡散光とは分けられているため、左側の放射照度/散乱バッファに必要な処理を、反射光の高周波ディテールを損なうリスクが全くない状態で行うことができます。スペキュラーバッファユーザーが作成したサブサーフェス・プロファイルで作成・送信された拡散カーネルを使用して、スクリーンスペースブラーが、このサブサーフェス・スキャタリング現象を近似します。計算の最後に反射光と組み合わせることで、当初の問題は無事解決できました。このようなテクニックは、ピクセル外で起こる散乱を近似する上で極めて効果的です。これで、シーン内のすべての不透明なオブジェクトにシェーディングが施されました。次のステップは、スクリーンスペースリフレクション(SSR)、スカイボックス、スクリーンスペースアンビエントオクルージョン(SSAO)、そして透明オブジェクトのレンダリングです。以下でこれらのパスを順番に確認することができます。制作で非常に重要な役割を果たしました。繊細でシネマティックな表現のもうひとつの軸として、いくつものショットの鍵となった要素です。当然の事ながら、モーションブラーのレンダリングを行うためには、レンダラーがモーション自体の情報を把握している必要があります。この情報は、先に仮のモーションベクターテクスチャー(左)をレンダーすることで取得されます。このバッファは、スクリーン空間内の現在の頂点位置と以前の頂点位置の差分を計算することによって構築され、バッファからモーションブラーの計算で使用する速度を取り出すことができます。ストリームから取得するために、一部特別な作業も行われました。関連事項の詳細をお読みいただけます。Post-FX最終的なポストプロセスの適用前と適用後ついに、たっぷりシェーディングの施されたポストプロセッシングパスの段階です。トーンマッピング、ビネット、ブルーム、被写界深度が合成され、完成版に近い画が出来上がっています。ひとつ欠けているものがあります。マリアンのヘルメットのシールドはどこへ行ったのでしょう?マリアンのヘルメットのシールドリアルタイムグラフィックスで透過性を扱うことのある業界なら、その難しさは周知の事実でしょう。被写界深度、スクリーンスペースリフレクション、モーションブラー、アンビエントオクルージョンなど、エフェクトのバックボーンすべてについて、シーン深度からの空間認識および空間の再構成が必要となります。以上必要になってしまうはずです。これに対応する方法として採用されたのは、最初にすべての不透明なオブジェクトをシーンにレンダーし、次に透明なオブジェクトのリストの、空間の逆順フォワードパスをレンダーし、深度を書かずに各パスをフレームにブレンドするというものです。この方法なら、当の問題を効率的に無視して、キャラクターの眉や香煙など、ほとんどの要素を問題なく作り出すことが可能なのです。マリアンのヘルメットのシールド。不正確、アンビエントオクルージョンもモーションブラーもなししかし、上の画像からお分かりの通り、問題を無視することではマリアンの透明シールドの問題は解決しません。このままでは、シネマティックな短編映像たるべき作品にも関わらず、作品の尺の半分近くがこのような状態を呈してしまいます。この例外的で厄介なケースに対応し得る何らかの代替策が緊急に求められる状況です。つのフレーム間のコンポジットパスへ透明度の計算を遅延させることでした。番目のフレームにはマリアンのシールド以外の全てが含まれています。番目のフレーム内でシールドが不透明なオブジェクトとしてレンダーされます。SSAO、モーションブラー、被写界深度を求めることができます。元のフレームにマスクを戻すために必要なのは、シールドのアルファによって合成を行うことだけです。これはモーションブラーまたは被写界深度によってぼかされます。このテクニックを適用した場合としていない場合の比較。右側にはオクルージョンが確認できます。上記の手順により、上の比較画像で分かる通り、マリアンのシールドを綺麗に統合し戻すことができました。アンビエントオクルージョンの効果が確認できます。これで透過性の問題の全てが解決された訳では決してありませんが、上記のテクニックにより当初の厄介な問題は解決され、該当の透明オブジェクトにうまく適合したポストプロセッシングが実現されました。自社のフレア・システムを効果的に使用して作品に素晴らしい仕上げを施し、映像のシネマティック品質を飛躍的に向上させました。このレンズフレアはタイムラインでアニメーション化およびシーケンス化され、これがフレームに付加的にブレンドされることで、映像の最終形が完成しました。シェーディングが完了したフレームと、そこに追加されるレンズフレア完成形ここでは、本記事内で上述したすべての要素がランタイムでレンダーされています。人質に取られた兄弟に石を持って近付くマリアン以上、本記事ではフレーム分析についてお話させていただきました。フレーム分析を行うことで、特定のグラフィックチームが制作のニーズに応じてどんな方法を採用しているか把握でき、自分のプロジェクトに活かせる有益な情報を豊富に得ることができます。シリーズをご覧になることをお勧めします。作品のフレーム分析が行われています。使用されたサブサーフェス・スキャタリングなどの)より強化されたグラフィック機能を全てのユーザーの皆様にお届けする計画です。年ベータ版で入手可能となっており、ユーザーの皆様ご自身でレンダラーの定義を行うことができます。テンプレート実装もリリース予定です。これはサブサーフェス・スキャタリングなどの素晴らしい新機能を含む最新のレンダラーです。直接ポーティングされたものです。