aboutsummaryrefslogtreecommitdiff
path: root/sp/src/materialsystem/stdshaders/eyeglint_ps2x.fxc
diff options
context:
space:
mode:
Diffstat (limited to 'sp/src/materialsystem/stdshaders/eyeglint_ps2x.fxc')
-rw-r--r--sp/src/materialsystem/stdshaders/eyeglint_ps2x.fxc32
1 files changed, 32 insertions, 0 deletions
diff --git a/sp/src/materialsystem/stdshaders/eyeglint_ps2x.fxc b/sp/src/materialsystem/stdshaders/eyeglint_ps2x.fxc
new file mode 100644
index 00000000..bc39f079
--- /dev/null
+++ b/sp/src/materialsystem/stdshaders/eyeglint_ps2x.fxc
@@ -0,0 +1,32 @@
+// ======= Copyright � 1996-2007, Valve Corporation, All rights reserved. ======
+//
+// Run procedural glint generation inner loop in pixel shader (ps_2_0)
+//
+// =============================================================================
+
+struct PS_INPUT
+{
+ float2 tc : TEXCOORD0; // Interpolated coordinate of current texel
+ float2 glintCenter : TEXCOORD1; // Uniform value containing center of glint
+ float3 glintColor : TEXCOORD2; // Uniform value of color of glint
+};
+
+float GlintGaussSpotCoefficient( float2 d )
+{
+ return saturate( exp( -25.0f * dot(d, d) ) );
+}
+
+float4 main( PS_INPUT i ) : COLOR
+{
+ float2 uv = i.tc - i.glintCenter; // This texel relative to glint center
+
+ float intensity = GlintGaussSpotCoefficient( uv + float2(-0.25f, -0.25f) ) +
+ GlintGaussSpotCoefficient( uv + float2( 0.25f, -0.25f) ) +
+ 5 * GlintGaussSpotCoefficient( uv ) +
+ GlintGaussSpotCoefficient( uv + float2(-0.25f, 0.25f) ) +
+ GlintGaussSpotCoefficient( uv + float2( 0.25f, 0.25f) );
+
+ intensity *= 4.0f/9.0f;
+
+ return float4( intensity * i.glintColor, 1.0f );
+} \ No newline at end of file