summaryrefslogtreecommitdiff
path: root/materialsystem/stdshaders/vortwarp_vs20_helper.h
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/vortwarp_vs20_helper.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'materialsystem/stdshaders/vortwarp_vs20_helper.h')
-rw-r--r--materialsystem/stdshaders/vortwarp_vs20_helper.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/materialsystem/stdshaders/vortwarp_vs20_helper.h b/materialsystem/stdshaders/vortwarp_vs20_helper.h
new file mode 100644
index 0000000..f2cc2ad
--- /dev/null
+++ b/materialsystem/stdshaders/vortwarp_vs20_helper.h
@@ -0,0 +1,42 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+#include "common_vs_fxc.h"
+
+float Sine( float min, float max, float t )
+{
+ return ( sin( t ) * 0.5f + 0.5f ) * ( max - min ) + min;
+}
+
+float3 QuadraticBezier( float3 A, float3 B, float3 C, float t )
+{
+ return lerp( lerp( A, B, t ), lerp( B, C, t ), t );
+}
+
+float3 CubicBezier( float3 A, float3 B, float3 C, float3 D, float t )
+{
+ return QuadraticBezier( lerp( A, B, t ), lerp( B, C, t ), lerp( C, D, t ), t );
+}
+
+void WorldSpaceVertexProcess( in float time, in float3 modelOrigin, inout float3 worldPos, inout float3 worldNormal, inout float3 worldTangentS, inout float3 worldTangentT )
+{
+ float myTime = time;
+ myTime = saturate( 1.0f - myTime );
+ myTime *= myTime;
+ myTime *= myTime;
+ myTime *= myTime;
+// worldPos.z += 72.0f * myTime;
+
+ // end
+ float3 A = float3( 0.0f, 0.0f, 1.0f );
+ float3 B = float3( 1.0f, 1.0f, 1.0f );
+ float3 C = float3( 0.0f, 0.0f, 1.0f );
+ float3 D = float3( 0.0f, 0.0f, 1.0f );
+ // start
+
+// float3 modelOrigin = float3( 70.0f, -14.0f, 0.0f );
+
+ float t = worldPos.z * ( 1.0f / ( 72.0f ) ); // about 72 inches tall
+ t = saturate( t );
+ float3 worldPosDelta = ( worldPos - modelOrigin ) * CubicBezier( A, B, C, D, t );
+ worldPosDelta.z += Sine( 0.0f, 10.0, worldPos.z );
+ worldPos = lerp( worldPos, worldPosDelta + modelOrigin, myTime );
+}