5

シェーダーモデル3.0では、これはノーだったと確信していますが、とにかくこれを聞きたいのですが、

シェーダーモデル5.0では、頂点シェーダーでテクスチャをサンプリングできますか?

頂点ごとに大量の補足情報を利用できるようにしたい場合、どのような選択肢がありますか?

編集:どうやらここで行われているように頂点テクスチャフェッチを実行すること可能ですが、hlslシェーダーモデル5プログラムで試してみると、エラーが発生します

エラーX4532:式をvs_5_0命令セットにマップできません
4

2 に答える 2

5

はい、頂点シェーダーからのテクスチャのサンプリングは、シェーダーモデル5.0で、任意のオブジェクトに対してoperator[unint2]を使用して非常に簡単に実行できTexture2Dます。

たとえば、シェーダーモデル5hlslプログラムtex0のオブジェクトは次のとおりです。Texture2D

Texture2D tex0 : register( t0 );

// in a vertex shader program
uint2 pos_xy = { 0, 1 } ;
texelColor = tex0[ pos_xy ] ;
于 2011-12-15T04:56:35.210 に答える
0

はい。ただし、SampleLevelサンプリングにはを使用する必要があります。mytexture[xy_coord]'サンプリング'なしで値を提供する、またはを使用してテクスチャから直接値をロードすることもできますtexture.Load(...)(例:双一次補間)。

関数を使用して、頂点シェーダーでテクスチャをサンプリングできます。このSampleLevel関数では、サンプリングするミップマッピングレベルも指定する必要があります。Sample関数が内部で関数を使用することを想像できますがSampleLevel、画面スペースでテクスチャ座標ルックアップのローカル派生物を取得することでミップマッピングレベルが自動的に選択されるという追加の利点があります(これにより、GPUは使用するミップレベルを選択できます)。

https://msdn.microsoft.com/en-us/library/windows/desktop/bb509699(v=vs.85).aspx

于 2016-10-31T05:56:27.457 に答える