Skip to content

Commit

Permalink
more shader examples
Browse files Browse the repository at this point in the history
  • Loading branch information
Ena-Shepherd committed May 31, 2023
1 parent 83460e5 commit 876a5b0
Show file tree
Hide file tree
Showing 3 changed files with 673 additions and 1 deletion.
80 changes: 80 additions & 0 deletions shaders/whitestar.glsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@


// Online implementation by kasari39 : https://www.shadertoy.com/embed/ttKGDt?gui=true&t=10&paused=false&muted=false


precision highp float;

uniform float iTime;
uniform vec2 iResolution;

mat2 rot(float a) {
float c = cos(a), s = sin(a);
return mat2(c,s,-s,c);
}

const float pi = acos(-1.0);
const float pi2 = pi*2.0;

vec2 pmod(vec2 p, float r) {
float a = atan(p.x, p.y) + pi/r;
float n = pi2 / r;
a = floor(a/n)*n;
return p*rot(-a);
}

float box( vec3 p, vec3 b ) {
vec3 d = abs(p) - b;
return min(max(d.x,max(d.y,d.z)),0.0) + length(max(d,0.0));
}

float ifsBox(vec3 p) {
for (int i=0; i<5; i++) {
p = abs(p) - 1.0;
p.xy *= rot(iTime*0.3);
p.xz *= rot(iTime*0.1);
}
p.xz *= rot(iTime);
return box(p, vec3(0.4,0.8,0.3));
}

float map(vec3 p, vec3 cPos) {
vec3 p1 = p;
p1.x = mod(p1.x-5., 10.) - 5.;
p1.y = mod(p1.y-5., 10.) - 5.;
p1.z = mod(p1.z, 16.)-8.;
p1.xy = pmod(p1.xy, 5.0);
return ifsBox(p1);
}

void main() {
vec2 p = (gl_FragCoord.xy * 1.0 - iResolution.xy) / min(iResolution.x, iResolution.y);

vec3 cPos = vec3(0.0,0.0, -3.0 * iTime);
// vec3 cPos = vec3(0.3*sin(iTime*0.8), 0.4*cos(iTime*0.3), -6.0 * iTime);
vec3 cDir = normalize(vec3(0.0, 0.0, -1.0));
vec3 cUp = vec3(sin(iTime), 1.0, 0.0);
vec3 cSide = cross(cDir, cUp);

vec3 ray = normalize(cSide * p.x + cUp * p.y + cDir);

// Phantom Mode https://www.shadertoy.com/view/MtScWW by aiekick
float acc = 0.0;
float acc2 = 0.0;
float t = 0.0;
for (int i = 0; i < 99; i++) {
vec3 pos = cPos + ray * t;
float dist = map(pos, cPos);
dist = max(abs(dist), 0.02);
float a = exp(-dist*3.0);
if (mod(length(pos)+24.0*iTime, 30.0) < 3.0) {
a *= 2.0;
acc2 += a;
}
acc += a;
t += dist * .5;
}

vec3 col = vec3(acc * 0.01, acc * 0.011 + acc2*0.002, acc * 0.012+ acc2*0.005);
gl_FragColor = vec4(col, 1.0 - t * 0.03);
}
Loading

0 comments on commit 876a5b0

Please sign in to comment.