diff options
author | Sampsa <69092953+S4mpsa@users.noreply.github.com> | 2024-09-12 15:03:41 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-12 14:03:41 +0200 |
commit | c2faa68ac8369db571e8136962b1cac5db206dd0 (patch) | |
tree | a2e6ab7379d32e13ca3a5a8de847e99957bfdf49 /src/main/resources/assets/goodgenerator/shaders/antimatter.vert.glsl | |
parent | 07cc2ec931b0e479026e78298a7bd926019c9334 (diff) | |
download | GT5-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.glsl | 80 |
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; +} |