[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55735] trunk/blender/source/blender/ render/intern/source/shadeoutput.c: Fix #34803: blender internal SSS rendering black/nan with negative texture colors.
Brecht Van Lommel
brechtvanlommel at pandora.be
Tue Apr 2 19:49:31 CEST 2013
Revision: 55735
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55735
Author: blendix
Date: 2013-04-02 17:49:31 +0000 (Tue, 02 Apr 2013)
Log Message:
-----------
Fix #34803: blender internal SSS rendering black/nan with negative texture colors.
Modified Paths:
--------------
trunk/blender/source/blender/render/intern/source/shadeoutput.c
Modified: trunk/blender/source/blender/render/intern/source/shadeoutput.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/shadeoutput.c 2013-04-02 17:39:34 UTC (rev 55734)
+++ trunk/blender/source/blender/render/intern/source/shadeoutput.c 2013-04-02 17:49:31 UTC (rev 55735)
@@ -1735,15 +1735,15 @@
shr->col[0]= shr->col[1]= shr->col[2]= shr->col[3]= 1.0f;
}
else {
- shi->r= pow(shi->r, ma->sss_texfac);
- shi->g= pow(shi->g, ma->sss_texfac);
- shi->b= pow(shi->b, ma->sss_texfac);
- shi->alpha= pow(shi->alpha, ma->sss_texfac);
+ shi->r= pow(max_ff(shi->r, 0.0f), ma->sss_texfac);
+ shi->g= pow(max_ff(shi->g, 0.0f), ma->sss_texfac);
+ shi->b= pow(max_ff(shi->b, 0.0f), ma->sss_texfac);
+ shi->alpha= pow(max_ff(shi->alpha, 0.0f), ma->sss_texfac);
- shr->col[0]= pow(shr->col[0], ma->sss_texfac);
- shr->col[1]= pow(shr->col[1], ma->sss_texfac);
- shr->col[2]= pow(shr->col[2], ma->sss_texfac);
- shr->col[3]= pow(shr->col[3], ma->sss_texfac);
+ shr->col[0]= pow(max_ff(shr->col[0], 0.0f), ma->sss_texfac);
+ shr->col[1]= pow(max_ff(shr->col[1], 0.0f), ma->sss_texfac);
+ shr->col[2]= pow(max_ff(shr->col[2], 0.0f), ma->sss_texfac);
+ shr->col[3]= pow(max_ff(shr->col[3], 0.0f), ma->sss_texfac);
}
}
}
@@ -1833,9 +1833,9 @@
else {
copy_v3_v3(col, shr->col);
mul_v3_fl(col, invalpha);
- col[0]= pow(col[0], 1.0f-texfac);
- col[1]= pow(col[1], 1.0f-texfac);
- col[2]= pow(col[2], 1.0f-texfac);
+ col[0]= pow(max_ff(col[0], 0.0f), 1.0f-texfac);
+ col[1]= pow(max_ff(col[1], 0.0f), 1.0f-texfac);
+ col[2]= pow(max_ff(col[2], 0.0f), 1.0f-texfac);
}
shr->diff[0]= sss[0]*col[0];
More information about the Bf-blender-cvs
mailing list