blending support on R32G32B32A32_UINT texture

Started by
0 comments, last by MJP 11 years, 3 months ago

I am creating a texture of this type R32G32B32A32_UINT and I am dividing it in my way to fill it with 16 (8-bit) uint numbers.

Then i am rendering to it various times. I need to add the value that each texel already has with the new rendered value, so i need the blending. Then when run my program it says in the output that blending isn't supported in those types of textures, but it says too that the shader output value will be interpreted as float bits wiout any data conversion. It says exactly this:


ERROR: ID3D10Device::DrawInstanced: The renderTarget bound to slot 0 has a format (R32G32B32A32_UINT) that does not support blending. The Pixel Shader output signature indicates this output could be written, and the Blend State indicates blending is enabled for this slot. [ EXECUTION ERROR #376: DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING]

WARNING: ID3D10Device::DrawInstanced: Pixel Shader output 'SV_Target0' has type that is NOT float, while the corresponding Output Merger RenderTarget slot [0] has blending enabled.  This happens to be well defined: the raw bits output from the shader will simply be interpreted as float bits in the blender without any data conversion.  This warning is to check that the application developer really intended to rely on this behavior. [ EXECUTION WARNING #415: DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH]

So I want to know if the blending still works. or the texture texel values are just replaced without blending.

If blending works, then, when adding floats binary, is it different from uints binary addition?

Advertisement

You can look here for the list of DXGI formats that support blending. As you'll see, none of the UINT formats are on that list. That second warning will only apply if you're using a blendable render target format, which you're not.

This topic is closed to new replies.

Advertisement