[pixel shader fail(sm<6) todo] uniform half h; float4 main() : sv_target { return 0; } [pixel shader] float4 var; float4 main() : sv_target { half4 ret = var + 0.5; return ret; } [test] uniform 0 float4 1.0 2.0 3.0 4.0 draw quad probe (0, 0) f32(1.5, 2.5, 3.5, 4.5) [require] shader model >= 2.0 shader model < 3.0 [pixel shader d3dbc-hex] % The same as above, but in bytecode format so we test the partial precision % destination modifier. ffff0200 % ps_2_0 05000051 a00f0001 3f000000 00000000 00000000 00000000 % def c1, 0.5, 0, 0, 0 02000001 800f0000 a0e40000 % mov r0, c0 03000002 802f0000 80e40000 a0000001 % add_pp r0, r0, c1.x 02000001 802f0800 80e40000 % mov_pp oC0, r0 0000ffff % end [test] uniform 0 float4 1.0 2.0 3.0 4.0 draw quad probe (0, 0) f32(1.5, 2.5, 3.5, 4.5) [require] options: backcompat [pixel shader] uniform half h; float4 main() : sv_target { return h; } [test] uniform 0 float 10.0 draw quad probe (0, 0) rgba (10.0, 10.0, 10.0, 10.0) [require] shader model >= 4.0 [pixel shader] uniform float4 f; float4 main() : sv_target { min16float4 h = f; return h * min16float4(h[1], 2.0, 0.5, -0.5); } [test] uniform 0 float4 0.0 0.0 0.0 0.0 todo(msl & sm>=6) draw quad probe (0, 0) rgba(0.0, 0.0, 0.0, 0.0) uniform 0 float4 3.0 5.0 -0.2 -10.0 todo(msl & sm>=6) draw quad probe (0, 0) rgba(15.0, 10.0, -0.1, 5.0) 4096 [require] shader model >= 6.2 native-16-bit [pixel shader] uniform float4 f; float4 main() : sv_target { half4 h = f; return h * half4(h[1], 2.0, 0.5, -0.5); } [test] uniform 0 float4 0.0 0.0 0.0 0.0 draw quad probe (0, 0) rgba(0.0, 0.0, 0.0, 0.0) uniform 0 float4 3.0 5.0 -0.2 -10.0 draw quad probe (0, 0) rgba(15.0, 10.0, -9.99755859e-002, 5.0) uniform 0 float4 32768.0 32768.0 -32768.0 -32768.0 draw quad probe (0, 0) rgba(1e100, 1e100, -16384.0, 16384.0) uniform 0 float4 0.000062 0.000062 5.97e-8 5.97e-8 draw quad probe (0, 0) rgba(0.0, 1.23977661e-004, 0.0, 0.0)