从RWTexture2D <float4>加载到计算着色器</float4>中

时间:2013-01-29 17:13:01

标签: hlsl directx-11 compute-shader

据我所知,HLSL着色器模型5.0存在一个限制,即无法从非标量类型的RWTexture2D资源加载数据。也就是说,以下是非法的:

    RWTexture2D<float4> __color;
    float4 c = __color[PixelCoord];  // error here

那么解决方法究竟是什么?我试图在计算着色器中累积到float4缓冲区,如下所示:

    c = computeColor( ... );
    __color[PixelCoord] += c;

1 个答案:

答案 0 :(得分:0)

尝试做:

float4 c = __color.Load(int3(UV,0));

其中UV是您要采样的纹素的屏幕空间(0 - >分辨率)中的xy坐标。

如果您需要写入,请确保它是从UAV绑定的,而不是着色器资源视图。