diff options
Diffstat (limited to 'materialsystem/stdshaders/bik_ps11.psh')
| -rw-r--r-- | materialsystem/stdshaders/bik_ps11.psh | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/materialsystem/stdshaders/bik_ps11.psh b/materialsystem/stdshaders/bik_ps11.psh new file mode 100644 index 0000000..5ff32a0 --- /dev/null +++ b/materialsystem/stdshaders/bik_ps11.psh @@ -0,0 +1,53 @@ +; DYNAMIC: "PASS" "0..1" +ps.1.1 + +; NOTE: If we ever need to alpha blend this, we'll need to set the right mask to RG on the first pass and B on the second. + +; premultiplied by .25 so that they fit in [-1,1] and use _x4 to scale back up. +; note that the 4th component of each isn't used and is instead in c6 and c7. +def c0, 0.29103088375, 0.3989486695, 0.0f, -0.217663765 +def c1, 0.29103088375, -0.20336914075, -0.09786224375, 0.132426262 +def c2, 0.29103088375, 0.0f, 0.5044555665, -0.2704172135 + +; masks for component selection since ps_1_1 doesn't have general write masking. +def c3, 1.0f, 0.0f, 0.0f, 1.0f +def c4, 0.0f, 1.0f, 0.0f, 0.0f +def c5, 0.0f, 0.0f, 1.0f, 0.0f + +def c6, -0.217663765, 0.132426262, 0.0f, 0.0f +def c7, 0.0f, 0.0f, -0.2704172135, 0.0f + +tex t0 ; Y +tex t1 ; cR +tex t2 ; cB + +; could save an instruction by putting cR and cB in the same texture in the x and y components. +mul r1.rgb, c3, t0 ; get Y into x +mad r1.rgb, c4, t1, r1 ; get cR into y +mad r1.rgb, c5, t2, r1 ; get cB into z ++mov r0.a, c3.a ; set output alpha to one. . .don't really care since we aren't alpha blending. + +#if PASS == 0 +; do the dot3 part of the dot4 for to convert from YcRCb->Red +dp3 t1.rgb, r1, c0 +; Mask into the red channel +mul r0.rgb, t1, c3 + +; do the dot3 part of the dot4 for to convert from YcRCb->Green +dp3 t1.rgb, r1, c1 +; Mask into the green channel +mad r0.rgb, t1, c4, r0 + +; Add the 4th component for the dp4 to convert from YcRCb->[Red,Green] +add_x4_sat r0.rgb, c6, r0 +#endif + +#if PASS == 1 +; do the dot3 part of the dot4 for to convert from YcRCb->Blue +dp3 t1.rgb, r1, c2 +; Mask into the blue channel +mul r0.rgb, t1, c5 + +; Add the 4th component for the dp4 to convert from YcRCb->Blue +add_x4_sat r0.rgb, c7, r0 +#endif |