Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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.2k
レイトレ合宿6 xyz-renderer
レイトレ合宿6 で発表した資料
xyz600
September 04, 2018
Tweet
Share
Other Decks in Programming
See All in Programming
全部見せます! クラシルリワードのSwiftTesting移行プロジェクト
uetyo
0
210
Perl 5 OOP機構30年史 - Perl 5's OOP Mechanism over the past 30 years
moznion
0
370
エラーレスポンス設計から考える、0→1開発におけるGraphQLへの向き合い方
bicstone
5
1.5k
watsonx.ai Dojo #2 生成AIを使ったアプリ開発入門編
oniak3ibm
PRO
0
230
Using Livebook to build and deploy internal tools @ ElixirConf 2024
hugobarauna
0
250
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
0
120
The Sequel to a Dream of Ruby Parser's Grammar
ydah
1
220
Ruby Parser progress report 2024
yui_knk
2
230
Architecture Decision Record (ADR)
nearme_tech
PRO
1
690
Our Websites Need a Lifestyle Change, Not a Diet
ryantownsend
0
150
GraphQLの魅力を引き出すAndroidクライアント実装
morux2
3
770
Modern Angular with the NGRX Signal Store New Rules for Your Architecture @BASTA! 2024 in Mainz
manfredsteyer
PRO
0
160
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
786
250k
Into the Great Unknown - MozCon
thekraken
29
1.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Six Lessons from altMBA
skipperchong
26
3.4k
Principles of Awesome APIs and How to Build Them.
keavy
125
16k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
502
140k
The Pragmatic Product Professional
lauravandoore
31
6.2k
Adopting Sorbet at Scale
ufuk
73
8.9k
Making Projects Easy
brettharned
113
5.8k
What's in a price? How to price your products and services
michaelherold
242
11k
Statistics for Hackers
jakevdp
794
220k
Writing Fast Ruby
sferik
623
60k
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等の強いアルゴリズム実装 • 被写界深度 ◦
実装したけど、シーンがイマイチだったので却下