私は、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 を使用するよりも最終的な品質が向上します。どんな助けでも感謝します、ありがとう!