[Bf-blender-cvs] [4074ab361e1] master: Eevee: Fix background alpha regression
Clément Foucault
noreply at git.blender.org
Wed Aug 14 14:29:06 CEST 2019
Commit: 4074ab361e13444ae9a5d6b8bdf973fce2302021
Author: Clément Foucault
Date: Wed Aug 14 14:28:57 2019 +0200
Branches: master
https://developer.blender.org/rB4074ab361e13444ae9a5d6b8bdf973fce2302021
Eevee: Fix background alpha regression
===================================================================
M source/blender/gpu/intern/gpu_codegen.c
M source/blender/gpu/shaders/gpu_shader_material.glsl
===================================================================
diff --git a/source/blender/gpu/intern/gpu_codegen.c b/source/blender/gpu/intern/gpu_codegen.c
index 6d9fda1c695..3e635b3198a 100644
--- a/source/blender/gpu/intern/gpu_codegen.c
+++ b/source/blender/gpu/intern/gpu_codegen.c
@@ -929,12 +929,15 @@ static char *code_generate_fragment(GPUMaterial *material,
/* XXX This cannot go into gpu_shader_material.glsl because main()
* would be parsed and generate error */
/* Old glsl mode compat. */
+ /* TODO(fclem) This is only used by world shader now. get rid of it? */
BLI_dynstr_append(ds, "#ifndef NODETREE_EXEC\n");
BLI_dynstr_append(ds, "out vec4 fragColor;\n");
BLI_dynstr_append(ds, "void main()\n");
BLI_dynstr_append(ds, "{\n");
BLI_dynstr_append(ds, "\tClosure cl = nodetree_exec();\n");
- BLI_dynstr_append(ds, "\tfragColor = vec4(cl.radiance, saturate(avg(cl.transmittance)));\n");
+ BLI_dynstr_append(ds,
+ "\tfragColor = vec4(cl.radiance, "
+ "saturate(1.0 - avg(cl.transmittance)));\n");
BLI_dynstr_append(ds, "}\n");
BLI_dynstr_append(ds, "#endif\n\n");
diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl
index 7cb38503039..f077ae55d8f 100644
--- a/source/blender/gpu/shaders/gpu_shader_material.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_material.glsl
@@ -3515,7 +3515,7 @@ void node_output_world(Closure surface, Closure volume, out Closure result)
{
#ifndef VOLUMETRICS
result.radiance = surface.radiance * backgroundAlpha;
- result.transmittance = vec3(0.0);
+ result.transmittance = vec3(1.0 - backgroundAlpha);
#else
result = volume;
#endif /* VOLUMETRICS */
More information about the Bf-blender-cvs
mailing list