[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23102] branches/blender2.5/blender/source /blender: committing patch #19252-Soft/ Linear Light blend modes+Darken mode bug fix

Robert Holcomb bob_holcomb at hotmail.com
Thu Sep 10 05:00:50 CEST 2009


Revision: 23102
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23102
Author:   scourage
Date:     2009-09-10 05:00:50 +0200 (Thu, 10 Sep 2009)

Log Message:
-----------
committing patch #19252-Soft/Linear Light blend modes+Darken mode bug fix

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/intern/material.c
    branches/blender2.5/blender/source/blender/editors/space_node/drawnode.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_material_types.h
    branches/blender2.5/blender/source/blender/makesdna/DNA_texture_types.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_material.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_texture.c
    branches/blender2.5/blender/source/blender/render/intern/source/texture.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/material.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/material.c	2009-09-10 02:57:25 UTC (rev 23101)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/material.c	2009-09-10 03:00:50 UTC (rev 23102)
@@ -1031,15 +1031,15 @@
 			}
 				break;
 		case MA_RAMP_DARK:
-			tmp= fac*col[0];
-			if(tmp < *r) *r= tmp; 
-				if(g) {
-					tmp= fac*col[1];
-					if(tmp < *g) *g= tmp; 
-					tmp= fac*col[2];
-					if(tmp < *b) *b= tmp; 
-				}
-					break;
+            tmp=col[0]+((1-col[0])*facm); 
+            if(tmp < *r) *r= tmp; 
+            if(g) { 
+                tmp=col[1]+((1-col[1])*facm); 
+                if(tmp < *g) *g= tmp; 
+                tmp=col[2]+((1-col[2])*facm); 
+                if(tmp < *b) *b= tmp; 
+            } 
+                break; 
 		case MA_RAMP_LIGHT:
 			tmp= fac*col[0];
 			if(tmp > *r) *r= tmp; 
@@ -1169,8 +1169,37 @@
 				}
 			}
 				break;
-	}
-	
+        case MA_RAMP_SOFT: 
+            if (g){ 
+                float scr, scg, scb; 
+                 
+                /* first calculate non-fac based Screen mix */ 
+                scr = 1.0 - ((1.0 - col[0])) * (1.0 - *r); 
+                scg = 1.0 - ((1.0 - col[1])) * (1.0 - *g); 
+                scb = 1.0 - ((1.0 - col[2])) * (1.0 - *b); 
+                 
+                *r = facm*(*r) + fac*(((1.0 - *r) * col[0] * (*r)) + (*r * scr)); 
+                *g = facm*(*g) + fac*(((1.0 - *g) * col[1] * (*g)) + (*g * scg)); 
+                *b = facm*(*b) + fac*(((1.0 - *b) * col[2] * (*b)) + (*b * scb)); 
+            } 
+                break; 
+        case MA_RAMP_LINEAR: 
+            if (col[0] > 0.5)  
+                *r = *r + fac*(2*(col[0]-0.5)); 
+            else  
+                *r = *r + fac*(2*(col[0]) - 1); 
+            if (g){ 
+                if (col[1] > 0.5)  
+                    *g = *g + fac*(2*(col[1]-0.5)); 
+                else  
+                    *g = *g + fac*(2*(col[1]) -1); 
+                if (col[2] > 0.5)  
+                    *b = *b + fac*(2*(col[2]-0.5)); 
+                else  
+                    *b = *b + fac*(2*(col[2]) - 1); 
+            } 
+                break; 
+	}	
 }
 
 

Modified: branches/blender2.5/blender/source/blender/editors/space_node/drawnode.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/drawnode.c	2009-09-10 02:57:25 UTC (rev 23101)
+++ branches/blender2.5/blender/source/blender/editors/space_node/drawnode.c	2009-09-10 03:00:50 UTC (rev 23102)
@@ -247,7 +247,7 @@
 		
 		/* blend type */
 		uiBlockBeginAlign(block);
