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
Ruby GitHub Packages
bkuhlmann
0
630
Snowflakeで眠ったデータを起こそう!
estie
0
110
Git Lint
bkuhlmann
4
750
PHPはいつから死んでいるかの調査
chiroruxx
1
380
Hanami and htmx
bkuhlmann
0
200
CQRS/ES avec Symfony, c’est (trop) bien !
jeremyfreeagent
1
640
入門 AWS Amplify Gen2 / Introduction to AWS Amplify Gen2
genkiogasawara
1
320
R言語の環境構築と基礎 Tokyo.R 112
bob3bob3
0
260
GraphQLサーバの構成要素を整理する #ハッカー鮨 #tsukijigraphql / graphql server technology selection
izumin5210
4
820
Compose-View Interop in Practice (mDevCamp 2024)
stewemetal
0
110
Rails と人魚の話/rails-and-mermaid
sanfrecce_osaka
0
100
"config" ってなんだ? / What is "config"?
okashoi
0
240
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
422
63k
Automating Front-end Workflow
addyosmani
1356
200k
Building Effective Engineering Teams - LeadDev
addyosmani
28
1.8k
Designing on Purpose - Digital PM Summit 2013
jponch
110
6.5k
BBQ
matthewcrist
80
8.8k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
The Power of CSS Pseudo Elements
geoffreycrofte
60
5k
Optimizing for Happiness
mojombo
370
69k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Happy Clients
brianwarren
92
6.4k
Designing for Performance
lara
601
67k
Navigating Team Friction
lara
178
13k
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等の強いアルゴリズム実装 • 被写界深度 ◦
実装したけど、シーンがイマイチだったので却下