diff --git a/shaders/lib/end_fog.glsl b/shaders/lib/end_fog.glsl index 9342968..115dbee 100644 --- a/shaders/lib/end_fog.glsl +++ b/shaders/lib/end_fog.glsl @@ -63,6 +63,7 @@ SOFTWARE.*/ //---------------------------------------------------------------------------------------- uniform vec4 randomPosXYZ; +uniform vec3 snapToGrid; // vec3 RandomPosition = hash31(frameTimeCounter); float vortexBoundRange = 300.0; @@ -84,8 +85,7 @@ vec3 LightSourcePosition(vec3 worldPos, vec3 cameraPos, float vortexBounds, out vec3 lightningPos = worldPos - cameraPos - ManualLightPos; // snap-to coordinates in worldspace. - float cellSize = 200.0; - lightningPos += fract(cameraPos/cellSize)*cellSize - cellSize*0.5; + lightningPos += snapToGrid; // make the position offset to random places (RNG.xyz from non-clearing buffer). vec3 lightningBoltPos = texelFetch(colortex4,ivec2(2,1),0).xyz * 2.0 - 1.0; @@ -94,9 +94,8 @@ vec3 LightSourcePosition(vec3 worldPos, vec3 cameraPos, float vortexBounds, out #ifdef THE_ORB - cellSize = 200.0; - vec3 orbpos = (worldPos - cameraPos - ManualLightPos); - orbpos += fract(cameraPos/cellSize)*cellSize - cellSize*0.5; + vec3 orbpos = (worldPos - cameraPos - ManualLightPos) - lightningBoltPos; + orbpos += snapToGrid; return orbpos; #else @@ -112,15 +111,12 @@ vec3 LightSourcePosition_VL(vec3 worldPos, vec3 cameraPos, vec3 lightningBoltPos vec3 lightningPos = worldPos - cameraPos - ManualLightPos; // snap-to coordinates in worldspace. - float cellSize = 200.0; - lightningPos += fract(cameraPos/cellSize)*cellSize - cellSize*0.5; + lightningPos += snapToGrid; lightningPos -= lightningBoltPos; #ifdef THE_ORB - cellSize = 200.0; - // vec3 orbpos = worldPos - cameraPos - ManualLightPos;// - vec3(sin(frameTimeCounter), cos(frameTimeCounter), cos(frameTimeCounter))*100; - vec3 orbpos = (worldPos - cameraPos - ManualLightPos);// - vec3(sin(frameTimeCounter), cos(frameTimeCounter), cos(frameTimeCounter))*100; - orbpos += fract(cameraPos/cellSize)*cellSize - cellSize*0.5; + vec3 orbpos = (worldPos - cameraPos - ManualLightPos) - lightningBoltPos; + orbpos += snapToGrid; return orbpos; #else diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 5eff4dd..2ec69b7 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -708,6 +708,12 @@ variable.float.randomValY = smooth(random()*2.0-1.0,transitionTrig,transitionTri variable.float.randomValZ = smooth(random()*2.0-1.0,transitionTrig,transitionTrig) uniform.vec4.randomPosXYZ = vec4(randomValX,randomValY,randomValZ, smooth(if(randomness > 0.4, 0.0,1.0),0.5,1.0) ) +variable.float.cellSize = 200.0 +variable.float.camSnapSmoothX = smooth(frac(cameraPosition.x/cellSize)*cellSize - cellSize*0.5,2,2) +variable.float.camSnapSmoothY = smooth(frac(cameraPosition.y/cellSize)*cellSize - cellSize*0.5,2,2) +variable.float.camSnapSmoothZ = smooth(frac(cameraPosition.z/cellSize)*cellSize - cellSize*0.5,2,2) +uniform.vec3.snapToGrid = vec3(camSnapSmoothX,camSnapSmoothY,camSnapSmoothZ) + # photon stuff uniform.vec2.view_res = vec2(viewWidth, viewHeight) uniform.vec2.view_pixel_size = vec2(1.0 / viewWidth, 1.0 / viewHeight)