diff options
Diffstat (limited to 'mp/src/materialsystem/stdshaders/Water_ps14.psh')
| -rw-r--r-- | mp/src/materialsystem/stdshaders/Water_ps14.psh | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/mp/src/materialsystem/stdshaders/Water_ps14.psh b/mp/src/materialsystem/stdshaders/Water_ps14.psh new file mode 100644 index 00000000..e9daecd1 --- /dev/null +++ b/mp/src/materialsystem/stdshaders/Water_ps14.psh @@ -0,0 +1,96 @@ +; STATIC: "REFLECT" "0..1"
+; STATIC: "REFRACT" "0..1"
+ps.1.4
+; T2 - refraction
+; T3 - normal map
+; T4 - reflection
+; TC0 - normal map coords
+; TC1 - proj tex coords (reflection)
+; TC2 - proj tex coords (refraction)
+; TC3 - tangent space view vec
+; TC4 - displacement scale
+
+; sample normal map
+texld r3, t0
+
+#if REFLECT
+; reflection coords
+texcrd r4.xy, t1_dw.xyw
+#endif
+#if REFRACT
+; refraction coords
+texcrd r2.xy, t2_dw.xyw
+#endif
+; tangent space eye vector
+texld r1, t5 ; <---- Normalizing CUBE MAP here!!!
+; reflection/refraction scale (x,y)
+texcrd r0.xyz, t4.xyz
+
+; perturb coords by constant displacement
+; and by normal map alpha (which has 1/(2**miplevel in it)
+mul r0.rg, r0, r3.a
+#if REFLECT
+mad r4.rg, r3_bx2, r0.x, r4
+#endif
+
+#if REFRACT
+mad r2.rg, r3_bx2, r0.y, r2
+#endif
+
+; stuff something into z so that texld will deal
+#if REFLECT
+mov r4.b, c5
+#endif
+#if REFRACT
+mov r2.b, c5
+#endif
+
+phase
+
+#if REFLECT
+; reflection
+texld r4, r4
+#endif
+#if REFRACT
+; refraction
+texld r2, r2
+#endif
+
+#if REFLECT
+; N.V
+dp3_sat r1.a, r3_bx2, r1_bx2
+#endif
+
+#if REFRACT
+; tint refraction
+mul r2.rgb, r2, c1
+#endif
+
+#if REFLECT
+; tint reflction
+mul r4.rgb, r4, c4
+
+; (1-N.V) ^ 5
++mul r0.a, 1-r1.a, 1-r1.a
+mul r0.a, r0.a, r0.a
+mul_sat r0.a, r0.a, 1-r1.a
+#endif
+
+#if !REFLECT && !REFRACT
+; This is wrong!!!!
+mov r0.rgba, c0
+#endif
+
+#if !REFLECT && REFRACT
+mov r0.rgba, r2
+#endif
+
+#if REFLECT && !REFRACT
+mov r0.rgba, r4
+#endif
+
+#if REFLECT && REFRACT
+; reflection * fresnel + refraction * ( 1 - fresnel )
+lrp r0.rgba, r0.a, r4, r2
+#endif
+
|