diff --git a/src/shaders/fragment.frag b/src/shaders/fragment.frag index 6c1e7c3..36ae0bb 100644 --- a/src/shaders/fragment.frag +++ b/src/shaders/fragment.frag @@ -5,6 +5,7 @@ float PHI = sqrt(5.) * 0.5 + 0.5; layout(location = 0) uniform float syncs[11]; layout(location = 20) uniform float fft_output[512]; // FFT_SIZE / 4 float u_time = syncs[0]; +float u_time = syncs[0]; // paletti muunnos: arg 0.8 --> 0.5 vec3 palette(float t, float arg, float arg2){ @@ -35,7 +36,6 @@ float noise(in vec2 xy, in float seed) { // shorted functions vec3 no(vec3 v) { return normalize(v); } float cl(float a, float b, float c) { return clamp(a,b,c); } -float lev3(vec3 s) { return length(s); } float lev2(vec2 s) { return length(s); } @@ -187,7 +187,7 @@ vec3 addPointLight(vec3 lightPos, vec3 lightColor, float intensity, vec3 worldPo // Light vector from surface to light //float roughness = 1.0; vec3 lightDir = lightPos - worldPos; - float lightDistance = lev3(lightDir); + float lightDistance = length(lightDir); lightDir = no(lightDir); // Attenuation (quadratic falloff) @@ -222,9 +222,7 @@ vec3 calcNormal(vec3 pos) { } vec3 pal(float color) { - - color *= 0.2; - + //color *= 0.2; vec3 c = palette(color, 0.25, 0.63); vec3 c2 = palette(color, 0.5 ,0.2); @@ -233,6 +231,7 @@ vec3 pal(float color) { //return c2; } +/* vec3 applyFog(vec3 col, float t, vec3 rd, vec3 lightDir, float fogAmount) { float syncsBass = cl((syncs[1] + syncs[2] + syncs[3]), 0., 1.); @@ -244,21 +243,22 @@ vec3 applyFog(vec3 col, float t, vec3 rd, vec3 lightDir, float fogAmount) { pow(sunAmount, syncsBass * 1.0)); return mix(col, fogColor, fogAmount2); } +*/ -vec3 shading(vec3 p, vec3 n, vec3 dir, vec3 camPos) { +vec3 shading(vec3 p, vec3 n, vec3 dir, vec3 caPos) { vec3 outMaterial = vec3(0.0); outMaterial = pal(p.y*p.y*0.01); vec3 lights = vec3(0.); //lights += phongLighting(p, n, camPos, dir, vec3(0.51), outMaterial); - lights += addPointLight(vec3(0., 20.0, 0.), vec3(0.7, 0.3, 0.7), 20.0, p, dir, n); + lights += addPointLight(vec3(0., 20.0, 0.), vec3(0.7, 0.3, 0.7), 15.0, p, dir, n); /* // LIGHT CHANGING WITH CIRCLE RADIUS float maxRadius = 25.; // Circle radius float particleHeight = 15.; //(syncs[5] * 40.); - float particlePos = (syncs[0] * 0.5) + syncs[5]; + float particlePos = (u_time * 0.5) + syncs[5]; // Map param to angle float particleStartPos = particlePos * 2.0 * PI; @@ -277,11 +277,11 @@ vec3 shading(vec3 p, vec3 n, vec3 dir, vec3 camPos) { lights += addPointLight(objPos, vec3(0.33, 0.91, 0.93), 30.0, p, dir, n); */ - +/* vec3 lightDir = vec3(0., 2., 3); - float ind = cl(dot(n, no(lightDir * vec3(.0, 1.0, -2.0))), 0.0, 1.0); - lights += vec3(0.6, 0.6, 0.6) * ind * 0.6; + lights += vec3(0.6, 0.6, 0.6) * ind * 0.4; +*/ outMaterial *= max(vec3(0.), lights); // output with lights; @@ -332,7 +332,15 @@ vec3 render(vec2 uv) { if(t.x > 0.0) { vec3 nor = calcNormal(hitPos); - col = shading(hitPos, nor, rayDir, camPos); + //col = shading(hitPos, nor, rayDir, camPos); + + //vec3 mat = vec3(0.0); + vec3 mat = pal(hitPos.y*hitPos.y*0.01); + + //vec3 lights = vec3(0.); + vec3 lights = addPointLight(vec3(0., 20.0, 0.), vec3(0.7, 0.3, 0.7), 15.0, hitPos, rayDir, nor); + mat *= max(vec3(0.), lights); // output with lights; + col = mat; } //glow from the bottom @@ -340,13 +348,16 @@ vec3 render(vec2 uv) { float bGlowDistance = 0.8; vec3 p = camPos + t.x * rayDir; - vec3 bGlowLevel = bGlowColor * exp(-(p.y + 0.0) / bGlowDistance) * 9900.; + vec3 bGlowLevel = bGlowColor * exp(-(p.y + 0.0) / bGlowDistance) * 10000.; col += bGlowLevel; col = clamp(mix(bGlowLevel, col, t.z), 0.0, 1.0); // distance fog + bass thunder + /* float fogAmount = 0.01; col = col * exp(-t.x * fogAmount) + applyFog(col, t.x, rayDir, vec3(0., -0.5, 1.8), fogAmount) * (1.0 - exp(-t.x * fogAmount)); + */ + return col; }