Slide 1

Slide 1 text

最新のDirectX12で使える レイトレ周りの機能追加について Pocol@ProjectAsura

Slide 2

Slide 2 text

背景 GDC 2025, “DirectX State of the Union: Raytracing and PIX Workflows (Presented by Microsoft)” DXR1.2の機能を使うと 6.6ms程度処理負荷が減るらしい 何それ? ガチで?

Slide 3

Slide 3 text

背景 GDC 2025, “DirectX State of the Union: Raytracing and PIX Workflows (Presented by Microsoft)” 本当ならば これは是非使いたい!

Slide 4

Slide 4 text

おしながき DXR 1.2から追加された以下の2つの機能について紹介します。 Shader Execution Reordering Opacity Micromaps

Slide 5

Slide 5 text

Shader Execution Reordering (SER) シェーダ実行順序の再並び替え

Slide 6

Slide 6 text

Shader Execution Reorderingって? どんな機能? その名の通りにシェーダの実行順序を並び替えてくれる機能 何がうれしいの? 並び替えることによってダイバージェンスを減らせる可能性やキャッシュ効率を向上できる可能性がある。 [Nishikawa 2024]より引用

Slide 7

Slide 7 text

どうやって使うの? ・シェーダ側は下記のように1個関数呼び出すだけ。 ・引数に何を優先度にして並び替えするかを渡す。 「 dx:: 」を今は つけないといけないらしい…

Slide 8

Slide 8 text

どういうときに効果がでる? 効果が出るのは「多数の異なる分岐・マテリアルが混在する」ケース。 単純なレイシーンではほぼ効果なし。かえって遅くなるケースもある。 cf. もんしょの巣穴 DirectXの話 第181回 Shader Execution Reordering https://sites.google.com/site/monshonosuana/directx%E3%81%AE%E8%A9%B1/directx%E3%81%AE%E8%A9%B1-%E7%AC%AC181%E5%9B%9E?authuser=0 きちんとパフォーマンス計測し,使用するかどうかを適宜判断しましょう。

Slide 9

Slide 9 text

動くサンプルコードは? GithubのDirectX-Graphics-Samplesにある。 https://github.com/microsoft/DirectX-Graphics-Samples/tree/master Samples > Desktop > D3D12RayTracing > src > D3D12RaytracingSakuraForestSER Raytracing.hlsl

Slide 10

Slide 10 text

PIXでサポートされている? まだ正式サポートされていない。プレビュー状態。 PIX 2050.30-previewで機能提供はされている。

Slide 11

Slide 11 text

Opacity Micromaps (OMM) 不透明マイクロマップ

Slide 12

Slide 12 text

Opacity Micromaps (OMM) どんな機能? ・不透明度を表す,1つのポリゴンよりも小さなジオメトリ情報をBLASに持たせる機能。 ・ 何がうれしいの? ・アルファテストのためのAnyHitShaderの起動を回数を減らせるため、 高速化が効果が見込める。

Slide 13

Slide 13 text

どうやって使うの? ・BLASの作成時に追加対応を行う。シェーダ側には新しいAPIはない。 ・BLASにOpacity Micromapsのデータを渡すようにすればいい。 ・Opacity Micromapsのデータは事前に作成しておく必要がある。

Slide 14

Slide 14 text

動くサンプルコードは? GithubのDirectX-Graphics-Samplesにある。 https://github.com/microsoft/DirectX-Graphics-Samples/tree/master Samples > Desktop > D3D12RayTracing > src > D3D12RaytracingOpacityMicromaps

Slide 15

Slide 15 text

PIXでサポートされている? はい。PIX 2505.30から 詳細は下記のPIXのブログ投稿を参照されたし。 https://devblogs.microsoft.com/pix/pix-2505-30-and-2505-30-preview/

Slide 16

Slide 16 text

OMMって、どうやって作ればいいの? NVIDIAから提供されているOMM SDKを利用する。 OMM-Samplesにてサンプルが提供されている。 https://github.com/NVIDIA-RTX/OMM-Samples アルファテクスチャ, アルファテスト値, ジオメトリ(頂点バッファ,インデックスバッファ) などを渡すことによってベイクしてくれる。

Slide 17

Slide 17 text

まとめ DXR 1.2から追加された以下の2つの機能について紹介しました。 Shader Execution Reordering 実行順番を並び替えてダイバージェンスやキャッシュ効率を高められる可能性がある。 シェーダ上では1個関数を呼び出せばいい。 PIXはまだプレビュー段階。 Opacity Micromaps (OMM) アルファテストのためのAnyHitShaderの起動回数を低減し、高速化。 BLAS構築時に事前作成したOMMを渡すように変更すればいい。 PIXは 2505.30からサポートされている。

Slide 18

Slide 18 text

以上!