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
【レイトレ合宿11】kagayaki_v4
Search
Yoshi's Dream
November 16, 2025
Programming
550
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
【レイトレ合宿11】kagayaki_v4
レイトレ合宿11にて提出したレンダラ kagayaki_v4のプレゼンスライドです.
Yoshi's Dream
November 16, 2025
More Decks by Yoshi's Dream
See All by Yoshi's Dream
【レイトレ合宿10】kagayaki_v3
runningoutrate
0
1k
【KMC春合宿2024】実装視点で見るNeural Radiance Fields
runningoutrate
0
440
レイトレ合宿9セミナー資料 SVGFについて
runningoutrate
0
1.3k
Other Decks in Programming
See All in Programming
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
1k
プロポーザルを書いてもらう
pvcresin
0
550
AIを紡ぐPMのお話
swdtkuy
0
110
FDEが実現するAI駆動経営の現在地
gonta
2
280
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
520
源内ハンズオン概要編
hideg
0
190
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
230
Cloudflare is Agents
chimame
0
170
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
700
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
200
メールのエイリアス機能を履き違えない
isshinfunada
0
240
Flow は今どうなっているか
mizdra
PRO
0
590
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
610
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
Code Reviewing Like a Champion
maltzj
528
40k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Deep Space Network (abreviated)
tonyrice
0
260
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
470
Are puppies a ranking factor?
jonoalderson
1
3.8k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Transcript
RTCamp11 Renderer Name: kagayaki_v4 Yoshi’s Dream (Twitter: @TTRS_Yoshi_CG) Resolution: 1024x1024
102 images in 178s 1
kagayaki kagayaki(輝き) CUDA C++で記述.基本フルスクラッチ, RTコア不使用 kagayaki_v0(cudamypt) 2年前の提出物.バグの巣窟 kayagaki_v1 RGB /
Spectral Path Tracer / NeRF train and renderer kagayaki_v2は空き番地 kagayaki_v3 昨年の提出物 RGB Ray Tracer / 3D空間音響シミュレーター(低周波領域) 2
kagayaki_v4 RGB Ray Tracer シーン表現 Scene -> Shape -> Primitive
の2-Level階層構造 行列変換により座標系を変換できるようになった(kagayaki_v3では並進のみ) BLAS, TLAS共にH-PLOCのBVH2を実装 実装を工夫してTLAS, BLASの構築をkagayaki_v3より数十倍高速化 kagayaki_v3ではBLAS構築ごとにメモリを確保していたがそれを一回にまとめた MortonCodeの上位32bitにShapeIDを入れてソートすると,ソート後にはMortonCode配列において Shapeに含まれるプリミティブが区間になる(32bitは勿体ない気もする) H-PLOCのBLAS構築はまだ並列化できていない(stream分割で高速化)(LBVHなら簡単?(未検証)) TLASはアニメーション毎フレーム再構築 Scene … Shape Shape Shape …….. … 3
kagayaki_v4 レイトレ処理 1次レイを飛ばしてGbufferを計算 可視点からWavefront Path Tracing レイをキューで管理 キューの占有率をもとに貪欲法で次のカーネルを動的選択 SamplePixel AccumSurface
RussianRoulette AccumEnv Store to image NEE SampleNextRay ClosestHit hit miss hit miss RR fail RR pass : カーネル単位 4
kagayaki_v4 SamplePixel 次に処理するピクセルを決定する Gbufferを用いてPathをActivateする StaticSampler pixelID = atomicAdd(&cnt, 1u) %
nPixels ある程度サンプルが貯まるまで用いられる AdaptiveSampler(今回不使用) Bufferの統計量をもとに処理するピクセルを動的選択 abs((すべてのサンプルの推定量) – (半分のサンプルの推定量))に比例して選択 サンプル点数がある程度増えないと逆効果 選択方法は要改善(暗い所の分散を過小評価する) 出力画像 サンプル数分布(白: 多い) 5
kagayaki_v4 マテリアル表現 Lambert Diffuse 完全鏡面 Disney BRDF 昨年(kagayaki_v3)は交差判定に拘るあまり表現力を失っていた 複雑なマテリアルの評価処理は想像より重い ラフネスのグラデーション好き
比較的軽量なシーン 6
kagayaki_v4 サンプリング処理 各交差点でのNEE 面光源 + BSDFサンプリングのMIS ReSTIR DI (今回不使用) 面光源サンプリングによる初期サンプル生成
Spatial Reuseはunbiased Temporal Reuseはbiased (アニメーション時) ReSTIR GI (今回不使用) プライマリヒットからいつも通りレイトレをする Spatial Reuseのバイアスが取れない…… Unbiasedness >>>>> 速度 通常 1spp ReSTIR DI 1spp (M=32, Knb = 5) リファレンス リファレンス ReSTIR GI…? 7
kagayaki_v4 ReSTIR DI 実装構造 ReadGBuffer Sample M Initial Candidates Temporal
Reuse Spatial Reuse Shade : カーネル単位 8
kagayaki_v4 ReSTIR GI 実装構造 ReadGBuffer Sample 1 initial candidate ClosestHit
SampleNextRay LightSample UpdateReservoir ClosestHit AccumSurface RussianRoulette AccumEnv NEE SampleNextRay Temporal Reuse Spatial Reuse Shade hit miss hit miss RR Pass RR Fail no primary hit hit/miss cnt < Threshold cnt ≥ Threshold cnt += queueSize cnt = 0 : カーネル単位 : 直列実行単位 9
kagayaki_v4 その他 ファイル入出力: glTF デノイザー: なし 使用ライブラリ (これ以外はフルスクラッチ実装) Dear ImGUI:
GUI処理 tinyglTF: glTFロード stb_image: 画像IO C++ / CUDA標準ライブラリ(cub, thrust, curand) 10
シーン, アニメーション 締切3時間前から作成開始 ReSTIR GIのバイアスを解消しようと奮闘していましたがここで諦め…… 元々作りたかったアニメーションを作る時間はないのでアイデアを一部取り入れてBlenderで作成 動きを感じられるアニメーションを作りたいという気持ち → サンプル数減らしてでも長めのアニメーションを 2,
3個目のオブジェクトはレイトレ合宿9,10でレンダリングしたシーンがベースです(temporal reuse) 三角面: 87240枚 Blenderでの表示 11
シーン, アニメーション 使用アセット(これ以外はすべて自作です) Cornell Box: McGuire Computer Graphics Archiveより 石や岩や木などのテクスチャ:
Poly Havenより Blenderでの表示 12
Thanks! まだまだ高速化できます! 頑張ります 幻の最終フレーム......