From ad8abed4d2b2410488ea23f94be8f1b96717c7c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20J=C3=A4rvisalo?= Date: Fri, 1 Aug 2025 16:53:39 +0300 Subject: [PATCH] Final v1 --- src/shaders/fragment.frag | 48 ++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/src/shaders/fragment.frag b/src/shaders/fragment.frag index 0b6140a..f26fd5e 100644 --- a/src/shaders/fragment.frag +++ b/src/shaders/fragment.frag @@ -5,7 +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]; +//float u_time = syncs[0]; // paletti muunnos: arg 0.8 --> 0.5 vec3 palette(float t, float arg, float arg2){ @@ -105,14 +105,13 @@ vec2 mapScene(vec3 p) { float minDist = 1e9; for (int dx = -repeat; dx <= repeat; ++dx) { for (int dy = -repeat; dy <= repeat; ++dy) { - vec2 offset = vec2(dx, dy); vec3 hexpos = vec3(p.x-dx, p.y-8.0, p.z-dy); HexData hex = hexTile(hexpos, 1.1); float distFromCenter = hexDistance(hex.axial); int fftIndex = int(cl(distFromCenter + 1., 0.0, 511.0)); float noise = mix(noise(hex.axial+1., 0.1), noise(hex.axial+1., 0.2), sin(u_time * 4.)); - float hexHeight = cl(1.0 + (fft_output[fftIndex] * 2.0 + noise), 0., 9.); - vec3 r = vec3(hex.local.x + offset.x,hex.local.y,hex.local.z+offset.y); + float hexHeight = cl(1.0 + (fft_output[fftIndex] * 2.0) * cl(distFromCenter*0.25, 0.6, 1.5) + noise, 0., 9.); + vec3 r = vec3(hex.local.x + dx,hex.local.y,hex.local.z+dy); // r.yz *= rot2D(PI * 0.5); r.xz *= rot2D(0.5); float d = fHexagonCircumcircle(r, vec2(0.85, hexHeight)); @@ -231,19 +230,21 @@ 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.); - - float fogAmount2 = 1.0 - exp(-t * fogAmount); - float sunAmount = max(dot(rd, lightDir), 1.0); - // highlight color - vec3 fogColor = mix(vec3(0.3, 0.3, 0.3), vec3(0.2, 0.2, 0.2), // Main color - pow(sunAmount, syncsBass * 1.0)); - return mix(col, fogColor, fogAmount2); +vec3 applyFog(vec3 color, float dist, vec3 fogColor, float fogDensity) { + float fogFactor = exp(-dist * fogDensity); + return mix(fogColor, color, fogFactor); } -*/ + +//vec3 applyFog(vec3 col, float t, vec3 rd, vec3 lightDir, float fogAmount) { +// +// float syncsBass = cl((syncs[1]), 0., 1.); +// +// float fogAmount2 = 1.0 - exp(-t * fogAmount); +// float sunAmount = max(dot(rd, lightDir), 1.0); +// // highlight color +// vec3 fogColor = vec3(0.2, 0.2, 0.2); +// return mix(col, fogColor, fogAmount2); +//} /* vec3 shading(vec3 p, vec3 n, vec3 dir, vec3 caPos) { @@ -350,16 +351,17 @@ vec3 render(vec2 uv) { float bGlowDistance = 0.8; vec3 p = camPos + t.x * rayDir; - vec3 bGlowLevel = bGlowColor * exp(-(p.y + 0.0) / bGlowDistance) * 9000.; + vec3 bGlowLevel = bGlowColor * exp(-(p.y + 0.0) / bGlowDistance) * 9e3; 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)); - */ - + vec3 fogColor = vec3(0.1, 0.2, 0.3); // light gray-blue fog + float fogDensity = 5e-3; + + col = applyFog(col, t.x, fogColor, fogDensity); + //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; } @@ -369,7 +371,7 @@ void main() { //finalColor = postProcess(finalColor); finalColor = mix(finalColor, smoothstep(0.0, 1.0, finalColor), 0.8); // contrast - finalColor = pow(finalColor, vec3(.6)); // gamma 2.2 + finalColor = pow(finalColor, vec3(.4)); // gamma 2.2 o = vec4(finalColor, 1.); } \ No newline at end of file