$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
レイトレ合宿6 xyz-renderer
Search
xyz600
September 04, 2018
Programming
1
1.3k
レイトレ合宿6 xyz-renderer
レイトレ合宿6 で発表した資料
xyz600
September 04, 2018
Tweet
Share
Other Decks in Programming
See All in Programming
認証・認可の基本を学ぼう後編
kouyuume
0
180
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
120
まだ間に合う!Claude Code元年をふりかえる
nogu66
2
190
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
380
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
360
MAP, Jigsaw, Code Golf 振り返り会 by 関東Kaggler会|Jigsaw 15th Solution
hasibirok0
0
230
dnx で実行できるコマンド、作ってみました
tomohisa
0
140
Building AI Agents with TypeScript #TSKaigiHokuriku
izumin5210
6
1.2k
dotfiles 式年遷宮 令和最新版
masawada
1
730
How Software Deployment tools have changed in the past 20 years
geshan
0
28k
AIエンジニアリングのご紹介 / Introduction to AI Engineering
rkaga
5
1.9k
Integrating WordPress and Symfony
alexandresalome
0
140
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Designing Experiences People Love
moore
143
24k
YesSQL, Process and Tooling at Scale
rocio
174
15k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Scaling GitHub
holman
464
140k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
4 Signs Your Business is Dying
shpigford
186
22k
BBQ
matthewcrist
89
9.9k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Building an army of robots
kneath
306
46k
How to train your dragon (web standard)
notwaldorf
97
6.4k
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
Transcript
レイトレ合宿6 xyz-renderer Yuichi Sayama @xyz600600
やりたかったこと • オブジェクトをたくさん配置したい ◦ なんかかっこいい • シーンを自分で考えてみたい ◦ なんか楽しそう •
みんながやらなさそうな工夫を入れてみたい ◦ 独自性的なあれ • 高速化したい ◦ ノイズが目立たなくなる程度には
最終的に出来た絵
None
思ったよりリアルにならない…?? • もうちょい工夫の余地はあったはずだが、時間が足りずに断念 ◦ テクスチャ を単色以外にする ◦ BRDF の変更 ◦
車の種類を増やす • リアルなシーンに重要なことを知りたい • 画像の詳細 ◦ 1920 x 1080 ◦ 本番環境で 約200spp
工夫したこと 1. オブジェクトのClone 2. 2段BVH 3. MIS 付きのNext Event Estimation
4. 並列化方法
オブジェクトのClone • 300K Polygon の車をランダムにずらしながら計80台並べた • 全てにPolygonを持たせるとしんどいので、Polygonは共有 • Material は外部ファイルを6種類用意して、ランダムにload
• 交差判定は元のオブジェクトの空間へ引き戻して行う original obj (Polygon含む) ① original obj で交差判定 cloned obj (AABBの外枠だけ) ② cloned obj の座標に戻す 交差判定!
2段BVH • Clone されるオブジェクトが増えてきたので、BVHを2種類作った ◦ Objectの外枠のAABB+Polygonでない物体用 ◦ Polygon専用 • 実装はほとんど流用できるようにした
◦ 方法は「Bounding Volume Hierarchy (BVH) の実装 - 構築編」と同じ
MIS 付きのNext Event Estimation • CEDEC 2015 のBDPT 基礎資料[1]を参考にした •
最初は意味わからなくて敬遠してたけど、唐突に理解出来たので使った • 双方向パストレ、MLT は実装つらそう ◦ 来年こそは…! [1] https://www.slideshare.net/takahiroharada/introduction-to-bidirectional-path-tracing-bdpt-implementation-using-opencl-cedec-2015
並列化方法 • 画像全体を 16x16 に区切って、並列化 ◦ ロードバランスの調整は、Rayon(Rustの並列化ライブラリ)にお任せ ◦ (本当はRay Packet
を送ろうと思ったけど、時間が足りず) ◦ ローカルの i7-6700K(4C/8T)@4GHz より8.3倍 速い ◦ user / real ≒ 72 を見ると癒やされる…
やり残したこと • SIMD化 ◦ パーツとしては実装したけど、きちんと組み込むための時間が足りず • 双方向パストレ、MLT等の強いアルゴリズム実装 • 被写界深度 ◦
実装したけど、シーンがイマイチだったので却下