Upgrade to Pro — share decks privately, control downloads, hide ads and more …

レイトレ合宿6 xyz-renderer

C7ce482792f627ceb00f4835c229c7f9?s=47 xyz600
September 04, 2018

レイトレ合宿6 xyz-renderer

レイトレ合宿6 で発表した資料

C7ce482792f627ceb00f4835c229c7f9?s=128

xyz600

September 04, 2018
Tweet

Transcript

  1. レイトレ合宿6 xyz-renderer Yuichi Sayama @xyz600600

  2. やりたかったこと • オブジェクトをたくさん配置したい ◦ なんかかっこいい • シーンを自分で考えてみたい ◦ なんか楽しそう •

    みんながやらなさそうな工夫を入れてみたい ◦ 独自性的なあれ • 高速化したい ◦ ノイズが目立たなくなる程度には
  3. 最終的に出来た絵

  4. None
  5. 思ったよりリアルにならない…?? • もうちょい工夫の余地はあったはずだが、時間が足りずに断念 ◦ テクスチャ を単色以外にする ◦ BRDF の変更 ◦

    車の種類を増やす • リアルなシーンに重要なことを知りたい • 画像の詳細 ◦ 1920 x 1080 ◦ 本番環境で 約200spp
  6. 工夫したこと 1. オブジェクトのClone 2. 2段BVH 3. MIS 付きのNext Event Estimation

    4. 並列化方法
  7. オブジェクトのClone • 300K Polygon の車をランダムにずらしながら計80台並べた • 全てにPolygonを持たせるとしんどいので、Polygonは共有 • Material は外部ファイルを6種類用意して、ランダムにload

    • 交差判定は元のオブジェクトの空間へ引き戻して行う original obj (Polygon含む) ① original obj で交差判定 cloned obj (AABBの外枠だけ) ② cloned obj の座標に戻す 交差判定!
  8. 2段BVH • Clone されるオブジェクトが増えてきたので、BVHを2種類作った ◦ Objectの外枠のAABB+Polygonでない物体用 ◦ Polygon専用 • 実装はほとんど流用できるようにした

    ◦ 方法は「Bounding Volume Hierarchy (BVH) の実装 - 構築編」と同じ
  9. 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
  10. 並列化方法 • 画像全体を 16x16 に区切って、並列化 ◦ ロードバランスの調整は、Rayon(Rustの並列化ライブラリ)にお任せ ◦ (本当はRay Packet

    を送ろうと思ったけど、時間が足りず) ◦ ローカルの i7-6700K(4C/8T)@4GHz より8.3倍 速い ◦ user / real ≒ 72 を見ると癒やされる…
  11. やり残したこと • SIMD化 ◦ パーツとしては実装したけど、きちんと組み込むための時間が足りず • 双方向パストレ、MLT等の強いアルゴリズム実装 • 被写界深度 ◦

    実装したけど、シーンがイマイチだったので却下