Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/blenkernel/intern/node_composite.c55
-rw-r--r--source/blender/src/drawnode.c34
-rw-r--r--source/blender/src/header_node.c2
-rw-r--r--source/blender/src/toolbox.c4
4 files changed, 47 insertions, 48 deletions
diff --git a/source/blender/blenkernel/intern/node_composite.c b/source/blender/blenkernel/intern/node_composite.c
index 1139ceabd43..37ca94c2b64 100644
--- a/source/blender/blenkernel/intern/node_composite.c
+++ b/source/blender/blenkernel/intern/node_composite.c
@@ -3647,7 +3647,7 @@ static void node_composit_exec_diff_matte(void *data, bNode *node, bNodeStack **
static bNodeType cmp_node_diff_matte={
/* type code */ CMP_NODE_DIFF_MATTE,
- /* name */ "Channel Difference Matte",
+ /* name */ "Difference Key",
/* width+range */ 200, 80, 250,
/* class+opts */ NODE_CLASS_MATTE, NODE_PREVIEW|NODE_OPTIONS,
/* input sock */ cmp_node_diff_matte_in,
@@ -3756,7 +3756,6 @@ static bNodeType cmp_node_color_spill={
/* ******************* Chroma Key ********************************************************** */
static bNodeSocketType cmp_node_chroma_in[]={
{SOCK_RGBA,1,"Image", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
- {SOCK_RGBA,1,"Key Color", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
{-1,0,""}
};
@@ -3788,8 +3787,6 @@ static void do_chroma_key(bNode *node, float *out, float *in)
{
/* Algorithm of my own design-Bob Holcomb */
- /* alpha value is written to in[3] because it is done "in place" so that the value gets copied to the rgbbuffer in
- the second pixel processor opertation */
NodeChroma *c;
float x, z, alpha;
@@ -3814,14 +3811,18 @@ static void do_chroma_key(bNode *node, float *out, float *in)
break;
}
- /*is chroma values (added) less than strenght?*/
+ /*clamp to zero so that negative values don' affect the other channels input */
+ if(x<0.0) x=0.0;
+ if(z<0.0) z=0.0;
+
+ /*if chroma values (addes are less than strength then it is a key value */
if((x+z) < c->fstrength) {
- alpha=ABS(c->key[0]-in[0]); /*differnce in luminence*/
- if(alpha > c->falpha) alpha=0;
- in[3]=alpha;
- }
- else {
- in[3]=1.0;
+ alpha=(x+z);
+ alpha=in[0]+alpha; /*add in the luminence for detail */
+ if(alpha > c->falpha) alpha=0; /* if below the threshold */
+ if(alpha < in[3]) { /* is it less than the previous alpha */
+ out[3]=alpha;
+ }
}
}
@@ -3841,18 +3842,15 @@ static void node_composit_exec_chroma(void *data, bNode *node, bNodeStack **in,
chromabuf= dupalloc_compbuf(rgbbuf);
c=node->storage;
- c->key[0]= in[1]->vec[0];
- c->key[1]= in[1]->vec[1];
- c->key[2]= in[1]->vec[2];
/*convert rgbbuf to normalized chroma space*/
- composit1_pixel_processor(node, chromabuf, inbuf, in[1]->vec, do_rgba_to_ycca_normalized, CB_RGBA);
+ composit1_pixel_processor(node, chromabuf, inbuf, in[0]->vec, do_rgba_to_ycca_normalized, CB_RGBA);
/*per pixel chroma key*/
- composit1_pixel_processor(node, rgbbuf, chromabuf, in[1]->vec, do_chroma_key, CB_RGBA);
+ composit1_pixel_processor(node, chromabuf, chromabuf, in[0]->vec, do_chroma_key, CB_RGBA);
/*convert back*/
- composit1_pixel_processor(node, rgbbuf, chromabuf, in[1]->vec, do_normalized_ycca_to_rgba, CB_RGBA);
+ composit1_pixel_processor(node, rgbbuf, chromabuf, in[0]->vec, do_normalized_ycca_to_rgba, CB_RGBA);
/*cleanup */
free_compbuf(chromabuf);
@@ -3878,7 +3876,6 @@ static bNodeType cmp_node_chroma={
/* ******************* Luminence Key ********************************************************** */
static bNodeSocketType cmp_node_luma_in[]={
{SOCK_RGBA,1,"Image", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
- {SOCK_RGBA,1,"Key Color", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
{-1,0,""}
};
@@ -3892,18 +3889,16 @@ static void do_luma_key(bNode *node, float *out, float *in)
{
/* Algorithm from Video Demistified */
- /* alpha value is written to in[3] because it is done in place for the conversion back to rgb space in
- second pixel processor */
-
NodeChroma *c;
+ float alpha;
c=node->storage;
if(in[0] > c->t1) { /*Luminence is greater than high, then foreground */
- in[3]=1.0;
+ out[3]=in[3]; /* or whatever it was prior */
}
else if(in[0] <c->t2) {/*Luminence is less than low, then background */
- in[3]=0.0;
+ out[3]=0.0;
}
else { /*key value from mix*/
@@ -3913,7 +3908,11 @@ static void do_luma_key(bNode *node, float *out, float *in)
}
/*mix*/
- in[3]=(in[0]-c->t2)/(c->t1-c->t2);
+ alpha=(in[0]-c->t2)/(c->t1-c->t2);
+ if(alpha < in[3]) /*if less thatn previous value */
+ {
+ out[3]=alpha;
+ }
}
}
@@ -3932,13 +3931,13 @@ static void node_composit_exec_luma(void *data, bNode *node, bNodeStack **in, bN
chromabuf= dupalloc_compbuf(rgbbuf);
/*convert rgbbuf to normalized chroma space*/
- composit1_pixel_processor(node, chromabuf, inbuf, in[1]->vec, do_rgba_to_ycca_normalized, CB_RGBA);
+ composit1_pixel_processor(node, chromabuf, inbuf, in[0]->vec, do_rgba_to_ycca_normalized, CB_RGBA);
- /*per pixel chroma key*/
- composit1_pixel_processor(node, rgbbuf, chromabuf, in[1]->vec, do_luma_key, CB_RGBA);
+ /*per pixel luma key*/
+ composit1_pixel_processor(node, chromabuf, chromabuf, in[0]->vec, do_luma_key, CB_RGBA);
/*convert back*/
- composit1_pixel_processor(node, rgbbuf, chromabuf, in[1]->vec, do_normalized_ycca_to_rgba, CB_RGBA);
+ composit1_pixel_processor(node, rgbbuf, chromabuf, in[0]->vec, do_normalized_ycca_to_rgba, CB_RGBA);
/*cleanup */
free_compbuf(chromabuf);
diff --git a/source/blender/src/drawnode.c b/source/blender/src/drawnode.c
index 8d4b44a0039..a42ae4e722d 100644
--- a/source/blender/src/drawnode.c
+++ b/source/blender/src/drawnode.c
@@ -1094,7 +1094,7 @@ static int node_composit_buts_color_spill(uiBlock *block, bNodeTree *ntree, bNod
uiBlockBeginAlign(block);
uiDefButF(block, NUM, B_NODE_EXEC+node->nr, "Enhance: ",
butr->xmin, butr->ymin+20.0, butr->xmax-butr->xmin, 20,
- &c->t1, 0.0f, 0.5f, 100, 2, "");
+ &c->t1, 0.0f, 0.5f, 100, 2, "Adjusts how much selected channel is affected by color spill algorithm");
uiDefButS(block, ROW, B_NODE_EXEC+node->nr, "R",
butr->xmin,butr->ymin,dx,20,
&node->custom1,1,1, 0, 0, "Red Spill Suppression");
@@ -1119,33 +1119,33 @@ static int node_composit_buts_chroma_matte(uiBlock *block, bNodeTree *ntree, bNo
uiDefButS(block, ROW, B_NODE_EXEC+node->nr,"Green",
butr->xmin,butr->ymin+80,dx,20,
- &node->custom1,1,1, 0, 0, "Green Background");
+ &node->custom1,1,1, 0, 0, "Select if using a green background");
uiDefButS(block, ROW, B_NODE_EXEC+node->nr,"Blue",
butr->xmin+dx,butr->ymin+80,dx,20,
- &node->custom1,1,2, 0, 0, "Blue Background");
+ &node->custom1,1,2, 0, 0, "Select if using a blue background");
- uiDefButF(block, NUM, B_NODE_EXEC+node->nr, "Cb Slope ",
+ uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "Cb Slope ",
butr->xmin, butr->ymin+60, dx, 20,
- &c->t1, 0.0f, 20.0f, 100, 0, " ");
+ &c->t1, 0.0f, 20.0f, 100, 0, "Adjusts the weight a pixel's value has in determining if it is a key color");
- uiDefButF(block, NUM, B_NODE_EXEC+node->nr, "Cr slope ",
+ uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "Cr slope ",
butr->xmin+dx, butr->ymin+60, dx, 20,
- &c->t3, 0.0f, 20.0f, 100, 0, " ");
+ &c->t3, 0.0f, 20.0f, 100, 0, "Adjusts the weight a pixel's value has in determining if it is a key color");
- uiDefButF(block, NUM, B_NODE_EXEC+node->nr, "Cb Pos ",
+ uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "Cb Pos ",
butr->xmin, butr->ymin+40, dx, 20,
- &c->t2, 0.0f, 1.0f, 100, 0, " ");
+ &c->t2, 0.0f, 1.0f, 100, 0, "Pixel values less than this setting are considered a key color");
- uiDefButF(block, NUM, B_NODE_EXEC+node->nr, "Cr pos ",
+ uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "Cr pos ",
butr->xmin+dx, butr->ymin+40, dx, 20,
- &c->fsize, 0.0f, 1.0f, 100, 0, " ");
+ &c->fsize, 0.0f, 1.0f, 100, 0, "Pixel values less than this setting are considered a key color");
- uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "Threshold ",
- butr->xmin, butr->ymin+20, butr->xmax-butr->xmin, 20,
- &c->fstrength, 0.0f, 0.25f, 100, 0, " ");
uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "Alpha Threshold ",
+ butr->xmin, butr->ymin+20, butr->xmax-butr->xmin, 20,
+ &c->fstrength, 0.0f, 0.25f, 100, 0, "Key colored pixels below this setting are considered transparent");
+ uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "Detail Threshold ",
butr->xmin, butr->ymin, butr->xmax-butr->xmin, 20,
- &c->falpha, 0.0f, 1.0f, 100, 0, " ");
+ &c->falpha, 0.0f, 1.0f, 100, 0, "Keyed pixels below this setting are not processed for detail alpha adjustment");
}
return 100;
}
@@ -1157,10 +1157,10 @@ static int node_composit_buts_luma_matte(uiBlock *block, bNodeTree *ntree, bNode
uiBlockBeginAlign(block);
uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "High ",
butr->xmin, butr->ymin+20.0, butr->xmax-butr->xmin, 20,
- &c->t1, 0.0f, 1.0f, 100, 0, "");
+ &c->t1, 0.0f, 1.0f, 100, 0, "Luminance values higher than this setting are 100% opaque");
uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "Low ",
butr->xmin, butr->ymin, butr->xmax-butr->xmin, 20,
- &c->t2, 0.0f, 1.0f, 100, 0, "");
+ &c->t2, 0.0f, 1.0f, 100, 0, "Luminance values lower than this setting are 100% keyed");
uiBlockEndAlign(block);
/*keep t2 (low) less than t1 (high) */
diff --git a/source/blender/src/header_node.c b/source/blender/src/header_node.c
index 5ee9a7c1dcf..a29c94cf45d 100644
--- a/source/blender/src/header_node.c
+++ b/source/blender/src/header_node.c
@@ -414,7 +414,7 @@ static uiBlock *node_addmenu(void *arg_unused)
uiDefIconTextBlockBut(block, node_add_filtermenu, NULL, ICON_RIGHTARROW_THIN, "Filter", 0, yco-=20, 120, 19, "");
uiDefIconTextBlockBut(block, node_add_convertermenu, NULL, ICON_RIGHTARROW_THIN, "Convertor", 0, yco-=20, 120, 19, "");
uiDefIconTextBlockBut(block, node_add_groupmenu, NULL, ICON_RIGHTARROW_THIN, "Group", 0, yco-=20, 120, 19, "");
- uiDefIconTextBlockBut(block, node_add_mattemenu, NULL, ICON_RIGHTARROW_THIN, "Matte", 0, yco-=20, 120, 19, "");
+ uiDefIconTextBlockBut(block, node_add_mattemenu, NULL, ICON_RIGHTARROW_THIN, "Mattes", 0, yco-=20, 120, 19, "");
} else
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
diff --git a/source/blender/src/toolbox.c b/source/blender/src/toolbox.c
index eefba19b718..fe75b7e0e0c 100644
--- a/source/blender/src/toolbox.c
+++ b/source/blender/src/toolbox.c
@@ -1558,8 +1558,8 @@ static TBitem tb_node_addcomp[]= {
{ 0, "Filters", 5, NULL},
{ 0, "Convertors", 6, NULL},
{ 0, "Groups", 7, NULL},
- { 0, "Mattes", 8, NULL},
- { -1, "", 0, NULL}};
+ { 0, "Mattes", 8, NULL},
+ { -1, "", 0, NULL}};
/* do_node_addmenu() in header_node.c, prototype in BSE_headerbuttons.h */