diff options
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/lightprobe_lib.glsl')
-rw-r--r-- | source/blender/draw/engines/eevee/shaders/lightprobe_lib.glsl | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/lightprobe_lib.glsl b/source/blender/draw/engines/eevee/shaders/lightprobe_lib.glsl index fe4f3dcaa2f..5e78fae5b82 100644 --- a/source/blender/draw/engines/eevee/shaders/lightprobe_lib.glsl +++ b/source/blender/draw/engines/eevee/shaders/lightprobe_lib.glsl @@ -167,7 +167,7 @@ vec3 probe_evaluate_cube(int pd_id, vec3 W, vec3 R, float roughness) * http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf */ float original_roughness = roughness; - float linear_roughness = sqrt(roughness); + float linear_roughness = fast_sqrt(roughness); float distance_roughness = saturate(dist * linear_roughness / length(intersection)); linear_roughness = mix(distance_roughness, linear_roughness, linear_roughness); roughness = linear_roughness * linear_roughness; @@ -175,12 +175,14 @@ vec3 probe_evaluate_cube(int pd_id, vec3 W, vec3 R, float roughness) float fac = saturate(original_roughness * 2.0 - 1.0); R = mix(intersection, R, fac * fac); - return textureLod_cubemapArray(probeCubes, vec4(R, float(pd_id)), roughness * prbLodCubeMax).rgb; + float lod = linear_roughness * prbLodCubeMax; + return textureLod_cubemapArray(probeCubes, vec4(R, float(pd_id)), lod).rgb; } vec3 probe_evaluate_world_spec(vec3 R, float roughness) { - return textureLod_cubemapArray(probeCubes, vec4(R, 0.0), roughness * prbLodCubeMax).rgb; + float lod = fast_sqrt(roughness) * prbLodCubeMax; + return textureLod_cubemapArray(probeCubes, vec4(R, 0.0), lod).rgb; } vec3 probe_evaluate_planar(int id, PlanarData pd, vec3 W, vec3 N, vec3 V, float roughness) |