Code cleanup: Replace magic number with verbose name for math node operations

Should be no functional changes, just much less cryptic code.
This commit is contained in:
Sergey Sharybin 2014-11-05 11:27:52 +01:00
parent 1073c6ae8e
commit 035026f48a
5 changed files with 117 additions and 94 deletions

View File

@ -29,61 +29,61 @@ void MathNode::convertToOperations(NodeConverter &converter, const CompositorCon
MathBaseOperation *operation = NULL;
switch (this->getbNode()->custom1) {
case 0: /* Add */
case NODE_MATH_ADD:
operation = new MathAddOperation();
break;
case 1: /* Subtract */
case NODE_MATH_SUB:
operation = new MathSubtractOperation();
break;
case 2: /* Multiply */
case NODE_MATH_MUL:
operation = new MathMultiplyOperation();
break;
case 3: /* Divide */
case NODE_MATH_DIVIDE:
operation = new MathDivideOperation();
break;
case 4: /* Sine */
case NODE_MATH_SIN:
operation = new MathSineOperation();
break;
case 5: /* Cosine */
case NODE_MATH_COS:
operation = new MathCosineOperation();
break;
case 6: /* Tangent */
case NODE_MATH_TAN:
operation = new MathTangentOperation();
break;
case 7: /* Arc-Sine */
case NODE_MATH_ASIN:
operation = new MathArcSineOperation();
break;
case 8: /* Arc-Cosine */
case NODE_MATH_ACOS:
operation = new MathArcCosineOperation();
break;
case 9: /* Arc-Tangent */
case NODE_MATH_ATAN:
operation = new MathArcTangentOperation();
break;
case 10: /* Power */
case NODE_MATH_POW:
operation = new MathPowerOperation();
break;
case 11: /* Logarithm */
case NODE_MATH_LOG:
operation = new MathLogarithmOperation();
break;
case 12: /* Minimum */
case NODE_MATH_MIN:
operation = new MathMinimumOperation();
break;
case 13: /* Maximum */
case NODE_MATH_MAX:
operation = new MathMaximumOperation();
break;
case 14: /* Round */
case NODE_MATH_ROUND:
operation = new MathRoundOperation();
break;
case 15: /* Less Than */
case NODE_MATH_LESS:
operation = new MathLessThanOperation();
break;
case 16: /* Greater Than */
case NODE_MATH_GREATER:
operation = new MathGreaterThanOperation();
break;
case 17: /* Modulo */
case NODE_MATH_MOD:
operation = new MathModuloOperation();
break;
case 18: /* Absolute Value */
case NODE_MATH_ABS:
operation = new MathAbsoluteOperation();
break;
}

View File

@ -988,6 +988,29 @@ typedef struct NodeSunBeams {
/* math node clamp */
#define SHD_MATH_CLAMP 1
/* Math node operation/ */
enum {
NODE_MATH_ADD = 0,
NODE_MATH_SUB = 1,
NODE_MATH_MUL = 2,
NODE_MATH_DIVIDE = 3,
NODE_MATH_SIN = 4,
NODE_MATH_COS = 5,
NODE_MATH_TAN = 6,
NODE_MATH_ASIN = 7,
NODE_MATH_ACOS = 8,
NODE_MATH_ATAN = 9,
NODE_MATH_POW = 10,
NODE_MATH_LOG = 11,
NODE_MATH_MIN = 12,
NODE_MATH_MAX = 13,
NODE_MATH_ROUND = 14,
NODE_MATH_LESS = 15,
NODE_MATH_GREATER = 16,
NODE_MATH_MOD = 17,
NODE_MATH_ABS = 18,
};
/* mix rgb node flags */
#define SHD_MIXRGB_USE_ALPHA 1
#define SHD_MIXRGB_CLAMP 2

View File

@ -112,25 +112,25 @@ EnumPropertyItem node_icon_items[] = {
#undef DEF_VICO
EnumPropertyItem node_math_items[] = {
{ 0, "ADD", 0, "Add", ""},
{ 1, "SUBTRACT", 0, "Subtract", ""},
{ 2, "MULTIPLY", 0, "Multiply", ""},
{ 3, "DIVIDE", 0, "Divide", ""},
{ 4, "SINE", 0, "Sine", ""},
{ 5, "COSINE", 0, "Cosine", ""},
{ 6, "TANGENT", 0, "Tangent", ""},
{ 7, "ARCSINE", 0, "Arcsine", ""},
{ 8, "ARCCOSINE", 0, "Arccosine", ""},
{ 9, "ARCTANGENT", 0, "Arctangent", ""},
{10, "POWER", 0, "Power", ""},
{11, "LOGARITHM", 0, "Logarithm", ""},
{12, "MINIMUM", 0, "Minimum", ""},
{13, "MAXIMUM", 0, "Maximum", ""},
{14, "ROUND", 0, "Round", ""},
{15, "LESS_THAN", 0, "Less Than", ""},
{16, "GREATER_THAN", 0, "Greater Than", ""},
{17, "MODULO", 0, "Modulo", ""},
{18, "ABSOLUTE", 0, "Absolute", ""},
{NODE_MATH_ADD, "ADD", 0, "Add", ""},
{NODE_MATH_SUB, "SUBTRACT", 0, "Subtract", ""},
{NODE_MATH_MUL, "MULTIPLY", 0, "Multiply", ""},
{NODE_MATH_DIVIDE, "DIVIDE", 0, "Divide", ""},
{NODE_MATH_SIN, "SINE", 0, "Sine", ""},
{NODE_MATH_COS, "COSINE", 0, "Cosine", ""},
{NODE_MATH_TAN, "TANGENT", 0, "Tangent", ""},
{NODE_MATH_ASIN, "ARCSINE", 0, "Arcsine", ""},
{NODE_MATH_ACOS, "ARCCOSINE", 0, "Arccosine", ""},
{NODE_MATH_ATAN, "ARCTANGENT", 0, "Arctangent", ""},
{NODE_MATH_POW, "POWER", 0, "Power", ""},
{NODE_MATH_LOG, "LOGARITHM", 0, "Logarithm", ""},
{NODE_MATH_MIN, "MINIMUM", 0, "Minimum", ""},
{NODE_MATH_MAX, "MAXIMUM", 0, "Maximum", ""},
{NODE_MATH_ROUND, "ROUND", 0, "Round", ""},
{NODE_MATH_LESS, "LESS_THAN", 0, "Less Than", ""},
{NODE_MATH_GREATER, "GREATER_THAN", 0, "Greater Than", ""},
{NODE_MATH_MOD, "MODULO", 0, "Modulo", ""},
{NODE_MATH_ABS, "ABSOLUTE", 0, "Absolute", ""},
{0, NULL, 0, NULL, NULL}
};

View File

@ -54,16 +54,16 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
switch (node->custom1) {
case 0: /* Add */
case NODE_MATH_ADD:
r = a + b;
break;
case 1: /* Subtract */
case NODE_MATH_SUB:
r = a - b;
break;
case 2: /* Multiply */
case NODE_MATH_MUL:
r = a * b;
break;
case 3: /* Divide */
case NODE_MATH_DIVIDE:
{
if (b == 0) /* We don't want to divide by zero. */
r = 0.0;
@ -71,7 +71,7 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
r = a / b;
break;
}
case 4: /* Sine */
case NODE_MATH_SIN:
{
if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */
r = sinf(a);
@ -79,7 +79,7 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
r = sinf(b);
break;
}
case 5: /* Cosine */
case NODE_MATH_COS:
{
if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */
r = cosf(a);
@ -87,7 +87,7 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
r = cosf(b);
break;
}
case 6: /* Tangent */
case NODE_MATH_TAN:
{
if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */
r = tanf(a);
@ -95,7 +95,7 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
r = tanf(b);
break;
}
case 7: /* Arc-Sine */
case NODE_MATH_ASIN:
{
if (in[0]->hasinput || !in[1]->hasinput) { /* This one only takes one input, so we've got to choose. */
/* Can't do the impossible... */
@ -113,7 +113,7 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
}
break;
}
case 8: /* Arc-Cosine */
case NODE_MATH_ACOS:
{
if (in[0]->hasinput || !in[1]->hasinput) { /* This one only takes one input, so we've got to choose. */
/* Can't do the impossible... */
@ -131,7 +131,7 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
}
break;
}
case 9: /* Arc-Tangent */
case NODE_MATH_ATAN:
{
if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */
r = atan(a);
@ -139,7 +139,7 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
r = atan(b);
break;
}
case 10: /* Power */
case NODE_MATH_POW:
{
/* Only raise negative numbers by full integers */
if (a >= 0) {
@ -159,7 +159,7 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
break;
}
case 11: /* Logarithm */
case NODE_MATH_LOG:
{
/* Don't want any imaginary numbers... */
if (a > 0 && b > 0)
@ -168,7 +168,7 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
r = 0.0;
break;
}
case 12: /* Minimum */
case NODE_MATH_MIN:
{
if (a < b)
r = a;
@ -176,7 +176,7 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
r = b;
break;
}
case 13: /* Maximum */
case NODE_MATH_MAX:
{
if (a > b)
r = a;
@ -184,7 +184,7 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
r = b;
break;
}
case 14: /* Round */
case NODE_MATH_ROUND:
{
if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */
r = (a < 0) ? (int)(a - 0.5f) : (int)(a + 0.5f);
@ -192,7 +192,7 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
r = (b < 0) ? (int)(b - 0.5f) : (int)(b + 0.5f);
break;
}
case 15: /* Less Than */
case NODE_MATH_LESS:
{
if (a < b)
r = 1.0f;
@ -200,7 +200,7 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
r = 0.0f;
break;
}
case 16: /* Greater Than */
case NODE_MATH_GREATER:
{
if (a > b)
r = 1.0f;
@ -208,7 +208,7 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
r = 0.0f;
break;
}
case 17: /* Modulo */
case NODE_MATH_MOD:
{
if (b == 0.0f)
r = 0.0f;
@ -216,7 +216,7 @@ static void node_shader_exec_math(void *UNUSED(data), int UNUSED(thread), bNode
r = fmod(a, b);
break;
}
case 18: /* Absolute */
case NODE_MATH_ABS:
{
r = fabsf(a);
break;
@ -236,26 +236,26 @@ static int gpu_shader_math(GPUMaterial *mat, bNode *node, bNodeExecData *UNUSED(
"math_round", "math_less_than", "math_greater_than", "math_modulo", "math_absolute"};
switch (node->custom1) {
case 0:
case 1:
case 2:
case 3:
case 10:
case 11:
case 12:
case 13:
case 15:
case 16:
case 17:
case NODE_MATH_ADD:
case NODE_MATH_SUB:
case NODE_MATH_MUL:
case NODE_MATH_DIVIDE:
case NODE_MATH_POW:
case NODE_MATH_LOG:
case NODE_MATH_MIN:
case NODE_MATH_MAX:
case NODE_MATH_LESS:
case NODE_MATH_GREATER:
case NODE_MATH_MOD:
GPU_stack_link(mat, names[node->custom1], in, out);
break;
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 14:
case NODE_MATH_SIN:
case NODE_MATH_COS:
case NODE_MATH_TAN:
case NODE_MATH_ASIN:
case NODE_MATH_ACOS:
case NODE_MATH_ATAN:
case NODE_MATH_ROUND:
if (in[0].hasinput || !in[1].hasinput) {
/* use only first item and terminator */
GPUNodeStack tmp_in[2];

View File

@ -53,16 +53,16 @@ static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor
switch (node->custom1) {
case 0: /* Add */
case NODE_MATH_ADD:
*out = in0 + in1;
break;
case 1: /* Subtract */
case NODE_MATH_SUB:
*out = in0 - in1;
break;
case 2: /* Multiply */
case NODE_MATH_MUL:
*out = in0 * in1;
break;
case 3: /* Divide */
case NODE_MATH_DIVIDE:
{
if (in1 == 0) /* We don't want to divide by zero. */
*out = 0.0;
@ -70,22 +70,22 @@ static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor
*out = in0 / in1;
break;
}
case 4: /* Sine */
case NODE_MATH_SIN:
{
*out = sinf(in0);
break;
}
case 5: /* Cosine */
case NODE_MATH_COS:
{
*out = cosf(in0);
break;
}
case 6: /* Tangent */
case NODE_MATH_TAN:
{
*out = tanf(in0);
break;
}
case 7: /* Arc-Sine */
case NODE_MATH_ASIN:
{
/* Can't do the impossible... */
if (in0 <= 1 && in0 >= -1)
@ -94,7 +94,7 @@ static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor
*out = 0.0;
break;
}
case 8: /* Arc-Cosine */
case NODE_MATH_ACOS:
{
/* Can't do the impossible... */
if (in0 <= 1 && in0 >= -1)
@ -103,12 +103,12 @@ static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor
*out = 0.0;
break;
}
case 9: /* Arc-Tangent */
case NODE_MATH_ATAN:
{
*out = atan(in0);
break;
}
case 10: /* Power */
case NODE_MATH_POW:
{
/* Only raise negative numbers by full integers */
if (in0 >= 0) {
@ -125,7 +125,7 @@ static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor
}
break;
}
case 11: /* Logarithm */
case NODE_MATH_LOG:
{
/* Don't want any imaginary numbers... */
if (in0 > 0 && in1 > 0)
@ -134,7 +134,7 @@ static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor
*out = 0.0;
break;
}
case 12: /* Minimum */
case NODE_MATH_MIN:
{
if (in0 < in1)
*out = in0;
@ -142,7 +142,7 @@ static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor
*out = in1;
break;
}
case 13: /* Maximum */
case NODE_MATH_MAX:
{
if (in0 > in1)
*out = in0;
@ -150,13 +150,13 @@ static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor
*out = in1;
break;
}
case 14: /* Round */
case NODE_MATH_ROUND:
{
*out = (in0 < 0) ? (int)(in0 - 0.5f) : (int)(in0 + 0.5f);
break;
}
case 15: /* Less Than */
case NODE_MATH_LESS:
{
if (in0 < in1)
*out = 1.0f;
@ -165,7 +165,7 @@ static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor
break;
}
case 16: /* Greater Than */
case NODE_MATH_GREATER:
{
if (in0 > in1)
*out = 1.0f;
@ -174,7 +174,7 @@ static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor
break;
}
case 17: /* Modulo */
case NODE_MATH_MOD:
{
if (in1 == 0.0f)
*out = 0.0f;
@ -183,7 +183,7 @@ static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor
break;
}
case 18: /* Absolute */
case NODE_MATH_ABS:
{
*out = fabsf(in0);
break;