4次元空間上で回転してから、それを3次元に投影することで、内外が入れ替わるような不思議なループアニメーションをテーマにしました。
自作のレンダラーで 5分の制限時間 でレンダリングして4位をいただきました!次の動画は合宿運営側で制限時間内にレンダリングしたものです。
normalize.fmの第032回にゲスト出演させていただきました。
#normalizeFM の新エピソード公開しました。
— h_doxas (@h_doxas) October 18, 2022
今回は @gam0022 さんをゲストに、普段の収録と比較するとかなりテックな話題に寄った感じで、深い技術の話をいろいろうかがいました。
032. たゆまぬ努力とキャッチアップhttps://t.co/acML0WOwYQ
自作のレンダラーでこんな動画を 10分の制限時間 でレンダリングして5位をいただきました!
レイマーチングとポリゴンをハイブリッドに描画できる単方向パストレーシングのレンダラーをOptiXで開発して16人中7位でした。
— がむ (@gam0022) September 4, 2022
レンダリング時間は10分(1フレーム2秒)だったので、
NEEやMISなどサンプリングの高速化も行いました。
動画は本戦で実際に出力されたファイルです。#レイトレ合宿 pic.twitter.com/LDgKL7gLsY
レイマーチングはレイキャスティングと比べて遅いと感じていましたが、なるべく同じ条件で計測した場合に実際どのくらい差があるのか比較してみました。
メンガーのスポンジをレイマーチングとレイキャスティングでそれぞれ交差判定を実装し、フラクタルの深度を1~4に変化しながら計測しました。
次の画像はレイマーチングによる深度4のメンガーのスポンジです。
先に結果から発表すると、なんとレイマーチングはレイキャスティングの15~20倍くらい遅いようでした。
ここまで遅いなんてショック😨…
256サンプリング時のレンダリング時間(秒)
フラクタルの深度 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
レイマーチング | 8.85388秒 ![]() |
9.00077秒 ![]() |
9.14309秒 ![]() |
9.29724秒 ![]() |
レイキャスティング | 0.445493秒 ![]() |
0.466056秒 ![]() |
0.50258秒 ![]() |
0.602458秒 ![]() |
自作のレンダラーでこんな画像を 60秒の制限時間 でレンダリングして4位をいただきました!
ちなみに4K解像度(3840x2160)です!
事前に本番環境で動作確認できなかったこともあり、よく見ると意図しないアーティファクトが発生しているのですが、許容レベルに収まったのはラッキーでした。
NVIDIA® OptiX上で『レイマーチング×パストレーシング』による物理ベースレンダラーを開発しました。
レイとオブジェクトの交差判定をレイマーチングで行い、ライティングをパストレーシングをするという、レイマーチングとパストレーシングのハイブリッドなレンダリングを実現しました。
NVIDIA® OptiX上で
— がむ (@gam0022) July 28, 2019
『レイマーチング×パストレーシング』
を実装できた😉 #レイトレ合宿 pic.twitter.com/FKbuHiXqmP
レイトレ合宿6の概要や自作レンダラーの紹介や取り組んだことについては前編に詳しく紹介させていただきました。
この記事では後編(当日編)として合宿当日の様子について振り返ります。 主に参加者との交流や神津島観光やレクリエーションの様子について書いていきます。 現地の雰囲気が少しでも伝われば幸いです。
また、他の参加者のレポートも合わせてお読みいただくと、内容を補完できると思います。
この記事では前編(準備編)ということで、自作レンダラーに実装した機能や手法の紹介を行います。
後編(当日編)はこちらです。
9月1日(土)~9月2日(日)に神津島で開催されたレイトレ合宿6に参加しました。
レイトレ合宿は完全自作のレイトレーサーを走らせて画像の美しさを競うイベントです。
参加者の中には、Arnold RendererやRadeon ProRenderといった商用のレンダラーの開発者、 SIGGRAPH 2017で発表された研究者など、グラフィック分野の最先端で活躍されている方々もいらっしゃり、大変刺激を受けました。
私は今年で3回目の参加になります。過去の参加報告はこちらです。
Rustで開発したパストレーシングによる自作の物理ベースレンダラー(Hanamaru Renderer)をバージョンアップして、 こんな感じの画像を123秒でレンダリングしました。
今回は19人中10位だったので、ギリギリ入賞圏内に潜り込めました!
↑リンクをクリックするとオリジナルの可逆圧縮の画像になります。
ソースコードはGitHubに公開しています(スターください)。
去年に引き続き、技術サークルTechBoosterのWeb本の著者のひとりとして参加します。
今回は『Think Web』の『第6章 まるで実写!?GPUパストレーシングのWebGL実装』を担当しました。
パストレーシングは3Dの描画手法のひとつで、現実世界に近い光の振る舞いをシミュレートすることで、大域照明を考慮した写実的なレンダリングを可能にします。 実際にハリウッド映画などの写実的なCGの多くには、パストレーシングやパストレーシングを発展した手法が採用されています。 写実的なレンダリングができる反面、処理時間が膨大にかかるという弱点があります。
私の章ではパストレーシングのGPU実装による高速化について紹介します。 しかも単純な高速化ではなく、ブラウザ上で3DCGを扱うWebAPIであるWebGLによりGPU実装することで、 ブラウザ上で動作するインタラクティブなパストレーシングを実現します。
去年12月のWebGLのアドベントカレンダーのQiita記事と同じテーマですが、内容を大幅に加筆・変更しています。 Qiitaには書ききれなかったパストレーシングの基礎や原理の部分から説明し、実際のコードを踏まえながら実装についても丁寧に解説しました。
なるべく敷居を下げるために専門用語を解説しつつ、説明が長く過ぎず短すぎず丁度いい分量になるように意識して執筆しました。 読者ターゲットは、単純なレイトレーシングは分かっているけれども、パストレーシングは難しい…という人を想定しています。