Added blending type "Overlay" to options for Mix node & ramp shaders.
The description is here; it blends nicely bright parts. http://www.pegtop.net/delphi/articles/blendmodes/overlay.htm
This commit is contained in:
@@ -829,6 +829,22 @@ void ramp_blend(int type, float *r, float *g, float *b, float fac, float *col)
|
||||
*b = 1.0 - (facm + fac*(1.0 - col[2])) * (1.0 - *b);
|
||||
}
|
||||
break;
|
||||
case MA_RAMP_OVERLAY:
|
||||
if(*r < 0.5f)
|
||||
*r *= (facm + fac*col[0]);
|
||||
else
|
||||
*r = 1.0 - (facm + fac*(1.0 - col[0])) * (1.0 - *r);
|
||||
if(g) {
|
||||
if(*g < 0.5f)
|
||||
*g *= (facm + fac*col[1]);
|
||||
else
|
||||
*g = 1.0 - (facm + fac*(1.0 - col[1])) * (1.0 - *g);
|
||||
if(*b < 0.5f)
|
||||
*b *= (facm + fac*col[2]);
|
||||
else
|
||||
*b = 1.0 - (facm + fac*(1.0 - col[2])) * (1.0 - *b);
|
||||
}
|
||||
break;
|
||||
case MA_RAMP_SUB:
|
||||
*r -= fac*col[0];
|
||||
if(g) {
|
||||
|
||||
@@ -199,6 +199,7 @@ typedef struct Material {
|
||||
#define MA_RAMP_DIFF 6
|
||||
#define MA_RAMP_DARK 7
|
||||
#define MA_RAMP_LIGHT 8
|
||||
#define MA_RAMP_OVERLAY 9
|
||||
|
||||
/* texco */
|
||||
#define TEXCO_ORCO 1
|
||||
|
||||
@@ -3019,7 +3019,7 @@ static void material_panel_ramps(Material *ma)
|
||||
uiDefBut(block, LABEL, 0, "Factor",190,30,120,20, NULL, 0, 0, 0, 0, "");
|
||||
uiBlockBeginAlign(block);
|
||||
uiDefButC(block, MENU, B_MATPRV, "Shader %x0|Energy %x1|Normal %x2|Result %x3",10,10,90,20, inputc, 0, 0, 0, 0, "Input for Ramp");
|
||||
uiDefButC(block, MENU, B_MATPRV, "Mix %x0|Add %x1|Subtract %x3|Multiply %x2|Screen %x4|Divide %x5|Difference %x6|Darken %x7|Lighten %x8",110,10,90,20, methodc, 0, 0, 0, 0, "Blending method for Ramp (uses alpha in Colorband)");
|
||||
uiDefButC(block, MENU, B_MATPRV, "Mix %x0|Add %x1|Subtract %x3|Multiply %x2|Screen %x4|Overlay %x9|Divide %x5|Difference %x6|Darken %x7|Lighten %x8",110,10,90,20, methodc, 0, 0, 0, 0, "Blending method for Ramp (uses alpha in Colorband)");
|
||||
uiDefButF(block, NUMSLI, B_MATPRV, "", 190,10,120,20, facp, 0.0, 1.0, 100, 0, "Blending factor (also uses alpha in Colorband)");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -248,7 +248,7 @@ static int node_buts_mix_rgb(uiBlock *block, bNodeTree *ntree, bNode *node, rctf
|
||||
uiBut *bt;
|
||||
|
||||
/* blend type */
|
||||
bt=uiDefButS(block, MENU, B_NODE_EXEC+node->nr, "Mix %x0|Add %x1|Subtract %x3|Multiply %x2|Screen %x4|Divide %x5|Difference %x6|Darken %x7|Lighten %x8",
|
||||
bt=uiDefButS(block, MENU, B_NODE_EXEC+node->nr, "Mix %x0|Add %x1|Subtract %x3|Multiply %x2|Screen %x4|Overlay %x9|Divide %x5|Difference %x6|Darken %x7|Lighten %x8",
|
||||
butr->xmin, butr->ymin, butr->xmax-butr->xmin, 20,
|
||||
&node->custom1, 0, 0, 0, 0, "");
|
||||
uiButSetFunc(bt, node_but_title_cb, node, bt);
|
||||
|
||||
Reference in New Issue
Block a user