次の方法で共有


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

 

関連項目

シェーダー モデル 5 オブジェクト