diff options
Diffstat (limited to 'invert_opaquestip_planemask_unclipped.hlps')
-rw-r--r-- | invert_opaquestip_planemask_unclipped.hlps | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/invert_opaquestip_planemask_unclipped.hlps b/invert_opaquestip_planemask_unclipped.hlps new file mode 100644 index 0000000..39a7f83 --- /dev/null +++ b/invert_opaquestip_planemask_unclipped.hlps @@ -0,0 +1,50 @@ +/* Automatically generated file; do not edit */ + +/* invert shader for opaquestip with planemask and unclipped */ + +SamplerState point_sample; + +Texture2D stipple : register(t0); +Texture2D<uint4> output : register(t2); + +cbuffer colors :register(b0) { + uint4 foreground; + uint4 background; + uint4 planemask; +} + +cbuffer tile_stats :register(b1) { + uint4 plane; + uint2 tile_wh; +} + +struct PS_INPUT { + float2 tile_pos : TEXCOORD0; + float2 clip_pos : TEXCOORD1; + float2 out_pos : TEXCOORD2; +}; + +uint4 main(PS_INPUT input) : SV_TARGET +{ + uint4 color; + + // Load input color + float4 pt = stipple.Sample(point_sample, input.tile_pos); + color = foreground; + if (pt.r < 0.5) + color = background; + + // Load output color + int3 pos; + pos.xy = input.out_pos.xy; + pos.z = 0; + uint4 out_color = output.Load(pos); + + // rop + color = ~out_color; + + // planemask + color = (color & planemask) | (out_color & ~planemask); + + return color; +} |