Fix T70605: incorrect darken and lighten rgb mix mode

Differential Revision: https://developer.blender.org/D6058

Reviewers: brecht, fclem
This commit is contained in:
Jacques Lucke 2019-10-15 17:31:44 +02:00
parent c2a7e79047
commit 2a9b162d94
3 changed files with 6 additions and 6 deletions

@ -91,12 +91,12 @@ color node_mix_diff(float t, color col1, color col2)
color node_mix_dark(float t, color col1, color col2)
{
return min(col1, col2) * t + col1 * (1.0 - t);
return mix(col1, min(col1, col2), t);
}
color node_mix_light(float t, color col1, color col2)
{
return max(col1, col2 * t);
return mix(col1, max(col1, col2), t);
}
color node_mix_dodge(float t, color col1, color col2)

@ -92,12 +92,12 @@ ccl_device float3 svm_mix_diff(float t, float3 col1, float3 col2)
ccl_device float3 svm_mix_dark(float t, float3 col1, float3 col2)
{
return min(col1, col2) * t + col1 * (1.0f - t);
return interp(col1, min(col1, col2), t);
}
ccl_device float3 svm_mix_light(float t, float3 col1, float3 col2)
{
return max(col1, col2 * t);
return interp(col1, max(col1, col2), t);
}
ccl_device float3 svm_mix_dodge(float t, float3 col1, float3 col2)

@ -92,14 +92,14 @@ void mix_diff(float fac, vec4 col1, vec4 col2, out vec4 outcol)
void mix_dark(float fac, vec4 col1, vec4 col2, out vec4 outcol)
{
fac = clamp(fac, 0.0, 1.0);
outcol.rgb = min(col1.rgb, col2.rgb * fac);
outcol.rgb = mix(col1.rgb, min(col1.rgb, col2.rgb), fac);
outcol.a = col1.a;
}
void mix_light(float fac, vec4 col1, vec4 col2, out vec4 outcol)
{
fac = clamp(fac, 0.0, 1.0);
outcol.rgb = max(col1.rgb, col2.rgb * fac);
outcol.rgb = mix(col1.rgb, max(col1.rgb, col2.rgb), fac);
outcol.a = col1.a;
}