vs_3_0の頂点テクスチャ (DirectX HLSL)
頂点シェーダー 3.0 モデルでは、texldl とテクスチャ ロード ステートメントを使用した頂点シェーダー テクスチャ参照がサポートされています。 頂点エンジンには、D3DVERTEXTEXTURESAMPLER0、D3DVERTEXTEXTURESAMPLER1、D3DVERTEXTEXTURESAMPLER2、D3DVERTEXTEXTURESAMPLER3という名前の 4 つのテクスチャ サンプラー ステージが含まれています。 これらは、ピクセル エンジンのディスプレイスメント マップ サンプラーとテクスチャ サンプラーとは異なります。
これら 4 つのステージで設定されたテクスチャをサンプリングするには、頂点エンジンを使用し、CheckDeviceFormat メソッドを使用してステージをプログラムします。 SetTextureを使用して、これらのステージでテクスチャを設定し、ステージ インデックスをD3DVERTEXTEXTURESAMPLER3 D3DVERTEXTEXTURESAMPLER0 します。 頂点テクスチャ サンプラーを表す新しいレジスタが頂点シェーダー(ps_2_0のように)サンプラー レジスタに導入されました。 このレジスタを使用する前に、シェーダーで定義する必要があります。
アプリケーションでは、D3DUSAGE_QUERY_VERTEXTEXTUREを使用して CheckDeviceFormat呼び出すことによって、頂点テクスチャとして形式がサポートされているかどうかを照会できます。
手記
これはクエリ フラグであるため、Createxxx 関数では受け入れまれません。 既定のプールで作成された頂点テクスチャは、ピクセル テクスチャとして設定でき、その逆も可能です。 ただし、ソフトウェア頂点処理を使用するには、頂点テクスチャをスクラッチ プールに作成する必要があります (混合モード デバイスまたはソフトウェア頂点処理デバイスに関係なく)。
この機能は、次を除き、ピクセル テクスチャと同じです。
- 異方性テクスチャ フィルタリングはサポートされていないため、D3DSAMP_MAXANISOTROPYは無視され、D3DTEXF_ANISOTROPICを拡大または縮小してこれらのステージに設定することはできません。
- 変更情報のレートは利用できないので、アプリケーションは詳細レベルを計算し、その情報を texldl と をするためのパラメーターとして提供する必要があります。
制限事項は次のとおりです。
- ピクセル シェーダーと同様に、マルチエレメント テクスチャがサポートされている場合は、D3DSAMP_ELEMENTINDEXを使用して、どの要素からサンプリングするかを判断します。
- これらのステージでは、状態D3DSAMP_DMAPOFFSETは無視されます。
- CheckDeviceFormat と D3DUSAGE_QUERY_VERTEXTEXTURE" を使用してテクスチャを照会し、頂点テクスチャとして使用できるかどうかを確認します。
- VertexTextureFilterCaps は、頂点テクスチャ サンプラーで許可されるフィルターの種類を示します。 D3DPTFILTERCAPS_MINFANISOTROPIC とD3DPTFILTERCAPS_MAGFANISOTROPICは許可されません。
サンプリング ステージ レジスタ
サンプリング ステージ レジスタは、テクスチャ ロード ステートメントで使用できるサンプリング ユニットを識別します。 サンプリング ユニットはテクスチャ サンプリング ステージに対応し、SetSamplerStateで提供されるサンプリング固有の状態カプセル化します。
各サンプラーは、SetTextureを使用して、対応するサンプラーに設定された 1 つのテクスチャ サーフェスを一意に識別します。 ただし、同じテクスチャ サーフェスを複数のサンプラーで設定できます。
描画時に、テクスチャをレンダー ターゲットとテクスチャとしてステージで同時に設定することはできません。
vs_3_0は 4 つのサンプラーをサポートしているため、1 つのシェーダー パスで最大 4 つのテクスチャ サーフェスを読み取ることができます。 サンプラー レジスタは、テクスチャ ロード ステートメントの引数としてのみ使用できます。texldl - vsです。
vs_3_0では、サンプラーを使用する場合は、(ps_2_0のように) dcl_samplerType (sm3 - asm) を使用して、シェーダー プログラムの開始時に宣言する必要があります。
ソフトウェア処理
この機能は、ソフトウェア頂点処理でサポートされます。 サポートされている特定のフィルターの種類を確認するには、GetDeviceCaps呼び出し、VertexTextureFilterCaps を確認します。 公開されたすべてのテクスチャ形式は、ソフトウェア頂点処理で頂点テクスチャとしてサポートされます。
アプリケーションは、ソフトウェア頂点処理モードで特定のテクスチャ形式がサポートされているかどうかを確認するには、checkDeviceFormat呼び出し、使用として (D3DVERTEXTEXTURESAMPLER | D3DUSAGE_SOFTWAREPROCESSING) を指定します。 ソフトウェア頂点処理では、すべての形式がサポートされています。 スクラッチ プールは、ソフトウェアの頂点処理に必要です。
API の変更
// New define
#define D3DVERTEXTEXTURESAMPLER0 (D3DDMAPSAMPLER+1)
#define D3DVERTEXTEXTURESAMPLER1 (D3DDMAPSAMPLER+2)
#define D3DVERTEXTEXTURESAMPLER2 (D3DDMAPSAMPLER+3)
#define D3DVERTEXTEXTURESAMPLER3 (D3DDMAPSAMPLER+4)
#define D3DVERTEXTEXTURESAMPLER (0x00100000L)
// New caps field in D3DCAPS9
DWORD VertexTextureFilterCaps;
関連トピック
-
頂点パイプライン の