summaryrefslogtreecommitdiff
path: root/materialsystem/stdshaders/IntroScreenSpaceEffect_ps11.fxc
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /materialsystem/stdshaders/IntroScreenSpaceEffect_ps11.fxc
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'materialsystem/stdshaders/IntroScreenSpaceEffect_ps11.fxc')
-rw-r--r--materialsystem/stdshaders/IntroScreenSpaceEffect_ps11.fxc111
1 files changed, 111 insertions, 0 deletions
diff --git a/materialsystem/stdshaders/IntroScreenSpaceEffect_ps11.fxc b/materialsystem/stdshaders/IntroScreenSpaceEffect_ps11.fxc
new file mode 100644
index 0000000..7945de0
--- /dev/null
+++ b/materialsystem/stdshaders/IntroScreenSpaceEffect_ps11.fxc
@@ -0,0 +1,111 @@
+// DYNAMIC: "MODE" "0..9"
+
+#include "common_ps_fxc.h"
+
+const float g_Alpha : register( c0 );
+
+sampler BaseTextureSampler : register( s0 );
+sampler BaseTextureSampler2 : register( s1 );
+
+struct PS_INPUT
+{
+ float2 baseTexCoord : TEXCOORD0;
+ float2 baseTexCoord2 : TEXCOORD1;
+};
+
+HALF Grey( HALF3 input )
+{
+ return dot( ( float3 )( 1.0f / 3.0f ), input );
+}
+
+HALF4 main( PS_INPUT i ) : COLOR
+{
+ float3 scene = tex2D( BaseTextureSampler, i.baseTexCoord );
+ float3 gman = tex2D( BaseTextureSampler2, i.baseTexCoord2 );
+
+#if MODE == 0
+ // negative greyscale of scene * gman
+ float scale = 1.0f / 3.0f;
+ scene.xyz = dot( float3( scale, scale, scale), scene.xyz );
+ scene = 1.0f - scene;
+
+ return float4( scene * gman, g_Alpha );
+#endif
+
+#if MODE == 1
+ if( Grey( gman ) < 0.3 )
+ {
+ return float4( 1.0f - gman, g_Alpha );
+ }
+ else
+ {
+ return float4( ( 1.0f - gman ) * scene, g_Alpha );
+ }
+#endif
+
+#if MODE == 2
+ return float4( lerp( scene, gman, g_Alpha ), g_Alpha );
+#endif
+
+#if MODE == 3
+ return float4( lerp( scene, Grey( gman ), Grey( gman ) ), g_Alpha );
+#endif
+
+#if MODE == 4
+ return float4( lerp( scene, gman, g_Alpha ), g_Alpha );
+#endif
+
+#if MODE == 5
+ float sceneLum = scene.r;
+ if( sceneLum > 0.0f )
+ {
+ return float4( scene, g_Alpha );
+ }
+ else
+ {
+ return float4( gman, g_Alpha );
+ }
+#endif
+
+#if MODE == 6
+ return float4( scene + gman, g_Alpha );
+#endif
+
+#if MODE == 7
+ return float4( scene, g_Alpha );
+#endif
+
+#if MODE == 8
+ return float4( lerp( scene, gman, g_Alpha ), g_Alpha );
+#endif
+
+#if MODE == 9
+ /*
+ float3 cGammaLayer1 = scene;
+ float3 cGammaLayer2 = gman;
+
+ float flLayer1Brightness = saturate( dot( cGammaLayer1.rgb, float3( 0.333f, 0.334f, 0.333f ) ) );
+
+ float3 cGammaOverlayResult;
+ if ( flLayer1Brightness < 0.5f )
+ {
+ cGammaOverlayResult.rgb = ( 2.0f * cGammaLayer1.rgb * cGammaLayer2.rgb );
+ }
+ else
+ {
+ cGammaOverlayResult.rgb = ( 1.0f - ( 2.0f * ( 1.0f - cGammaLayer1.rgb ) * ( 1.0f - cGammaLayer2.rgb ) ) );
+ }
+ //*/
+
+ float3 cLayer1 = scene;
+ float3 cLayer2 = gman;
+
+ float flLayer1Brightness = saturate( dot( cLayer1.rgb, float3( 0.333f, 0.334f, 0.333f ) ) );
+
+ // Modify layer 1 to be more contrasty.
+ cLayer1.rgb = saturate( cLayer1.rgb * cLayer1.rgb * 2.0f );
+ float3 cGammaOverlayResult = cLayer1.rgb + cLayer2.rgb * saturate( 1.0f - flLayer1Brightness * 2.0f );
+
+ return float4( cGammaOverlayResult.rgb, g_Alpha );
+#endif
+}