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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2013-06-28 19:00:05 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2013-06-28 19:00:05 +0400
commite5f23c00c199f02ab55b522b2af9556666d8e801 (patch)
treeef83e5999a9bc34af00539af23a8a1755ae67527 /source/blender/render
parenta7e7b69a65b192bdf6f9a8406a2f2485218c0688 (diff)
Fix: blender internal transparent shadows were not influenced by object color alpha.
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/intern/source/shadeoutput.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/source/blender/render/intern/source/shadeoutput.c b/source/blender/render/intern/source/shadeoutput.c
index 3eeaebff92d..178d304eca2 100644
--- a/source/blender/render/intern/source/shadeoutput.c
+++ b/source/blender/render/intern/source/shadeoutput.c
@@ -924,6 +924,19 @@ void shade_color(ShadeInput *shi, ShadeResult *shr)
shr->diff[1]= shi->g;
shr->diff[2]= shi->b;
shr->alpha= shi->alpha;
+
+ /* modulate by the object color */
+ if ((ma->shade_flag & MA_OBCOLOR) && shi->obr->ob) {
+ float obcol[4];
+
+ copy_v4_v4(obcol, shi->obr->ob->col);
+ CLAMP(obcol[3], 0.0f, 1.0f);
+
+ shr->diff[0] *= obcol[0];
+ shr->diff[1] *= obcol[1];
+ shr->diff[2] *= obcol[2];
+ if (shi->mode & MA_TRANSP) shr->alpha *= obcol[3];
+ }
}
/* ramp for at end of shade */