diff options
Diffstat (limited to 'materialsystem/stdshaders/WaterCheap_ps11.psh')
| -rw-r--r-- | materialsystem/stdshaders/WaterCheap_ps11.psh | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/materialsystem/stdshaders/WaterCheap_ps11.psh b/materialsystem/stdshaders/WaterCheap_ps11.psh new file mode 100644 index 0000000..f12a1bc --- /dev/null +++ b/materialsystem/stdshaders/WaterCheap_ps11.psh @@ -0,0 +1,26 @@ +ps.1.1 + +; Get the 3-vector from the normal map +tex t0 + +; Perform matrix multiply to get a local normal bump. Then +; reflect the eye vector through the normal and sample from +; a cubic environment map. +texm3x3pad t1, t0_bx2 +texm3x3pad t2, t0_bx2 +texm3x3vspec t3, t0_bx2 + +mul r0.rgb, t3, c1 ; envmap color * envmaptint ++mov_sat r0.a, v0.a ; Put the cheap water blend factor here + +dp3_sat t2, v0_bx2, t0_bx2 ; dot eye-vector with per-pixel normal from t0 + +; run Fresnel approx. on it: R0 + (1-R0) (1-cos(q))^5 in alpha channel +; NOTE: This is not perspective-correct and results in strange artifacts +mul r1.a, 1-t2.a, 1-t2.a ; squared +mul r1.a, r1.a, r1.a ; quartic +mul_sat r1.a, r1.a, 1-t2.a ; quintic + +; t1.a is now the fresnel factor +add_sat r0.a, r1.a, r0.a ; Now we have the final blend factor between cheap water + refraction + |