Houdini で、VEX お勉強のお題として、Simple Ray Tracer を作ってみました。
機械学習の応用やプロシージャル技術の実験環境として、Houdini は視覚的に検証ができるので、VEX のお勉強を開始しました。
Grid を64 x 64 で primitive に分割して、それぞれの primitive をtexel とみなします。
2.Ray Tracing 処理
Wrangle Operator に、VEX コードを書きます。
3.VEX コード(後日、公開します。)
texel から、primary ray を飛ばして、シーン内の geometry と交差判定して、texel あたりの平均輝度 (radiance)を計算しています。
SIMD ですから、texel は並列に計算されているはずです。
いわゆる、CPU シェーダです。
Lambert BRDF, Sun Light (Directional Light) のみです。
とはいえ、アイデアをカタチにして、すぐに結果が見えるのは良いと思いました。
現状は、64 x 64 texels の解像度なので、ファミコンみたいですが、
少しずつ、Ray Tracer として仕立てていこうと思います。
Ray Tracing -> Path Tracing -> Photon Mapping
はじめに
VEX とは、SIMD 型のスクリプト言語です。Houdini 専用です。機械学習の応用やプロシージャル技術の実験環境として、Houdini は視覚的に検証ができるので、VEX のお勉強を開始しました。
実装方法
1.出力先のスクリーンGrid を64 x 64 で primitive に分割して、それぞれの primitive をtexel とみなします。
2.Ray Tracing 処理
Wrangle Operator に、VEX コードを書きます。
Attribute Wrangle か、Primitive Wrangle で良いです。
入力は、Grid と Scene Geometry を Wrangle に接続します。
3.VEX コード(後日、公開します。)
texel から、primary ray を飛ばして、シーン内の geometry と交差判定して、texel あたりの平均輝度 (radiance)を計算しています。
SIMD ですから、texel は並列に計算されているはずです。
いわゆる、CPU シェーダです。
解像度 比較
64 x 64 texels と 512 x 512 texels の比較です。Lambert BRDF, Sun Light (Directional Light) のみです。
図 解像度64 texels と 512 texels の比較
おわりに 今後
週末、Star Wars 最後のジェダイを観る前、Houdini の資料を読みながら、2時間ぐらいで、Surface で作成したものです。とはいえ、アイデアをカタチにして、すぐに結果が見えるのは良いと思いました。
現状は、64 x 64 texels の解像度なので、ファミコンみたいですが、
少しずつ、Ray Tracer として仕立てていこうと思います。
Ray Tracing -> Path Tracing -> Photon Mapping
コメント
コメントを投稿