[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