izhoudiniTweetどうも篠島です。ついて少し説明したいと思います。今回のサンプルファイルです。方向へレイを飛ばし、何かにヒットしたらそのオブジェクトのシェーダーを呼び出し、データを取得します。VOPを使った簡単なシェーダーとして下のようなネットワークを作りました。左下のビューポート上にあるグリッドにこのシェーダーを割り当ててレンダリングしたのが右下の写真です。複雑なことは全くしていないので完全に鏡の様に反射していますが、レイがオブジェクトに当たらないと、透明になっている部分がある事に注意してください。グリッドの法線は真っ直ぐなので、オブジェクトから真っ直ぐにレイを飛ばして色を取得しますが、この法線にノイズ等を加えて変化させると、面白い効果が得られます。ノイズのオフセットをアニメーションさせてレンダリングしたのが下のGIFになります。設定してレイを飛ばす方向をコントロールすることで非現実的なエフェクトも簡単に作れます。下図のシェーダーネットワークは、赤い矢印で描かれた画面左上に向かってレイを飛ばすように設定したシェーダーです。レイトレースによって得られる結果は下の様になり、これに壁用のジオメトリと一緒にレンダリングすると、まるで影のように反射の表現ができるのが分かるかと思います。パラメーターで指定した数だけレイを飛ばす事です。ループ出来るようになっており、各サンプル毎にループ処理されます。名前の通りファイナルギャザリングによって擬似的に間接光を表現するのにも使うことが出来ます。レイを複数飛ばして、各サンプルポイントの結果の平均を取ることで、先程の反射のエフェクトをぼかす事もできます。作っておき、各サンプルからの結果を変数に入れてループの外に渡します。いう項目を増やすことで、サンプルから得られるデータを変数に好きな数だけ入れられることです。取得するようになっていますが、透明度、レイの原点、レイの方向、ヒットしたオブジェクトまでの距離の5つの情報が得られます。あれば2つ目に繋がれた変数にサンプルのデータが格納されます。そのデータを元に、ループ内で処理を指定します。中に潜り、先程つないだ2つの変数を足し合わせて、出力します。データが加算されていきます。最終的なシェーダーネットワークは下の様になります。Gatherの出力をサンプル数で除算している所に注目してください。サンプルデータを足し続けたので、割らないと数値が大きくなりすぎてしまいます。詳しくはサンプルファイルを参照してください。