music with shader

4 days ago
2

#version 300 es
#define PI 3.14159265359
#define PI2 6.28318530718

// Comment or uncomment
// (Leave commented if in shadergif)
// (uncomment if in shadertoy)
//#define shadertoy 1

#ifdef shadertoy
// time is iGlobalTime in shadertoy
#define time iGlobalTime
#endif
#ifndef shadertoy
// Define some uniforms
// (which shadertoy already defines for us, but not shadergif)
precision highp float;
uniform float time;
uniform float iGlobalTime;
in vec2 UV;
out vec4 out_color;
uniform vec3 iResolution;

uniform sampler2D texture0;
#endif

float sdSegment( in vec2 p, in vec2 a, in vec2 b )
{
vec2 pa = p-a, ba = b-a;
float h = clamp( dot(pa,ba)/dot(ba,ba), 0.0, 1.0 );
return length( pa - ba*h );
}

float sdCircle( vec2 p, float r )
{
return length(p) - r;
}

// Cube function
float map(vec3 pos){
pos = fract(pos) * 2.0 - 1.0;
return sdCircle(pos.rb,.01);
//return length(max(abs(pos) - 0.2, 0.0));
}

/* Walk the ray through the scene */
float trace(vec3 o, vec3 r){
vec3 p;
float t = 0.0;
float d;

for(int i = 0; i < 30; i++){
p = o + r * t;
d = map(p);
t += d * 0.45;

if(d < 0.04){
break;
}
}

return t;
}

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 uv = fragCoord.xy / iResolution.xy;
float ratio = iResolution.x / iResolution.y;
uv.x *= ratio;

vec4 col = vec4(1.0);

vec2 pos = uv - vec2(0.5 * ratio, 0.5);

// Create ray (with position and origin)
vec3 r,o;

r = normalize(vec3(pos, 1.0));
o = vec3(0.0);
o.z += time;

// Trace
float t = trace(o, r);

vec4 col0 = vec4(.4,.2,.4,.0);
vec4 col1 = vec4(1.8,.8,.8,0.);
vec4 col2 = vec4(1.,.5,0.,0);
// Fog function

vec4 tc = texture(texture0, UV * vec2(1.0, -1.0) + vec2(0.0, 1.0));

col -= 1.3 / (1.0 + t * t * 0.06)*tc;

if (uv.y<.5){
col += pow(.5-uv.y,2.)*2.+(t*t*t)*.0001*col1;
} else {
col += (uv.y-.5)*(1.+t*t*.005)*col2;
}

col.a = 1.0;

fragColor = col;
}

#ifndef shadertoy
void main(){
vec2 uv = UV.xy * iResolution.xy;
vec4 col;

mainImage(col, uv);

out_color = col;
}
#endif

Loading 1 comment...