2017-12-19 19 views
1

学校プロジェクト用の単純なraytracerを作っているのは、計算シェーダが三角形やその他のプリミティブを陰影付けするために使用されていたからです。 これは計算シェーダのバックバッファ面に直接書き込んで、結果をイメイテッドに提示したいのです。私はこれがDX11で可能であることを確かに知っていますが、DX12で動作するようには見えません。D3D12 BackbufferサーフェスをUAVとして使用

私はこれについて、その多くの情報を集めることができませんでしたが、私は把握しようとすると、彼らは(書き込みを回避するために、私の行くという結論に来ているように見えるとまったく同じ問題を議論し、このgamedevスレッドhttps://www.gamedev.net/forums/topic/673687-d3d12-use-compute-shader-to-write-to-swap-chain-backbuffer/
を見つけました中間のテクスチャに、次にパイプラインでサンプリングする)。 これはdx12で実現することが不可能であるということを完全に受け入れることはできません。なぜその機能は削除されますか?キューイングシステムがこの機能を持つ必要がないオーバーヘッドを取り除くことができますか?

別のテクスチャに書き込んだりパイプラインでサンプリングしたり、バックバッファにコピーしたりすることなく、レイトレースを達成する方法はありますか?パフォーマンスを達成するための最良の選択肢は何ですか?

答えて

0

回答にアクセスする必要があります。彼らは、スワップチェーンでマルチサンプルサーフェスを使用する機能を削除したのと同じ方法でUAVを作成する機能を削除しました。

スワップチェーンの表面上でUAVを認可する際の問題は、スワップチェーンの状況を追跡できなくてはならないということです。 DX12はUAVのランタイム時に100%揮発性のディスクリプタヒープに依存しています(レンダーターゲットはCPU側のみであり、追跡可能です)。

Microsoftはデスクトッププレゼンテーションの動作を保証するためにスワップチェーンの表面状態を強く追跡する必要があり、そのためUAVバインドを拒否します。

関連する問題