DirectX Raytracing
DirectX Raytracing(読み:だいれくとえっくす・れいとれーしんぐ、通称:DXR)とは、GeForce RTXなどのDXR対応GPUでリアルタイムなレイトレーシングできるというものである。
概要[編集 | ソースを編集]
DirectXの新バージョンではなく「DirectX 12の拡張(マイナーアップデート)」としてリリースされた。一般配布は2018年10月10日にWindows 10のアップデートとして行われた。
DXRではDirectX 12に以下の3つの要素が追加された。
- 「acceleration structure」= シーンの中で使われているオブジェクトであることをGPUに明示するためのもの
- コマンドリスト用メソッドにレイを飛ばす「DispatchRaysメソッド」が追加
- HLSLをレイトレーシング向けに拡張
- Pipeline State Objectにレイトレーシング向けバージョンが追加
シェーダーの書き方[編集 | ソースを編集]
シェーダーの書き方はVBやC#などで一般的な「イベント駆動型」に近い記述方法となっている。「何かに反射したとき」などのあらかじめ用意されている各種イベントに対してそれぞれシェーダーを設定しておき、「レイトレーシング開始しろ」というAPIを呼べばあとは全自動でやってくれるという代物である。つまりレイトレーシングに精通していなくてもそこそこ使えてしまう。
OpenGLやVulkanなどの動向[編集 | ソースを編集]
OpenGL[編集 | ソースを編集]
OpenGLにDirectX Raytracing相当の機能を搭載するかは未定である。 たぶんVulkanと競合して足の引っ張り合いにならないよう、実装されないと思われる。
Vulkan [編集 | ソースを編集]
Vulkanの開発元であるLunarGはDirectX Raytracing相当の機能「Vulkan Ray Tracing」を実装すると発表した。2020年から暫定版を含んだSDKが配布されている。
Metal[編集 | ソースを編集]
Metalに関してはいまのところ不明である。 アップルはAMDのdGPUとIntelのiGPUしか採用しないので「Radeon RX Navi 2X」が登場するまではダンマリを決め込むものと思われる。
資料[編集 | ソースを編集]
githubにソースコードが公開されている。いわゆる「ソース読め」でありその他の資料は見当たらない。まじかよ。