From f08546985f9eb244e3af6eccea6af584391e8c02 Mon Sep 17 00:00:00 2001 From: Alexander Gauggel <agauggel@uni-koblenz.de> Date: Mon, 21 Jun 2021 23:57:41 +0200 Subject: [PATCH] [#82] Fix reflection cone angle --- projects/voxelization/resources/shaders/shader.frag | 6 +++--- projects/voxelization/resources/shaders/voxel.inc | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/voxelization/resources/shaders/shader.frag b/projects/voxelization/resources/shaders/shader.frag index 42605c17..a5793542 100644 --- a/projects/voxelization/resources/shaders/shader.frag +++ b/projects/voxelization/resources/shaders/shader.frag @@ -46,8 +46,8 @@ vec3 cookTorrance(vec3 f0, float r, vec3 N, vec3 V, vec3 L){ return (F * D * G) / max(4 * NoV * NoL, 0.000001); } -float roughnessToConeAngle(float r){ - return mix(degreeToRadian(20), degreeToRadian(90), r); +float roughnessToConeAngleDegree(float r){ + return mix(degreeToRadian(3), degreeToRadian(60), r); } // from: "Next Generation Post Processing in Call Of Duty Advanced Warfare" slide page 123 @@ -99,7 +99,7 @@ void main() { vec3 diffuseTrace = diffuseVoxelTraceHemisphere(toSurface, passPos, voxelTexture, voxelSampler, voxelInfo); vec3 R = reflect(-V, N); - float reflectionConeAngle = degreeToRadian(roughnessToConeAngle(r)); + float reflectionConeAngle = roughnessToConeAngleDegree(r); vec3 offsetTraceStart = passPos + N_geo * 0.1f; offsetTraceStart += R * interleavedGradientNoise(gl_FragCoord.xy) * 0.5; vec3 specularTrace = voxelConeTrace(R, offsetTraceStart, reflectionConeAngle, voxelTexture, voxelSampler, voxelInfo); diff --git a/projects/voxelization/resources/shaders/voxel.inc b/projects/voxelization/resources/shaders/voxel.inc index 8e3fcfb6..a22ea032 100644 --- a/projects/voxelization/resources/shaders/voxel.inc +++ b/projects/voxelization/resources/shaders/voxel.inc @@ -149,7 +149,7 @@ vec3 voxelConeTrace(vec3 direction, vec3 startPosition, float coneAngleRadian, t color += (1 - a) * voxelSample.rgb; a += (1 - a) * voxelSample.a; - float minStepSize = 0.5f; + float minStepSize = 1.5f; d += max(coneDiameter, minStepSize); samplePos = startPosition + d * direction; sampleUV = worldToVoxelCoordinates(samplePos, voxelInfo); -- GitLab