% On SM1, uints can only be used with known-positive values. [require] shader model >= 4.0 [pixel shader] uniform float f; uniform int i; uniform bool b; uniform float h; float4 main() : sv_target { float4 ret; ret.x = ((float)(uint)f) - 1.5; ret.y = ((float)(uint)i) - 1.5; ret.z = ((float)(uint)b) / 2; ret.w = ((float)(uint)(half)h) + 0.5; return ret; } [test] uniform 0 float 2.6 uniform 1 int 2 uniform 2 int -2 uniform 3 float -3.6 draw quad probe (0, 0) rgba (0.5, 0.5, 0.5, 0.5) [pixel shader] float4 main() : sv_target { float f = 2.6; int i = 2; bool b = true; half h = -3.6; float4 ret; ret.x = ((float)(uint)f) - 1.5; ret.y = ((float)(uint)i) - 1.5; ret.z = ((float)(uint)b) / 2; ret.w = ((float)(uint)h) + 0.5; return ret; } [test] draw quad probe (0, 0) rgba (0.5, 0.5, 0.5, 0.5) [require] shader model >= 6.2 native-16-bit [pixel shader] uniform uint4 i; uint4 main() : sv_target { uint16_t4 s = i; return s * uint16_t4(2, 2, 1, 1); } [test] uniform 0 uint4 0x10002 0x8003 0x10002 0x8003 draw quad probe (0, 0) rgbaui(4, 6, 2, 0x8003) uniform 0 uint4 0xffffffff 0xfffffffd 0xffffffff 0xfffffffd draw quad probe (0, 0) rgbaui(0xfffe, 0xfffa, 0xffff, 0xfffd) [pixel shader] uniform float4 f; uint4 main() : sv_target { uint16_t4 s = f; return s * uint16_t4(2, 2, 1, 1); } [test] uniform 0 float4 0.5 1.0 0.5 1.0 todo draw quad probe (0, 0) rgbaui(0, 2, 0, 1)