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