-		bt=uiDefButS(block, MENU, B_NODE_EXEC, "Mix %x0|Add %x1|Subtract %x3|Multiply %x2|Screen %x4|Overlay %x9|Divide %x5|Difference %x6|Darken %x7|Lighten %x8|Dodge %x10|Burn %x11|Color %x15|Value %x14|Saturation %x13|Hue %x12",
+		bt=uiDefButS(block, MENU, B_NODE_EXEC, "Mix %x0|Add %x1|Subtract %x3|Multiply %x2|Screen %x4|Overlay %x9|Divide %x5|Difference %x6|Darken %x7|Lighten %x8|Dodge %x10|Burn %x11|Color %x15|Value %x14|Saturation %x13|Hue %x12|Soft Light %x16|Linear Light %x17", 
 					 (short)butr->xmin, (short)butr->ymin, butr->xmax-butr->xmin -(a_but?20:0), 20, 
 					 &node->custom1, 0, 0, 0, 0, "");
 		uiButSetFunc(bt, node_but_title_cb, node, bt);

Modified: branches/blender2.5/blender/source/blender/makesdna/DNA_material_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesdna/DNA_material_types.h	2009-09-10 02:57:25 UTC (rev 23101)
+++ branches/blender2.5/blender/source/blender/makesdna/DNA_material_types.h	2009-09-10 03:00:50 UTC (rev 23102)
@@ -279,6 +279,8 @@
 #define MA_RAMP_SAT			13
 #define MA_RAMP_VAL			14
 #define MA_RAMP_COLOR		15
+#define MA_RAMP_SOFT        16 
+#define MA_RAMP_LINEAR      17 
 
 /* texco */
 #define TEXCO_ORCO		1

Modified: branches/blender2.5/blender/source/blender/makesdna/DNA_texture_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesdna/DNA_texture_types.h	2009-09-10 02:57:25 UTC (rev 23101)
+++ branches/blender2.5/blender/source/blender/makesdna/DNA_texture_types.h	2009-09-10 03:00:50 UTC (rev 23102)
@@ -448,6 +448,8 @@
 #define MTEX_BLEND_VAL		12
 #define MTEX_BLEND_COLOR	13
 #define MTEX_NUM_BLENDTYPES	14
+#define MTEX_SOFT_LIGHT     15 
+#define MTEX_LIN_LIGHT      16
 
 /* brush_map_mode */
 #define MTEX_MAP_MODE_FIXED    0

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_material.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_material.c	2009-09-10 02:57:25 UTC (rev 23101)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_material.c	2009-09-10 03:00:50 UTC (rev 23102)
@@ -616,6 +616,8 @@
 		{MA_RAMP_SAT, "SATURATION", 0, "Saturation", ""},
 		{MA_RAMP_VAL, "VALUE", 0, "Value", ""},
 		{MA_RAMP_COLOR, "COLOR", 0, "Color", ""},
+        {MA_RAMP_SOFT, "SOFT LIGHT", 0, "Soft Light", ""}, 
+        {MA_RAMP_LINEAR, "LINEAR LIGHT", 0, "Linear Light", ""}, 
 		{0, NULL, 0, NULL, NULL}};
 
 	static EnumPropertyItem prop_ramp_input_items[] = {

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_texture.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_texture.c	2009-09-10 02:57:25 UTC (rev 23101)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_texture.c	2009-09-10 03:00:50 UTC (rev 23102)
@@ -374,6 +374,8 @@
 		{MTEX_BLEND_SAT, "SATURATION", 0, "Saturation", ""},
 		{MTEX_BLEND_VAL, "VALUE", 0, "Value", ""},
 		{MTEX_BLEND_COLOR, "COLOR", 0, "Color", ""},
+        {MTEX_SOFT_LIGHT, "SOFT LIGHT", 0, "Soft Light", ""}, 
+        {MTEX_LIN_LIGHT    , "LINEAR LIGHT", 0, "Linear Light", ""}, 
 		{0, NULL, 0, NULL, NULL}};
 
 	static EnumPropertyItem prop_map_mode_items[] = {

Modified: branches/blender2.5/blender/source/blender/render/intern/source/texture.c
===================================================================
--- branches/blender2.5/blender/source/blender/render/intern/source/texture.c	2009-09-10 02:57:25 UTC (rev 23101)
+++ branches/blender2.5/blender/source/blender/render/intern/source/texture.c	2009-09-10 03:00:50 UTC (rev 23102)
@@ -1455,12 +1455,22 @@
 		VECCOPY(in, out);
 		ramp_blend(MA_RAMP_COLOR, in, in+1, in+2, fact, tex);
 		break;
+    case MTEX_SOFT_LIGHT: 
+        fact*= facg; 
+        VECCOPY(in, out); 
+        ramp_blend(MA_RAMP_SOFT, in, in+1, in+2, fact, tex); 
+        break; 
+    case MTEX_LIN_LIGHT: 
+        fact*= facg; 
+        VECCOPY(in, out); 
+        ramp_blend(MA_RAMP_LINEAR, in, in+1, in+2, fact, tex); 
+        break; 
 	}
 }
 
 float texture_value_blend(float tex, float out, float fact, float facg, int blendtype, int flip)
 {
-	float in=0.0, facm, col;
+	float in=0.0, facm, col, scf;
 	
 	fact*= facg;
 	facm= 1.0-fact;
@@ -1505,6 +1515,19 @@
 		col= fact*tex;
 		if(col > out) in= col; else in= out;
 		break;
+
+    case MTEX_SOFT_LIGHT: 
+        col= fact*tex; 
+        scf=1.0 - (1.0 - tex) * (1.0 - out); 
+        in= facm*out + fact * ((1.0 - out) * tex * out) + (out * scf); 
+        break;       
+
+    case MTEX_LIN_LIGHT: 
+        if (tex > 0.5) 
+            in = out + fact*(2*(tex - 0.5)); 
+        else 
+            in = out + fact*(2*tex - 1); 
+        break;
 	}
 	
 	return in;





More information about the Bf-blender-cvs mailing list