コンピューティング シェーダーを介して読み取り可能にするには、実際にリソースにシェーダー リソース使用モードが必要です。
次に、通常どおり Shader Resource View を作成するだけです。
計算シェーダーによってバッファーを直接書き込み可能にすることもできます (一部の範囲で)。その場合、フラグは D3D11_BIND_UNORDERED_ACCESS または DXGI_USAGE_UNORDERED_ACCESS です (これは、マルチサンプル テクスチャでは機能しないことに注意してください)。
以下は、UV 座標からテクスチャからサンプルを読み取る非常に単純な計算シェーダーです。
RWStructuredBuffer<float4> rwbuffer;
//Render target previously rendered
Texture2D tex;
//Buffer containing uvs for sampling
StructuredBuffer<float2> uv <string uiname="UV Buffer";>;
SamplerState mySampler : IMMUTABLE
{
Filter = MIN_MAG_MIP_LINEAR;
AddressU = Clamp;
AddressV = Clamp;
};
[numthreads(1, 1, 1)]
void CS( uint3 i : SV_DispatchThreadID)
{
//Read color and write to buffer
rwbuffer[i.x] = tex.SampleLevel(mySampler,uv[i.x],0);
}
technique11 Process
{
pass P0
{
SetComputeShader( CompileShader( cs_5_0, CS() ) );
}
}
それが役立つことを願っています。