Note: I distinguish sample from fetch in the title, since in my tests this behavior seems to differ between the two.
Possible answers:
- The [0..2^32] range is scaled down to [0..1] (I think OpenGL works this way)
- The uint32s are casted to float32s (which, incidentally, means that some precision is lost).
- Other?
I made a test with renderdoc.
When using fetch, and the texture is defined with
Texture2D<uint>, thefetchfunctions simply return a uint instead of a float4.