aboutsummaryrefslogtreecommitdiff
path: root/sp/src/materialsystem/stdshaders/LightmappedGeneric_BumpmappedLightmap.psh
diff options
context:
space:
mode:
Diffstat (limited to 'sp/src/materialsystem/stdshaders/LightmappedGeneric_BumpmappedLightmap.psh')
-rw-r--r--sp/src/materialsystem/stdshaders/LightmappedGeneric_BumpmappedLightmap.psh79
1 files changed, 79 insertions, 0 deletions
diff --git a/sp/src/materialsystem/stdshaders/LightmappedGeneric_BumpmappedLightmap.psh b/sp/src/materialsystem/stdshaders/LightmappedGeneric_BumpmappedLightmap.psh
new file mode 100644
index 00000000..9e55248e
--- /dev/null
+++ b/sp/src/materialsystem/stdshaders/LightmappedGeneric_BumpmappedLightmap.psh
@@ -0,0 +1,79 @@
+ps.1.1
+
+;------------------------------------------------------------------------------
+; Computes the diffuse component of lighting using lightmap + bumpmap
+; t0 - Normalmap
+; t1 - Lightmap1
+; t2 - Lightmap2
+; t3 - Lightmap3
+;
+; The texture coordinates need to be defined as follows:
+; tc0 - Normalmap and lightmap texture coordinates
+; c0, c1, c2 - Axes of the lightmap coordinate system in tangent space
+;------------------------------------------------------------------------------
+
+; Get the 3-vector from the normal map
+tex t0
+
+; Sample the lightmaps
+tex t1
+tex t2
+tex t3
+
+; output = lightmapColor[0] * ( ( N dot basis[0] )^2 ) +
+; lightmapColor[1] * ( ( N dot basis[1] )^2 ) +
+; lightmapColor[2] * ( ( N dot basis[2] )^2 ) +
+
+; r0 = ( N dot basis[0] )
+; don't "_sat" here so that everything adds up to one even if the normal is outside of the basis!!!!!
+dp3 r0, t0_bx2, c0
+
+; r1 = ( N dot basis[1] )
+dp3 r1, t0_bx2, c1
+
+;----
+; r0 = ( N dot basis[0] )
+; r1 = ( N dot basis[1] )
+;----
+
+; r0.rgb = ( N dot basis[0] )^2
+mul r0.rgb, r0, r0
+
+; r1.a = ( N dot basis[1] )^2
++mul r1.a, r1, r1
+
+;----
+; r0.rgb = ( N dot basis[0] )^2
+; r1.a = ( N dot basis[1] )^2
+;----
+
+mul t1, r0, t1
+
+;----
+; r1.a = ( N dot basis[1] )^2
+; t1 = lightmapColor[0] * ( N dot basis[0] )^2
+;----
+
+dp3 r0, t0_bx2, c2
+
+;----
+; r1.a = ( N dot basis[1] )^2
+; t1 = lightmapColor[0] * ( N dot basis[0] )^2
+; r0 = ( N dot basis[2] )
+;----
+
+mad t1.rgb, r1.a, t2, t1
++mul r0.a, r0, r0
+
+;----
+; t1.rgb = lightmapColor[0] * ( N dot basis[0] )^2 + lightmapColor[1] * ( N dot basis[1] )^2
+; r0.a = ( N dot basis[2] )^2
+;----
+
+mad r0.rgba, r0.a, t3, t1
+
+;----
+; r0.rgb = lightmapColor[0] * ( N dot basis[0] )^2 +
+; lightmapColor[1] * ( N dot basis[1] )^2 +
+; lightmapColor[2] * ( N dot basis[2] )^2
+;----