Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2021-10-13 21:51:15 +0300
committerClément Foucault <foucault.clem@gmail.com>2021-10-13 21:51:15 +0300
commit10abaf3ddf08fc891cb7b7ce98bb2166bb1b9f14 (patch)
tree7e582a4f7a4c81e08e2d092ddf2d95f1d2ac4536 /source/blender/gpu
parentd39cd851c0ca67dff975b1c447089d319ef0816f (diff)
Fix T88766 EEVEE: Missing glossy reflections with Shader to RGB & SSR is active.
This was due to the shading evaluation being outdated inside the ShaderToRGBA glsl code.
Diffstat (limited to 'source/blender/gpu')
-rw-r--r--source/blender/gpu/shaders/material/gpu_shader_material_shader_to_rgba.glsl16
1 files changed, 12 insertions, 4 deletions
diff --git a/source/blender/gpu/shaders/material/gpu_shader_material_shader_to_rgba.glsl b/source/blender/gpu/shaders/material/gpu_shader_material_shader_to_rgba.glsl
index a5fdc7a2337..f0f2f79c60e 100644
--- a/source/blender/gpu/shaders/material/gpu_shader_material_shader_to_rgba.glsl
+++ b/source/blender/gpu/shaders/material/gpu_shader_material_shader_to_rgba.glsl
@@ -1,14 +1,22 @@
#ifndef VOLUMETRICS
+
+CLOSURE_EVAL_FUNCTION_DECLARE_1(node_shader_to_rgba, Glossy)
+
void node_shader_to_rgba(Closure cl, out vec4 outcol, out float outalpha)
{
vec4 spec_accum = vec4(0.0);
if (ssrToggle && FLAG_TEST(cl.flag, CLOSURE_SSR_FLAG)) {
- vec3 V = cameraVec(worldPosition);
+ CLOSURE_VARS_DECLARE_1(Glossy);
+
vec3 vN = normal_decode(cl.ssr_normal, viewCameraVec(viewPosition));
vec3 N = transform_direction(ViewMatrixInverse, vN);
- float roughness = cl.ssr_data.a;
- float roughnessSquared = max(1e-3, roughness * roughness);
- fallback_cubemap(N, V, worldPosition, viewPosition, roughness, roughnessSquared, spec_accum);
+
+ in_Glossy_0.N = N; /* Normalized during eval. */
+ in_Glossy_0.roughness = cl.ssr_data.a;
+
+ CLOSURE_EVAL_FUNCTION_1(node_shader_to_rgba, Glossy);
+
+ spec_accum.rgb = out_Glossy_0.radiance;
}
outalpha = saturate(1.0 - avg(cl.transmittance));