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

リアルタイムレイトレーシング + ニューラルレンダリング簡単紹介 / Real-Time Ra...

リアルタイムレイトレーシング + ニューラルレンダリング簡単紹介 / Real-Time Ray Tracing & Neural Rendering: A Quick Introduction (2025)

2025年初め頃より、ゲームなどのリアルタイムグラフィックスの文脈で、比較的小さなニューラルネットワークを活用したニューラルレンダリングが提唱され始めました。本資料では主にリアルタイムレイトレーシングとの組み合わせを想定されたニューラルレンダリングの手法、そしてニューラルレンダリングをサポートするためのCooperative Vector APIについて紹介します。

shocker_0x15

April 05, 2025
Tweet

More Decks by shocker_0x15

Other Decks in Programming

Transcript

  1. モンテカルロレイトレーシングおさらい 4 例:パストレーシング with Next Event Estimation (NEE) 視点から経路をランダムに構築、各点で光源と接続 EvalBRDF

    出射方向と入射方向、 2つの方向を与えてBRDF値を得る SampleBRDF 出射方向だけを与えて 入射方向をサンプル、 確率密度(とBRDF値)を得る 各点で主に2つの処理
  2. モンテカルロレイトレーシングおさらい 5 例:パストレーシング with Next Event Estimation (NEE) 視点から経路をランダムに構築、各点で光源と接続 EvalBRDF

    出射方向と入射方向、 2つの方向を与えてBRDF値を得る SampleBRDF 出射方向だけを与えて 入射方向をサンプル、 確率密度(とBRDF値)を得る 各点で主に2つの処理 シェーディング点情報 (例: テクスチャー座標) Texture 0 Texture 1 BRDF Parameters Analytic BRDF EvalBRDF SampleBRDF BRDF値 確率密度, シェーディング点でBRDF構築
  3. 6 Neural Texture Compression Neural Material Neural Radiance Caching Random-Access

    Neural Compression of Material Textures [Vaidyanathan et al. 2023]
  4. 7 現代のゲームはマテリアル評価に複数のテクスチャーをサンプリングする 例: いわゆるPBRマテリアル BaseColor Occlusion, Roughness, Metallic Normal, Alpha

    それぞれのテクスチャーは個別にブロック圧縮、BCテクスチャー化 組になる他のテクスチャーやMIPレベル間の相関を利用しておらず非効率
  5. 9 - BC同等のストレージならLoD2段階相当高解像度 - BC同等の品質ならサイズ1/3 - シンプルなGGX BRDF + 単一光源ライティングで2-3倍BCよりも高負荷

    - 現実のユースケースだと少し目立たなくなるかも - フィルタリングは論文時点だとあまり考えられていない - デコーダー(MLP)ウェイトのダイバージェンス問題もある
  6. 12 事前に多層構造全体のふるまい(BRDF)とImportance Sampling(のためのパラメター) を潜在空間表現へ圧縮、対応する2つのデコーダー(MLP+α)の学習を行う Analytic BRDF EvalBRDF SampleBRDF Latent Texture

    ランタイムではシェーダー内でLatent Textureの値と他の入力をデコーダーに通してBRDFを再現 Decoder シェーディング点情報 (例: テクスチャー座標) Neural BRDF EvalBRDF SampleBRDF BRDF値 確率密度, Latent Code Latent Texture
  7. 14 シェーディング点情報 (例: テクスチャー座標) Texture 0 Texture 1 BRDF Parameters

    Analytic BRDF EvalBRDF SampleBRDF BRDF値 確率密度, Traditional Material Neural Texture Compression Neural Material シェーディング点情報 (例: テクスチャー座標) Neural BRDF EvalBRDF SampleBRDF BRDF値 確率密度, Latent Code Latent Texture シェーディング点情報 (例: テクスチャー座標) BRDF Parameters Analytic BRDF EvalBRDF SampleBRDF BRDF値 確率密度, Latent Texture Decoder
  8. 15 Neural Texture Compression Neural Material Neural Radiance Caching Real-time

    Neural Radiance Caching for Path Tracing [Müller et al. 2021]
  9. 19 パストレーシングでは反射(透過)輝度をモンテカルロ推定 たくさんレイトレースが必要(長い経路を考える場合は特に) 反射輝度は多くの場合 空間的・方向的・時間的な 近傍間で相関がある よく似ている そこそこ似ている 似ていない →

    シーンの輝度をキャッシュするというアイディア (Radiance Caching) - キャッシュ点をどう配置する? - 各キャッシュ点で輝度をどう表現する? - キャッシュ点間の補間はどうする? - キャッシュの更新はどうする? - 動的なシーンはどう対応する?
  10. 21 位置 (3次元) 出射方向 (2次元) 法線 (2次元) Roughness (1次元) Diffuse

    Reflectance (3次元) Specular Reflectance (3次元) Neural Radiance Cache (NRC) 位置や方向はInput Encodingで 加工されて小型のMLPに入力 反射(透過)輝度 (3次元) - プライマリーヒットではNRCは使わない - 拡散反射マテリアルの後など 精度が必要ないと判断され次第NRCに頼って パスの延長を打ち切る - 一部のパス(数%)はパス延長を続けて NRC学習用の訓練データを作る 最終的にはNRCで打ち切る - さらにごく一部のパスはNRCを一切使わないで 訓練データ作成 (Truly unbiased) - 1フレームの中で訓練データの生成と学習を行う “Generalization via Adaptation”
  11. Cooperative Vector API 23 多くのNN支援ハードウェア(Tensor Coreなど)では Wave内の複数のスレッドが協調的に(Cooperatively) 行列積の計算、入出力行列の読み書きを行う 𝑚11 ⋯

    𝑚1𝑀 ⋮ ⋱ ⋮ 𝑚𝑁1 ⋯ 𝑚𝑁𝑀 𝑥1 ⋮ 𝑥𝑀 各スレッドが行列×ベクター を計算したい 𝑚11 ⋯ 𝑚1𝑀 ⋮ ⋱ ⋮ 𝑚𝑁1 ⋯ 𝑚𝑁𝑀 𝑥11 ⋯ 𝑥1𝑇 ⋮ ⋱ ⋮ 𝑥𝑀1 ⋯ 𝑥𝑀𝑇 Wave全体で協調的に計算する - 行列はスレッド間で共通 - 例: Neural Materialではマテリアルごとに異なる行列 - ハードウェアが直接サポートする行列サイズは固定 - ニューラルレンダリングでは部分的にアクティブなWaveや ダイバージェントなコードパスからの呼び出しが想定される - 例: Pixel Shaderでは全スレッドがアクティブとは限らない これらの問題を回避しつつシェーダーを記述するのは面倒 Cooperative Vector APIが良い感じに隠蔽、支援ハードウェアを活用してくれる