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; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs