diff --git a/projects/voxelization/resources/shaders/shader.frag b/projects/voxelization/resources/shaders/shader.frag index 7612025a0f5853f632e120a3ab2f442528541b2c..b5d1ccf6f64fd1f9256c1a51c2c5f86ba4c49f9d 100644 --- a/projects/voxelization/resources/shaders/shader.frag +++ b/projects/voxelization/resources/shaders/shader.frag @@ -82,19 +82,22 @@ float isotropicPhase(){ vec3 volumetricLighting(vec3 colorIn, vec3 V, vec3 pos, float d){ vec3 color = colorIn; - int sampleCount = 48; + int sampleCount = 20; float stepSize = d / sampleCount; vec3 extinctionCoefficient = scatteringCoefficient + absorptionCoefficient; - float noiseScale = 0.1; + float noise = 2 * pi * interleavedGradientNoise(gl_FragCoord.xy); + vec2 shadowOffset = 3.f * vec2(sin(noise), cos(noise)) / textureSize(sampler2D(shadowMap, shadowMapSampler), 0); + + float noiseScale = 0.1f; pos += V * noiseScale * interleavedGradientNoise(gl_FragCoord.xy); for(int i = 0; i < sampleCount; i++){ vec3 samplePoint = pos + V * i * stepSize; float phase = isotropicPhase(); vec3 light = lightInfo.sunColor * lightInfo.sunStrength; - float shadow = shadowTest(samplePoint, lightInfo, shadowMap, shadowMapSampler, vec2(0)); + float shadow = shadowTest(samplePoint, lightInfo, shadowMap, shadowMapSampler, shadowOffset); light *= shadow; light += volumetricAmbientLight;