From 1dcf95684929806e80e3d0b514c8690cd757b1bd Mon Sep 17 00:00:00 2001 From: Kevin Dietrich Date: Mon, 28 Apr 2014 17:38:34 +0200 Subject: Fix for wrong behavior of 'darken' blend mode with factor. The formula was not consistent across Blender and behaved strangely, now it is a simple linear blend between color1 and min(color1, color2). Reviewed By: brecht Differential Revision: https://developer.blender.org/D489 --- intern/cycles/kernel/shaders/node_mix.osl | 2 +- intern/cycles/kernel/svm/svm_mix.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'intern') diff --git a/intern/cycles/kernel/shaders/node_mix.osl b/intern/cycles/kernel/shaders/node_mix.osl index c2c397c6446..dd54fd814de 100644 --- a/intern/cycles/kernel/shaders/node_mix.osl +++ b/intern/cycles/kernel/shaders/node_mix.osl @@ -88,7 +88,7 @@ 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); + return min(col1, col2) * t + col1 * (1.0 - t); } color node_mix_light(float t, color col1, color col2) diff --git a/intern/cycles/kernel/svm/svm_mix.h b/intern/cycles/kernel/svm/svm_mix.h index 4e834b7c500..015925ab01e 100644 --- a/intern/cycles/kernel/svm/svm_mix.h +++ b/intern/cycles/kernel/svm/svm_mix.h @@ -89,7 +89,7 @@ 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); + return min(col1, col2)*t + col1*(1.0 - t); } ccl_device float3 svm_mix_light(float t, float3 col1, float3 col2) -- cgit v1.2.3