RWTexture2D
読み取り/書き込みリソース。
メソッド | 説明 |
---|---|
GetDimensions | リソース ディメンションを取得します。 |
[読み込み] | テクスチャ データを読み取ります。 |
Operator[] | リソース変数を取得します。 |
RWTexture2D オブジェクトには、 ストレージ クラス globallycoherent のプレフィックスを付けることができます。 このストレージ クラスにより、他のグループが書き込みを確認できるように、メモリ バリアと同期が GPU 全体でデータをフラッシュします。 この指定子がない場合、メモリ バリアまたは同期は、現在のグループ内の順序付けられていないアクセス ビュー (UAV) のみをフラッシュします。
RWTexture2D オブジェクトには、 オブジェクトの宣言ステートメントに要素型が必要です。 たとえば、次の宣言は正しくありません。
// The following declaration is incorrectly coded.
RWTexture2D myTexture;
次の宣言は正しいです。
// The following declaration is correctly coded.
RWTexture2D<float> tex;
RWTexture2D オブジェクトは UAV 型のオブジェクトであるため、そのプロパティは Texture2D オブジェクトなどのシェーダー リソース ビュー (SRV) 型のオブジェクトとは異なります。 たとえば、RWTexture2D オブジェクトの読み取りと書き込みはできますが、Texture2D オブジェクトからのみ読み取ることができます。
RWTexture2D オブジェクトは、Sample などの Texture2D オブジェクトのメソッドを使用できません。 ただし、同じリソースに対して複数のビューの種類を作成できるため、複数のシェーダーで複数のテクスチャの種類を 1 つのテクスチャとして宣言できます。 たとえば、次のコード スニペットは、RWTexture2D オブジェクトを計算シェーダーで tex として宣言して使用し、ピクセル シェーダーで Texture2D オブジェクトを tex として宣言して使用する方法を示しています。
Note
ランタイムは、同じリソースに対して複数のビューの種類を作成するときに、特定の使用パターンを適用します。 たとえば、ランタイムでは、リソースの UAV マッピングと、同じリソースの SRV マッピングの両方を同時にアクティブにすることはできません。
次のコードは、コンピューティング シェーダー用です。
RWTexture2D<float> tex;
[numthreads(groupDim_x, groupDim_y, 1)]
void main(
uint3 groupId : SV_GroupID,
uint3 groupThreadId : SV_GroupThreadID,
uint3 dispatchThreadId : SV_DispatchThreadID,
uint groupIndex : SV_GroupIndex)
{
tex [dispatchThreadId.xy] = <something>;
}
次のコードはピクセル シェーダー用です。
struct PixelShaderInput
{
float4 pos : SV_POSITION;
float2 tex : TEXTURE;
};
Texture2D<float> tex;
float4 main(PixelShaderInput input) : SV_TARGET
{
return tex.Sample(TextureSampler, input.tex);
}
最小シェーダー モデル
このオブジェクトは、次のシェーダー モデルでサポートされています。
シェーダー モデル | サポートされています |
---|---|
シェーダー モデル 5 以降のシェーダー モデル | はい |
このオブジェクトは、次の種類のシェーダーでサポートされています。
Vertex | Hull | Domain | ジオメトリ | ピクセル | Compute |
---|---|---|---|---|---|
x | x |
関連項目