Загрузка из RWTexture2D<float4> в вычислительный шейдер

Я понимаю, что в модели 5.0 шейдеров HLSL есть ограничение, когда нельзя загружать данные из ресурса RWTexture2D, не являющегося скалярным типом. То есть следующее незаконно:

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

Так что же такое обходной путь? Я пытаюсь накопить в буфере float4 в вычислительном шейдере, вот так:

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

1 ответ

Попробуйте сделать:

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

Где UV - это координата xy в пространстве экрана (0 -> Resolution) текселя, который вы хотите сэмплировать.

Если вам нужно написать в него, убедитесь, что он связан с БПЛА, а не с представлением ресурсов шейдера.

Другие вопросы по тегам