シェーダーモデル3.0では、これはノーだったと確信していますが、とにかくこれを聞きたいのですが、
シェーダーモデル5.0では、頂点シェーダーでテクスチャをサンプリングできますか?
頂点ごとに大量の補足情報を利用できるようにしたい場合、どのような選択肢がありますか?
編集:どうやらここで行われているように頂点テクスチャフェッチを実行することは可能ですが、hlslシェーダーモデル5プログラムで試してみると、エラーが発生します
エラーX4532:式をvs_5_0命令セットにマップできません
シェーダーモデル3.0では、これはノーだったと確信していますが、とにかくこれを聞きたいのですが、
シェーダーモデル5.0では、頂点シェーダーでテクスチャをサンプリングできますか?
頂点ごとに大量の補足情報を利用できるようにしたい場合、どのような選択肢がありますか?
編集:どうやらここで行われているように頂点テクスチャフェッチを実行することは可能ですが、hlslシェーダーモデル5プログラムで試してみると、エラーが発生します
エラーX4532:式をvs_5_0命令セットにマップできません
はい、頂点シェーダーからのテクスチャのサンプリングは、シェーダーモデル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 ] ;
はい。ただし、SampleLevel
サンプリングにはを使用する必要があります。mytexture[xy_coord]
'サンプリング'なしで値を提供する、またはを使用してテクスチャから直接値をロードすることもできますtexture.Load(...)
(例:双一次補間)。
関数を使用して、頂点シェーダーでテクスチャをサンプリングできます。このSampleLevel
関数では、サンプリングするミップマッピングレベルも指定する必要があります。Sample
関数が内部で関数を使用することを想像できますがSampleLevel
、画面スペースでテクスチャ座標ルックアップのローカル派生物を取得することでミップマッピングレベルが自動的に選択されるという追加の利点があります(これにより、GPUは使用するミップレベルを選択できます)。
https://msdn.microsoft.com/en-us/library/windows/desktop/bb509699(v=vs.85).aspx