summaryrefslogtreecommitdiff
path: root/materialsystem/stdshaders/cloak_blended_pass_dx8_vs11.vsh
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/cloak_blended_pass_dx8_vs11.vsh
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'materialsystem/stdshaders/cloak_blended_pass_dx8_vs11.vsh')
-rw-r--r--materialsystem/stdshaders/cloak_blended_pass_dx8_vs11.vsh104
1 files changed, 104 insertions, 0 deletions
diff --git a/materialsystem/stdshaders/cloak_blended_pass_dx8_vs11.vsh b/materialsystem/stdshaders/cloak_blended_pass_dx8_vs11.vsh
new file mode 100644
index 0000000..6333357
--- /dev/null
+++ b/materialsystem/stdshaders/cloak_blended_pass_dx8_vs11.vsh
@@ -0,0 +1,104 @@
+# DYNAMIC: "SKINNING" "0..1"
+
+vs.1.1
+#include "macros.vsh"
+
+;------------------------------------------------------------------------------
+; Vertex blending
+;------------------------------------------------------------------------------
+&AllocateRegister( \$worldPos );
+&AllocateRegister( \$worldNormal );
+&AllocateRegister( \$projPos );
+
+&SkinPositionAndNormal( $worldPos, $worldNormal );
+
+if( $SKINNING == 1 )
+{
+ &Normalize( $worldNormal );
+}
+
+;------------------------------------------------------------------------------
+; Transform the position from world to view space
+;------------------------------------------------------------------------------
+dp4 $projPos.x, $worldPos, $cViewProj0
+dp4 $projPos.y, $worldPos, $cViewProj1
+dp4 $projPos.z, $worldPos, $cViewProj2
+dp4 $projPos.w, $worldPos, $cViewProj3
+
+mov oPos, $projPos
+
+;------------------------------------------------------------------------------
+; Fog - don't bother with water fog for intro effects
+;------------------------------------------------------------------------------
+&DepthFog( $projPos, "oFog" );
+
+;------------------------------------------------------------------------------
+; Refract uv's (Code copied from predator.vsh)
+;------------------------------------------------------------------------------
+; NOTE: projPos isn't projPos after this point. :)
+
+&AllocateRegister( \$projNormal );
+
+; only do X and Y since that's all we care about
+dp3 $projNormal.x, $worldNormal, $cViewProj0
+dp3 $projNormal.y, $worldNormal, $cViewProj1
+
+; divide by z
+rcp $projPos.w, $projPos.w
+mul $projPos.xy, $projPos.w, $projPos.xy
+
+; map from -1..1 to 0..1
+mad $projPos.xy, $projPos.xy, $cHalf, $cHalf
+
+; tweak with the texcoords based on the normal and $refractionamount
+mad $projPos.xy, $projNormal.xy, -$SHADER_SPECIFIC_CONST_4.xy, $projPos.xy ; FIXME
+
+; invert y
+add $projPos.y, $cOne, -$projPos.y
+
+; hack scale for nvidia (Power of two texcoords are screwed.)
+mul oT0.xy, $projPos.xy, $SHADER_SPECIFIC_CONST_5.xy
+
+; YUCK! This is to make texcoords continuous for mat_softwaretl
+mov oT2, $cZero
+
+&FreeRegister( \$projPos );
+&FreeRegister( \$projNormal );
+
+;------------------------------------------------------------------------------
+; Refract mask
+;------------------------------------------------------------------------------
+
+; // float flFresnel = 1.0f - saturate( dot( i.vWorldNormal.xyz, normalize( -i.vWorldViewVector.xyz ) ) );
+&AllocateRegister( \$flFresnel );
+&AllocateRegister( \$tmp1 );
+
+sub $flFresnel, $worldPos, $cEyePos
+&Normalize( $flFresnel );
+dp3 $flFresnel, -$flFresnel, $worldNormal
+max $flFresnel, $flFresnel, $cZero
+sub $flFresnel, $cOne, $flFresnel
+
+; // float flCloakLerpFactor = saturate( lerp( 1.0f, flFresnel - 1.35f, saturate( g_flCloakFactor ) ) );
+&AllocateRegister( \$flCloakLerpFactor );
+
+sub $flCloakLerpFactor, $flFresnel, $SHADER_SPECIFIC_CONST_3.x ; // flFresnel - 1.35f
+mov $tmp1, $cOne
+sub $flCloakLerpFactor, $flCloakLerpFactor, $tmp1
+mad $flCloakLerpFactor, $flCloakLerpFactor, $SHADER_SPECIFIC_CONST_3.y, $tmp1
+max $flCloakLerpFactor, $flCloakLerpFactor, $cZero
+min $flCloakLerpFactor, $flCloakLerpFactor, $cOne
+
+; // flCloakLerpFactor = 1.0f - smoothstep( 0.4f, 0.425f, flCloakLerpFactor );
+sub $flCloakLerpFactor, $flCloakLerpFactor, $SHADER_SPECIFIC_CONST_3.z
+mul $flCloakLerpFactor, $flCloakLerpFactor, $SHADER_SPECIFIC_CONST_3.w
+sub $flCloakLerpFactor, $cOne, $flCloakLerpFactor
+
+mov oD0, $flCloakLerpFactor
+
+&FreeRegister( \$tmp1 );
+&FreeRegister( \$flFresnel );
+&FreeRegister( \$flCloakLerpFactor );
+
+&FreeRegister( \$worldPos );
+&FreeRegister( \$worldNormal );