
DXVK-NVAPI 0.9.3で加わった機能
DXVK-NVAPI 0.9.3が公開され、DirectX Raytracing(DXR)のOpacity Micromaps(OMM)と、Vulkanゲーム向けのNVIDIA Reflex代替実装に対応しました。Steam PlayのProtonを使ってWindowsゲームをLinux上で動かす際に、NVIDIAの機能を扱うための互換レイヤーです。
OMMを使うには、NVIDIAのR615以降のドライバー、VKD3D-Proton 3.1以降、VK_KHR_opacity_micromap拡張が必要です。Reflexの新しい実装もR615以降のドライバーを対象としています。
この更新では、R610およびR615のドライバー設定に対応し、利用可能なVRAMと空きVRAMの報告方法も改良しました。ARM64向けのコンパイルとビルド成果物にも対応しています。
OMMが透過部分をレイトレーシングで扱う仕組み
OMMは三角形をさらに細かな領域に分け、それぞれを不透明、透明、または追加判定が必要な状態として記録します。アルファテストされた模様や半透明の表面を、三角形全体の属性だけで表す代わりに、三角形内部の細部まで扱えます。
レイトレーシングでは、光線が三角形に当たるたびに、透明か不透明かを調べるシェーダーが呼び出される場合があります。OMMは透明または不透明と分かっている小領域をあらかじめ記録し、そうした領域で不要なシェーダー呼び出しを省けるようにします。
1ビット形式では小領域を透明か不透明に分類し、2ビット形式では「判定が必要」な状態も扱えます。後者では、用途に応じて不明状態を透明または不透明として扱う方式と、その領域で追加のシェーダー判定を行う方式を選べます。
Vulkanゲーム向けReflexの実装変更
0.9.3は、Vulkanゲームで使うReflexに、VK_NV_low_latencyのrevision 2拡張を利用する代替実装を加えました。この拡張は、互換レイヤーが従来のReflex機能を呼び出すためのエントリーポイントを追加しています。
従来のVulkan向け実装では、DXVK-NVAPIからの呼び出しを仲介して情報を加え、対応ドライバーへ渡す追加のVulkanレイヤーが必要でした。新しい実装ではそのレイヤーが不要になり、DXVK-NVAPIのVulkanレイヤーは役目を終えます。
対象はVulkanを使うゲームで、DirectXゲーム向けのReflex対応とは別の経路です。
ドライバー設定やゲーム互換性の変更
更新には、NVAPI R610ヘッダー由来のNGX_DLSS_NR_OVERRIDEなど3つの設定と、R615ヘッダー由来のSL_DLSS_OVERRIDEへの対応が含まれます。NVAPIとNVMLのヘッダーもR615に更新され、Vulkanヘッダーは1.4.357になりました。
D3D12のデバイス、コマンドリスト、コマンドキューに関するNVAPIラッパーの保存方法を変更し、改造ツールと併用する複数のゲームでクラッシュを防ぐ修正を加えました。初期化時に起きる可能性があった競合状態も修正され、Elite DangerousでEDHMを使う際のクラッシュに対処しています。
Sound Voltexがディスプレイのリフレッシュレート情報を取得できるようになり、War Thunderでは不要になったPascal偽装の回避策が削除されました。NVIDIA RTX Path Tracing Sample向けの回避策も加わり、特定の環境変数を設定せずにNVAPIシェーダー拡張を利用できるようになっています。










