次の方法で共有


HLSL タイル リソースの公開

Shader Model 5でタイル 化されたリソースをサポートするには、新しい Microsoft High Level Shader Language (HLSL) 構文が必要です。

新しい HLSL 構文は、タイル リソースがサポートされているデバイスでのみ許可されます。 次の表のタイル化されたリソースに関連する各 HLSL メソッドは、1 つ (フィードバック) または 2 つ (この順序でのクランプとフィードバック) の追加の省略可能なパラメーターを受け入れます。 たとえば、Sample メソッドは次のとおりです。

Sample(sampler, location [, offset [, clamp [, feedback] ] ])

Sample メソッドの例として、Texture2D.Sample(S,float,int,float,uint)があります。

オフセット、クランプ、フィードバックの各パラメーターは省略可能です。 必要なパラメーターまで、すべての省略可能なパラメーターを指定する必要があります。これは、既定の関数引数の C++ 規則と一致します。 たとえば、フィードバックの状態が必要な場合は、オフセット パラメーターとクランプ パラメーターの両方を明示的に Sampleに指定する必要があります。ただし、これらは論理的には必要ない可能性があります。

clamp パラメーターはスカラー浮動小数点値です。 clamp=0.0f のリテラル値は、クランプ操作が実行されていないことを示します。

フィードバック パラメーターは、uint 変数であり、CheckAccessFullyMapped関数メモリ アクセス クエリの組み込み関数に指定できます。 フィードバック パラメーターの値を変更または解釈することはできません。ただし、コンパイラでは、値を変更したかどうかを検出するための高度な分析と診断は提供されません。

CheckAccessFullyMapped構文を次に示します。

bool CheckAccessFullyMapped(in uint FeedbackVar);

CheckAccessFullyMapped は、FeedbackVar の値を解釈し、アクセスされているすべてのデータがリソースにマップされている場合は true を返します。それ以外の場合、checkAccessFullyMapped は false を返します。

clamp パラメーターまたはフィードバック パラメーターが存在する場合、コンパイラは基本命令のバリアントを出力します。 たとえば、タイルリソースのサンプルでは、sample_cl_s 命令が生成されます。 クランプもフィードバックも指定されていない場合、コンパイラは基本的な命令を出力し、現在の動作から変更されないようにします。 クランプ値 0.0f は、クランプが実行されていないことを示します。したがって、ドライバー コンパイラは、ターゲット ハードウェアに命令をさらに調整できます。 フィードバックが命令内の NULL レジスタの場合、フィードバックは使用されません。したがって、ドライバー コンパイラは、ターゲット アーキテクチャに合わせて命令をさらに調整できます。

HLSL コンパイラがクランプが 0.0f であると推測し、フィードバックが使用されていない場合、コンパイラは対応する基本命令 (たとえば、sample_cl_sではなく sample) を出力します。

タイル化されたリソース アクセスが複数の構成バイト コード命令 (構造化リソースなど) で構成されている場合、コンパイラは OR 操作を介して個々のフィードバック値を集計して最終的なフィードバック値を生成します。 そのため、このような複雑なアクセスに対して 1 つのフィードバック値が表示されます。

フィードバックやクランプをサポートするように変更された HLSL メソッドの概要表を次に示します。 これらはすべて、すべてのディメンションのタイル化されたリソースとタイル化されていないリソースで機能します。 タイル化されていないリソースは、常に完全にマップされているように見えます。

HLSL オブジェクト する フィードバック オプション (*) を持つ組み込みメソッド - クランプ オプションもあります
[RW]Texture2D
[RW]Texture2DArray
TextureCUBE
TextureCUBEArray
集める
GatherRed
GatherGreen
GatherBlue
GatherAlpha
GatherCmp
GatherCmpRed
GatherCmpGreen
GatherCmpBlue
GatherCmpAlpha
[RW]Texture1D
[RW]Texture1DArray
[RW]Texture2D
[RW]Texture2DArray
[RW]Texture3D
TextureCUBE
TextureCUBEArray
見本*
SampleBias*
SampleCmp*
SampleCmpLevelZero
SampleGrad*
SampleLevel
[RW]Texture1D
[RW]Texture1DArray
[RW]Texture2D
Texture2DMS
[RW]Texture2DArray
Texture2DArrayMS
[RW]Texture3D
[RW]バッファ
[RW]ByteAddressBuffer
[RW]StructuredBuffer
負荷

タイル リソースへのパイプライン アクセス