2

私は、Crytek のこの論文 ( http://www.crytek.com/cryengine/presentations/CryENGINE3-reaching-the-speed-of-light ) に従って、ベスト フィット法線と呼ばれる GBuffer 法線格納最適化アルゴリズムを実装しました。これは D3D11 で実装されましたが、Shader Model 4.0 を使用しています。

このアルゴリズムを使用するため、最適な法線ルックアップ テクスチャをサンプリングする必要があります。実際にはスクリーン スペース操作であり、このテクスチャにはレベル ミップマップが 1 つしかないため、TextureObject.SampleLevel( texcoord, 0.0f ) を使用して、このテクスチャのレベル 0 のみをサンプリングする必要があります。しかし、レベル 0 のみでサンプリングすると、最終的な画像に黒と白のノイズ ピクセルが表示されます。代わりに TexObj.Sample( texcoord ) を使用すると、これらのノイズはなくなりました。私の知る限り、この場合、これら 2 つの関数はまったく同じように動作するはずですが、結果が異なるのはなぜですか? GPU がこれらの命令を実行するときに何か魔法はありますか?

ちなみに、SampleLevel を使用してテクスチャをサンプリングすると、Sample を使用するよりも最終的な品質が向上します。どんな助けでも感謝します、ありがとう!

4

1 に答える 1

1

PIX (または VS2012 グラフィックス デバッガー) で問題を分析して、ソース テクスチャが両方のケースで同じであることを確認しましたか? また、2つの方法での比較スクリーンショットを2つ投稿していただけると助かります。

于 2012-12-20T13:48:29.827 に答える