aboutsummaryrefslogtreecommitdiff
path: root/src/main/resources/assets/goodgenerator/shaders/antimatter.vert.glsl
diff options
context:
space:
mode:
authorSampsa <69092953+S4mpsa@users.noreply.github.com>2024-09-12 15:03:41 +0300
committerGitHub <noreply@github.com>2024-09-12 14:03:41 +0200
commitc2faa68ac8369db571e8136962b1cac5db206dd0 (patch)
treea2e6ab7379d32e13ca3a5a8de847e99957bfdf49 /src/main/resources/assets/goodgenerator/shaders/antimatter.vert.glsl
parent07cc2ec931b0e479026e78298a7bd926019c9334 (diff)
downloadGT5-Unofficial-c2faa68ac8369db571e8136962b1cac5db206dd0.tar.gz
GT5-Unofficial-c2faa68ac8369db571e8136962b1cac5db206dd0.tar.bz2
GT5-Unofficial-c2faa68ac8369db571e8136962b1cac5db206dd0.zip
Add Antimatter Power Generation (#3117)
Co-authored-by: BlueWeabo <ilia.iliev2005@gmail.com> Co-authored-by: Mary <33456283+FourIsTheNumber@users.noreply.github.com> Co-authored-by: BucketBrigade <138534411+CookieBrigade@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/resources/assets/goodgenerator/shaders/antimatter.vert.glsl')
-rw-r--r--src/main/resources/assets/goodgenerator/shaders/antimatter.vert.glsl80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/main/resources/assets/goodgenerator/shaders/antimatter.vert.glsl b/src/main/resources/assets/goodgenerator/shaders/antimatter.vert.glsl
new file mode 100644
index 0000000000..8286a26a4f
--- /dev/null
+++ b/src/main/resources/assets/goodgenerator/shaders/antimatter.vert.glsl
@@ -0,0 +1,80 @@
+#version 120
+
+
+uniform float u_SpikeMult;
+uniform float u_Scale;
+uniform float u_ScaleSnapshot;
+uniform vec3 u_ColorCore;
+uniform vec3 u_ColorSpike;
+uniform float u_Time;
+uniform float u_TimeSnapshot;
+varying vec3 v_Color;
+
+/*
+float wave ( vec3 input){
+ return (cos(input.x + u_Time*1.2)*cos(input.y + u_Time*1.3)*cos(input.z + u_Time*1.4));
+}
+*/
+const float PI = 3.14159265358979323846;
+
+
+float lazyHash(vec3 input){
+ vec3 v = fract(input*1.23456 + 3.1456);
+ v*=7;
+ return fract(v.y + v.x*(v.z+1));
+}
+
+
+float wave ( vec3 input){
+ float val = lazyHash(input);
+ float pulse = cos(val*2*PI + u_Time)*cos(u_Time*(1+val)); // Slow save
+ return pulse;
+}
+
+float trim (float val){
+ return clamp(val - .1,0,1)/.9;
+}
+
+float amp(float x){
+ float b = smoothstep(0.,1.,x);
+ float c = pow(b,.3);
+ return c;
+}
+
+float triangle(float x){
+ return 1.0 - abs(2.0 * (x - 0.5));
+}
+
+void main() {
+ //grab local position
+ vec3 pos = gl_Vertex.xyz;
+
+ //Grabs how far the vertex is for center
+ //Antimatter.model has spikes that are 2 unit away, and the 'core' is 1 unit away
+ float len = length(pos);
+
+ //Grabs distance that remains as spike
+ float spike = len-1;
+
+ //Spike
+ float extension = wave(pos);
+ extension = abs(extension);
+ float spikeSize = extension * u_SpikeMult;
+
+ //Scale
+ float timelerp = clamp(1,0,(u_Time-u_TimeSnapshot)/2.5);
+ float scale = mix(u_ScaleSnapshot,u_Scale,timelerp)*(1 + 0.5*spike*(spikeSize - 1));
+
+ vec3 currentCoreColor = mix(u_ColorCore,u_ColorSpike,triangle(mod((u_Time/4.0 + lazyHash(pos)/2),1.0)));
+ vec3 currentSpikeColor = mix(u_ColorCore,u_ColorSpike,triangle(mod((u_Time/2.0 + lazyHash(pos)),1.0)));
+ //v_Color = mix(u_ColorCore,u_ColorSpike,extension*spike);
+ v_Color = mix(currentCoreColor,currentSpikeColor,extension*spike);
+ mat4 mScale = mat4(
+ scale,0,0,0,
+ 0,scale,0,0,
+ 0,0,scale,0,
+ 0,0,0,1);
+
+
+ gl_Position = gl_ModelViewProjectionMatrix * mScale * gl_Vertex;
+}