static int gpu_shader_vect_math(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out) { static const char *names[] = {"vec_math_add", "vec_math_sub", "vec_math_average", "vec_math_dot", "vec_math_cross", "vec_math_normalize"}; switch (node->custom1) { case 0: case 1: case 2: case 3: case 4: GPU_stack_link(mat, names[node->custom1], NULL, out, GPU_socket(&in[0]), GPU_socket(&in[1])); break; case 5: if(in[0].hasinput || !in[1].hasinput) GPU_stack_link(mat, names[node->custom1], NULL, out, GPU_socket(&in[0])); else GPU_stack_link(mat, names[node->custom1], NULL, out, GPU_socket(&in[1])); break; default: return 0; } return 1; }
static int gpu_shader_math(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out) { static const char *names[] = {"math_add", "math_subtract", "math_multiply", "math_divide", "math_sine", "math_cosine", "math_tangent", "math_asin", "math_acos", "math_atan", "math_pow", "math_log", "math_min", "math_max", "math_round", "math_less_than", "math_greater_than"}; switch (node->custom1) { case 0: case 1: case 2: case 3: case 10: case 11: case 12: case 13: case 15: case 16: GPU_stack_link(mat, names[node->custom1], NULL, out, GPU_socket(&in[0]), GPU_socket(&in[1])); break; case 4: case 5: case 6: case 7: case 8: case 9: case 14: if(in[0].hasinput || !in[1].hasinput) GPU_stack_link(mat, names[node->custom1], NULL, out, GPU_socket(&in[0])); else GPU_stack_link(mat, names[node->custom1], NULL, out, GPU_socket(&in[1])); break; default: return 0; } return 1; }