diff options
| author | Joe Ludwig <[email protected]> | 2013-12-23 14:58:45 -0800 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-12-23 15:00:03 -0800 |
| commit | 7309a5f13f63fdcc7b1e090f6c176113a9d95061 (patch) | |
| tree | ad65c7fbe46a3c70bdc0a1426e88247ce1b0d7f5 /mp/src/materialsystem/stdshaders/LightmappedGeneric_BumpmappedEnvmap.psh | |
| parent | Merge pull request #182 from ardneran/master (diff) | |
| download | source-sdk-2013-7309a5f13f63fdcc7b1e090f6c176113a9d95061.tar.xz source-sdk-2013-7309a5f13f63fdcc7b1e090f6c176113a9d95061.zip | |
Added many shader source files
This should include the latest version of every shader that was in the
2007 SDK. It also includes a smattering of debug shaders, both VR
distortion shaders, and other assorted shaders that will hopefully be
useful.
None of these new files are included in the game shader DLL project. If
you need to modify one of these shaders for use in your mod you will
need to rename it so that you don't collide with the version of that
shader that lives in stdshader_dx9.dll.
Diffstat (limited to 'mp/src/materialsystem/stdshaders/LightmappedGeneric_BumpmappedEnvmap.psh')
| -rw-r--r-- | mp/src/materialsystem/stdshaders/LightmappedGeneric_BumpmappedEnvmap.psh | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/mp/src/materialsystem/stdshaders/LightmappedGeneric_BumpmappedEnvmap.psh b/mp/src/materialsystem/stdshaders/LightmappedGeneric_BumpmappedEnvmap.psh new file mode 100644 index 00000000..ba349187 --- /dev/null +++ b/mp/src/materialsystem/stdshaders/LightmappedGeneric_BumpmappedEnvmap.psh @@ -0,0 +1,66 @@ +; STATIC: "NORMALMAPALPHAENVMAPMASK" "0..1"
+ps.1.1
+
+;------------------------------------------------------------------------------
+; Environment mapping on a bumped surface
+; t0 - Normalmap
+; t3 - Cube environment map (*must* be a cube map!)
+;
+; c0 - color to multiply the results by
+; c1 - envmap contrast
+; c2 - envmap saturation
+; c3 - grey weights
+; c4 - fresnel amount
+; Input texture coords required here are a little wonky.
+; tc0.uv <- U,V into the normal map
+; tc1.uvw, tc2.uvw, tc3.uvw <- 3x3 matrix transform
+; from tangent space->env map space
+; tc1.q, tc2.q, tc3.q <- eye vector in env map space
+;------------------------------------------------------------------------------
+
+; 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
+
+; FIXME FIXME - Need to do specialized versions of this with and without:
+; - constant color
+; - fresnel amount of exactly 0 or 1 or in between
+; - envmap contrast of 0, 1, or in between
+; - envmap saturation of 0, 1, or in between
+
+; r0 = constant color * result of bump into envmap
+mul r0.rgb, t3, c0
+
+; dot eye-vector with per-pixel normal from t0
+dp3_sat r1, v0_bx2, t0_bx2
+
+; run Fresnel approx. on it: R0 + (1-R0) (1-cos(q))^5 in alpha channel
+mul r1.rgb, r0, r0 ; color squared
++mul r0.a, 1-r1.a, 1-r1.a ; squared
+
+lrp r0.rgb, c1, r1, r0 ; blend between color and color * color
++mul r0.a, r0.a, r0.a ; quartic
+
+dp3 r1.rgb, r0, c3 ; color greyscaled
++mul r0.a, r0.a, 1-r1.a ; quintic
+
+; FIXME - these should be able to pair (I think), but don't on nvidia for some reason.
+; (I think) cannot pair due to use of >2 constants in single stage
+lrp r0.rgb, c2, r0, r1 ; blend between color and greyscale
+mad r0.a, r0.a, c6.a, c4.a ; Take Fresnel R(0) into consideration
+
+mul r0.rgb, r0, r0.a ; multiply output color by result of fresnel calc
+
+#if NORMALMAPALPHAENVMAPMASK
++mul r0.a, c0.a, t0.a ; Fade amount * alpha from the texture
+#else
++mov r0.a, c0.a ; Just use the fade amount
+#endif
+
+
|