diff options
Diffstat (limited to 'mp/src/materialsystem/stdshaders/LightmappedGeneric_Decal.psh')
| -rw-r--r-- | mp/src/materialsystem/stdshaders/LightmappedGeneric_Decal.psh | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/mp/src/materialsystem/stdshaders/LightmappedGeneric_Decal.psh b/mp/src/materialsystem/stdshaders/LightmappedGeneric_Decal.psh new file mode 100644 index 00000000..86e627e5 --- /dev/null +++ b/mp/src/materialsystem/stdshaders/LightmappedGeneric_Decal.psh @@ -0,0 +1,47 @@ +ps.1.1
+
+;------------------------------------------------------------------------------
+; Computes the diffuse component of lighting using lightmap + bumpmap
+; t0 - decal texture
+; t1 - Lightmap1
+; t2 - Lightmap2
+; t3 - Lightmap3
+;
+; The texture coordinates need to be defined as follows:
+; tc0 - Normalmap and lightmap texture coordinates
+; c0, c1, c2 - ( ( N dot basis[0] )^2 ), ( ( N dot basis[1] )^2 ), ( ( N dot basis[2] )^2 )
+;------------------------------------------------------------------------------
+
+; Get the decal color
+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 = lightmapColor[0] * ( ( N dot basis[0] )^2 )
+mul r0, t1, c0
+
+; r0 = lightmapColor[0] * ( ( N dot basis[0] )^2 ) + lightmapColor[1] * ( ( N dot basis[1] )^2 )
+mad r0, t2, c1, r0
+
+; r0 = lightmapColor[0] * ( ( N dot basis[0] )^2 ) +
+; lightmapColor[1] * ( ( N dot basis[1] )^2 ) +
+; lightmapColor[2] * ( ( N dot basis[2] )^2 )
+mad r0, t3, c2, r0
+
+; Modulate by decal texture
+mul r0.rgb, r0, t0
++ mov r0.a, t0.a
+
+; Modulate by constant color
+mul r0, r0, c3
+
+; Modulate by per-vertex factor
+mul r0, r0, v0
+
|