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:
Diffstat (limited to 'source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl')
-rw-r--r--source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl12
1 files changed, 9 insertions, 3 deletions
diff --git a/source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl
index f1eacd281b1..53903a4af76 100644
--- a/source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl
+++ b/source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl
@@ -26,7 +26,7 @@ layout(std140) uniform material_block {
};
layout(location=0) out vec4 transparentAccum;
-
+layout(location=1) out float revealageAccum; /* revealage actually stored in transparentAccum.a */
void main()
{
@@ -70,7 +70,13 @@ void main()
vec3 shaded_color = diffuse_light * diffuse_color.rgb + specular_color;
- vec4 premultiplied = vec4(shaded_color.rgb * alpha, alpha);
- transparentAccum = calculate_transparent_accum(premultiplied);
+ /* Based on :
+ * McGuire and Bavoil, Weighted Blended Order-Independent Transparency, Journal of
+ * Computer Graphics Techniques (JCGT), vol. 2, no. 2, 122–141, 2013
+ */
+ /* Listing 4 */
+ float weight = calculate_transparent_weight(alpha);
+ transparentAccum = vec4(shaded_color * weight, alpha);
+ revealageAccum = weight;
}