diff options
author | Jason Wilkins <Jason.A.Wilkins@gmail.com> | 2012-11-12 16:30:02 +0400 |
---|---|---|
committer | Jason Wilkins <Jason.A.Wilkins@gmail.com> | 2012-11-12 16:30:02 +0400 |
commit | 6b65102c20e9bdafd90f55f60c2a2084d873e809 (patch) | |
tree | a0f5554702501d2da1073b22ff55f740aff135f9 /source/blender/nodes | |
parent | 053710fcbc78ff83b9617be87558876e381f85a6 (diff) | |
parent | 83de5cb30831328548502126dff84ffdb72544f2 (diff) |
Merge w/ trunk: r51141-52085 (Important Note: gameengine and blenderplayer were not merged due to complex differences)
Diffstat (limited to 'source/blender/nodes')
166 files changed, 1497 insertions, 1447 deletions
diff --git a/source/blender/nodes/CMakeLists.txt b/source/blender/nodes/CMakeLists.txt index 08e0e7b0f93..7dca4d07b24 100644 --- a/source/blender/nodes/CMakeLists.txt +++ b/source/blender/nodes/CMakeLists.txt @@ -23,8 +23,12 @@ # # ***** END GPL LICENSE BLOCK ***** -set(INC +set(INC . + composite + intern + shader + texture ../blenfont ../blenkernel ../blenlib @@ -39,10 +43,6 @@ set(INC set(INC_SYS ${GLEW_INCLUDE_PATH} - intern - composite - shader - texture ) set(SRC @@ -119,7 +119,8 @@ set(SRC composite/nodes/node_composite_ellipsemask.c composite/nodes/node_composite_switch.c composite/nodes/node_composite_colorcorrection.c - + composite/nodes/node_composite_pixelate.c + composite/node_composite_tree.c composite/node_composite_util.c @@ -144,34 +145,40 @@ set(SRC shader/nodes/node_shader_valToRgb.c shader/nodes/node_shader_value.c shader/nodes/node_shader_vectMath.c + shader/nodes/node_shader_add_shader.c + shader/nodes/node_shader_ambient_occlusion.c shader/nodes/node_shader_attribute.c shader/nodes/node_shader_background.c - # shader/nodes/node_shader_bsdf_anisotropic.c # XXX, why not included? + shader/nodes/node_shader_bsdf_anisotropic.c shader/nodes/node_shader_bsdf_diffuse.c - shader/nodes/node_shader_bsdf_glossy.c shader/nodes/node_shader_bsdf_glass.c + shader/nodes/node_shader_bsdf_glossy.c + shader/nodes/node_shader_bsdf_refraction.c shader/nodes/node_shader_bsdf_translucent.c shader/nodes/node_shader_bsdf_transparent.c shader/nodes/node_shader_bsdf_velvet.c + shader/nodes/node_shader_bump.c shader/nodes/node_shader_emission.c shader/nodes/node_shader_fresnel.c - shader/nodes/node_shader_layer_weight.c shader/nodes/node_shader_geometry.c shader/nodes/node_shader_holdout.c - shader/nodes/node_shader_volume_transparent.c - shader/nodes/node_shader_volume_isotropic.c - shader/nodes/node_shader_light_path.c + shader/nodes/node_shader_layer_weight.c shader/nodes/node_shader_light_falloff.c - shader/nodes/node_shader_object_info.c - shader/nodes/node_shader_particle_info.c + shader/nodes/node_shader_light_path.c shader/nodes/node_shader_mix_shader.c - shader/nodes/node_shader_add_shader.c + shader/nodes/node_shader_normal_map.c + shader/nodes/node_shader_object_info.c shader/nodes/node_shader_output_lamp.c shader/nodes/node_shader_output_material.c shader/nodes/node_shader_output_world.c - shader/nodes/node_shader_tex_gradient.c + shader/nodes/node_shader_particle_info.c + shader/nodes/node_shader_script.c + shader/nodes/node_shader_tangent.c + shader/nodes/node_shader_tex_brick.c + shader/nodes/node_shader_tex_checker.c shader/nodes/node_shader_tex_coord.c shader/nodes/node_shader_tex_environment.c + shader/nodes/node_shader_tex_gradient.c shader/nodes/node_shader_tex_image.c shader/nodes/node_shader_tex_magic.c shader/nodes/node_shader_tex_musgrave.c @@ -179,8 +186,8 @@ set(SRC shader/nodes/node_shader_tex_sky.c shader/nodes/node_shader_tex_voronoi.c shader/nodes/node_shader_tex_wave.c - shader/nodes/node_shader_tex_checker.c - shader/nodes/node_shader_tex_brick.c + shader/nodes/node_shader_volume_isotropic.c + shader/nodes/node_shader_volume_transparent.c shader/node_shader_tree.c shader/node_shader_util.c diff --git a/source/blender/nodes/NOD_composite.h b/source/blender/nodes/NOD_composite.h index bcef230e1d0..ee67ac88085 100644 --- a/source/blender/nodes/NOD_composite.h +++ b/source/blender/nodes/NOD_composite.h @@ -96,7 +96,7 @@ void register_node_type_cmp_combhsva(struct bNodeTreeType *ttype); void register_node_type_cmp_sepyuva(struct bNodeTreeType *ttype); void register_node_type_cmp_combyuva(struct bNodeTreeType *ttype); void register_node_type_cmp_sepycca(struct bNodeTreeType *ttype); -void register_node_type_cmp_combycca(struct bNodeTreeType *ttype); +void register_node_type_cmp_combycca(struct bNodeTreeType *ttype); void register_node_type_cmp_premulkey(struct bNodeTreeType *ttype); void register_node_type_cmp_diff_matte(struct bNodeTreeType *ttype); @@ -105,7 +105,7 @@ void register_node_type_cmp_chroma_matte(struct bNodeTreeType *ttype); void register_node_type_cmp_color_matte(struct bNodeTreeType *ttype); void register_node_type_cmp_channel_matte(struct bNodeTreeType *ttype); void register_node_type_cmp_color_spill(struct bNodeTreeType *ttype); -void register_node_type_cmp_luma_matte(struct bNodeTreeType *ttype); +void register_node_type_cmp_luma_matte(struct bNodeTreeType *ttype); void register_node_type_cmp_doubleedgemask(struct bNodeTreeType *ttype); void register_node_type_cmp_keyingscreen(struct bNodeTreeType *ttype); void register_node_type_cmp_keying(struct bNodeTreeType *ttype); @@ -133,7 +133,7 @@ void register_node_type_cmp_ellipsemask(struct bNodeTreeType *ttype); void register_node_type_cmp_bokehimage(struct bNodeTreeType *ttype); void register_node_type_cmp_bokehblur(struct bNodeTreeType *ttype); void register_node_type_cmp_switch(struct bNodeTreeType *ttype); - +void register_node_type_cmp_pixelate(struct bNodeTreeType *ttype); void register_node_type_cmp_trackpos(struct bNodeTreeType *ttype); #endif diff --git a/source/blender/nodes/NOD_shader.h b/source/blender/nodes/NOD_shader.h index 49428c06e5f..e402924c04f 100644 --- a/source/blender/nodes/NOD_shader.h +++ b/source/blender/nodes/NOD_shader.h @@ -80,14 +80,20 @@ void register_node_type_sh_fresnel(struct bNodeTreeType *ttype); void register_node_type_sh_layer_weight(struct bNodeTreeType *ttype); void register_node_type_sh_tex_coord(struct bNodeTreeType *ttype); void register_node_type_sh_particle_info(struct bNodeTreeType *ttype); +void register_node_type_sh_script(struct bNodeTreeType *ttype); +void register_node_type_sh_normal_map(struct bNodeTreeType *ttype); +void register_node_type_sh_tangent(struct bNodeTreeType *ttype); +void register_node_type_sh_ambient_occlusion(struct bNodeTreeType *ttype); void register_node_type_sh_background(struct bNodeTreeType *ttype); void register_node_type_sh_bsdf_diffuse(struct bNodeTreeType *ttype); void register_node_type_sh_bsdf_glossy(struct bNodeTreeType *ttype); void register_node_type_sh_bsdf_glass(struct bNodeTreeType *ttype); +void register_node_type_sh_bsdf_refraction(struct bNodeTreeType *ttype); void register_node_type_sh_bsdf_translucent(struct bNodeTreeType *ttype); void register_node_type_sh_bsdf_transparent(struct bNodeTreeType *ttype); void register_node_type_sh_bsdf_velvet(struct bNodeTreeType *ttype); +void register_node_type_sh_bsdf_anisotropic(struct bNodeTreeType *ttype); void register_node_type_sh_emission(struct bNodeTreeType *ttype); void register_node_type_sh_holdout(struct bNodeTreeType *ttype); void register_node_type_sh_volume_transparent(struct bNodeTreeType *ttype); @@ -109,6 +115,7 @@ void register_node_type_sh_tex_wave(struct bNodeTreeType *ttype); void register_node_type_sh_tex_musgrave(struct bNodeTreeType *ttype); void register_node_type_sh_tex_noise(struct bNodeTreeType *ttype); void register_node_type_sh_tex_checker(struct bNodeTreeType *ttype); +void register_node_type_sh_bump(struct bNodeTreeType *ttype); #endif diff --git a/source/blender/nodes/NOD_socket.h b/source/blender/nodes/NOD_socket.h index f41be2bb7d9..b14f7c4e884 100644 --- a/source/blender/nodes/NOD_socket.h +++ b/source/blender/nodes/NOD_socket.h @@ -60,6 +60,7 @@ void node_socket_set_default_value_vector(void *default_value, PropertySubType s void node_socket_set_default_value_rgba(void *default_value, float r, float g, float b, float a); void node_socket_set_default_value_shader(void *default_value); void node_socket_set_default_value_mesh(void *default_value); +void node_socket_set_default_value_string(void *default_value, PropertySubType subtype, const char *value); struct bNodeSocket *node_add_input_from_template(struct bNodeTree *ntree, struct bNode *node, struct bNodeSocketTemplate *stemp); struct bNodeSocket *node_add_output_from_template(struct bNodeTree *ntree, struct bNode *node, struct bNodeSocketTemplate *stemp); diff --git a/source/blender/nodes/composite/node_composite_tree.c b/source/blender/nodes/composite/node_composite_tree.c index 0d86ada8026..9a7e587ff56 100644 --- a/source/blender/nodes/composite/node_composite_tree.c +++ b/source/blender/nodes/composite/node_composite_tree.c @@ -273,7 +273,7 @@ bNodeTreeType ntreeType_Composite = { /* update */ update, /* update_node */ update_node, /* validate_link */ NULL, - /* internal_connect */ node_internal_connect_default + /* update_internal_links */ node_update_internal_links_default }; @@ -301,7 +301,7 @@ struct bNodeTreeExec *ntreeCompositBeginExecTree(bNodeTree *ntree, int use_tree_ for (node= exec->nodetree->nodes.first; node; node= node->next) { /* initialize needed for groups */ - node->exec= 0; + node->exec= 0; for (sock= node->outputs.first; sock; sock= sock->next) { bNodeStack *ns= node_get_socket_stack(exec->stack, sock); diff --git a/source/blender/nodes/composite/node_composite_util.c b/source/blender/nodes/composite/node_composite_util.c index ad2d26d7c27..57eb99021f6 100644 --- a/source/blender/nodes/composite/node_composite_util.c +++ b/source/blender/nodes/composite/node_composite_util.c @@ -72,7 +72,7 @@ CompBuf *dupalloc_compbuf(CompBuf *cbuf) dupbuf->xof= cbuf->xof; dupbuf->yof= cbuf->yof; - } + } return dupbuf; } @@ -94,7 +94,7 @@ CompBuf *pass_on_compbuf(CompBuf *cbuf) break; lastbuf->next= dupbuf; dupbuf->prev= lastbuf; - } + } return dupbuf; } @@ -213,53 +213,53 @@ void typecheck_compbuf_color(float *out, float *in, int outtype, int intype) } else if (outtype==CB_VEC2) { if (intype==CB_VAL) { - out[0]= in[0]; - out[1]= in[0]; + out[0] = in[0]; + out[1] = in[0]; } else if (intype==CB_VEC3) { - out[0]= in[0]; - out[1]= in[1]; + out[0] = in[0]; + out[1] = in[1]; } else if (intype==CB_RGBA) { - out[0]= in[0]; - out[1]= in[1]; + out[0] = in[0]; + out[1] = in[1]; } } else if (outtype==CB_VEC3) { if (intype==CB_VAL) { - out[0]= in[0]; - out[1]= in[0]; - out[2]= in[0]; + out[0] = in[0]; + out[1] = in[0]; + out[2] = in[0]; } else if (intype==CB_VEC2) { - out[0]= in[0]; - out[1]= in[1]; - out[2]= 0.0f; + out[0] = in[0]; + out[1] = in[1]; + out[2] = 0.0f; } else if (intype==CB_RGBA) { - out[0]= in[0]; - out[1]= in[1]; - out[2]= in[2]; + out[0] = in[0]; + out[1] = in[1]; + out[2] = in[2]; } } else if (outtype==CB_RGBA) { if (intype==CB_VAL) { - out[0]= in[0]; - out[1]= in[0]; - out[2]= in[0]; - out[3]= 1.0f; + out[0] = in[0]; + out[1] = in[0]; + out[2] = in[0]; + out[3] = 1.0f; } else if (intype==CB_VEC2) { - out[0]= in[0]; - out[1]= in[1]; - out[2]= 0.0f; - out[3]= 1.0f; + out[0] = in[0]; + out[1] = in[1]; + out[2] = 0.0f; + out[3] = 1.0f; } else if (intype==CB_VEC3) { - out[0]= in[0]; - out[1]= in[1]; - out[2]= in[2]; - out[3]= 1.0f; + out[0] = in[0]; + out[1] = in[1]; + out[2] = in[2]; + out[3] = 1.0f; } } } @@ -307,69 +307,69 @@ CompBuf *typecheck_compbuf(CompBuf *inbuf, int type) else if (type==CB_VEC2) { if (inbuf->type==CB_VAL) { for (; x>0; x--, outrf+= 2, inrf+= 1) { - outrf[0]= inrf[0]; - outrf[1]= inrf[0]; + outrf[0] = inrf[0]; + outrf[1] = inrf[0]; } } else if (inbuf->type==CB_VEC3) { for (; x>0; x--, outrf+= 2, inrf+= 3) { - outrf[0]= inrf[0]; - outrf[1]= inrf[1]; + outrf[0] = inrf[0]; + outrf[1] = inrf[1]; } } else if (inbuf->type==CB_RGBA) { for (; x>0; x--, outrf+= 2, inrf+= 4) { - outrf[0]= inrf[0]; - outrf[1]= inrf[1]; + outrf[0] = inrf[0]; + outrf[1] = inrf[1]; } } } else if (type==CB_VEC3) { if (inbuf->type==CB_VAL) { for (; x>0; x--, outrf+= 3, inrf+= 1) { - outrf[0]= inrf[0]; - outrf[1]= inrf[0]; - outrf[2]= inrf[0]; + outrf[0] = inrf[0]; + outrf[1] = inrf[0]; + outrf[2] = inrf[0]; } } else if (inbuf->type==CB_VEC2) { for (; x>0; x--, outrf+= 3, inrf+= 2) { - outrf[0]= inrf[0]; - outrf[1]= inrf[1]; - outrf[2]= 0.0f; + outrf[0] = inrf[0]; + outrf[1] = inrf[1]; + outrf[2] = 0.0f; } } else if (inbuf->type==CB_RGBA) { for (; x>0; x--, outrf+= 3, inrf+= 4) { - outrf[0]= inrf[0]; - outrf[1]= inrf[1]; - outrf[2]= inrf[2]; + outrf[0] = inrf[0]; + outrf[1] = inrf[1]; + outrf[2] = inrf[2]; } } } else if (type==CB_RGBA) { if (inbuf->type==CB_VAL) { for (; x>0; x--, outrf+= 4, inrf+= 1) { - outrf[0]= inrf[0]; - outrf[1]= inrf[0]; - outrf[2]= inrf[0]; - outrf[3]= 1.0f; + outrf[0] = inrf[0]; + outrf[1] = inrf[0]; + outrf[2] = inrf[0]; + outrf[3] = 1.0f; } } else if (inbuf->type==CB_VEC2) { for (; x>0; x--, outrf+= 4, inrf+= 2) { - outrf[0]= inrf[0]; - outrf[1]= inrf[1]; - outrf[2]= 0.0f; - outrf[3]= 1.0f; + outrf[0] = inrf[0]; + outrf[1] = inrf[1]; + outrf[2] = 0.0f; + outrf[3] = 1.0f; } } else if (inbuf->type==CB_VEC3) { for (; x>0; x--, outrf+= 4, inrf+= 3) { - outrf[0]= inrf[0]; - outrf[1]= inrf[1]; - outrf[2]= inrf[2]; - outrf[3]= 1.0f; + outrf[0] = inrf[0]; + outrf[1] = inrf[1]; + outrf[2] = inrf[2]; + outrf[3] = 1.0f; } } } @@ -387,7 +387,7 @@ float *compbuf_get_pixel(CompBuf *cbuf, float *defcol, float *use, int x, int y, return use; } else { - static float col[4]= {0.0f, 0.0f, 0.0f, 0.0f}; + static float col[4] = {0.0f, 0.0f, 0.0f, 0.0f}; /* map coords */ x-= cbuf->xof; @@ -707,18 +707,18 @@ void do_copy_rgba(bNode *UNUSED(node), float *out, float *in) void do_copy_rgb(bNode *UNUSED(node), float *out, float *in) { copy_v3_v3(out, in); - out[3]= 1.0f; + out[3] = 1.0f; } void do_copy_value(bNode *UNUSED(node), float *out, float *in) { - out[0]= in[0]; + out[0] = in[0]; } void do_copy_a_rgba(bNode *UNUSED(node), float *out, float *in, float *fac) { copy_v3_v3(out, in); - out[3]= *fac; + out[3] = *fac; } /* only accepts RGBA buffers */ @@ -732,16 +732,16 @@ void gamma_correct_compbuf(CompBuf *img, int inversed) drect= img->rect; if (inversed) { for (x=img->x*img->y; x>0; x--, drect+=4) { - if (drect[0]>0.0f) drect[0]= sqrt(drect[0]); else drect[0]= 0.0f; - if (drect[1]>0.0f) drect[1]= sqrt(drect[1]); else drect[1]= 0.0f; - if (drect[2]>0.0f) drect[2]= sqrt(drect[2]); else drect[2]= 0.0f; + if (drect[0]>0.0f) drect[0] = sqrt(drect[0]); else drect[0] = 0.0f; + if (drect[1]>0.0f) drect[1] = sqrt(drect[1]); else drect[1] = 0.0f; + if (drect[2]>0.0f) drect[2] = sqrt(drect[2]); else drect[2] = 0.0f; } } else { for (x=img->x*img->y; x>0; x--, drect+=4) { - if (drect[0]>0.0f) drect[0]*= drect[0]; else drect[0]= 0.0f; - if (drect[1]>0.0f) drect[1]*= drect[1]; else drect[1]= 0.0f; - if (drect[2]>0.0f) drect[2]*= drect[2]; else drect[2]= 0.0f; + if (drect[0]>0.0f) drect[0]*= drect[0]; else drect[0] = 0.0f; + if (drect[1]>0.0f) drect[1]*= drect[1]; else drect[1] = 0.0f; + if (drect[2]>0.0f) drect[2]*= drect[2]; else drect[2] = 0.0f; } } } @@ -757,9 +757,9 @@ void premul_compbuf(CompBuf *img, int inversed) if (inversed) { for (x=img->x*img->y; x>0; x--, drect+=4) { if (fabsf(drect[3]) < 1e-5f) { - drect[0]= 0.0f; - drect[1]= 0.0f; - drect[2]= 0.0f; + drect[0] = 0.0f; + drect[1] = 0.0f; + drect[2] = 0.0f; } else { drect[0] /= drect[3]; diff --git a/source/blender/nodes/composite/nodes/node_composite_alphaOver.c b/source/blender/nodes/composite/nodes/node_composite_alphaOver.c index 86eb0aa2c83..72c2204d8c5 100644 --- a/source/blender/nodes/composite/nodes/node_composite_alphaOver.c +++ b/source/blender/nodes/composite/nodes/node_composite_alphaOver.c @@ -32,13 +32,13 @@ #include "node_composite_util.h" /* **************** ALPHAOVER ******************** */ -static bNodeSocketTemplate cmp_node_alphaover_in[]= { +static bNodeSocketTemplate cmp_node_alphaover_in[] = { { SOCK_FLOAT, 1, N_("Fac"), 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, PROP_FACTOR}, { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_alphaover_out[]= { +static bNodeSocketTemplate cmp_node_alphaover_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; @@ -48,7 +48,7 @@ static bNodeSocketTemplate cmp_node_alphaover_out[]= { static void do_alphaover_premul(bNode *UNUSED(node), float *out, float *src, float *over, float *fac) { - /* Zero alpha values should still permit an add of RGB data */ + /* Zero alpha values should still permit an add of RGB data */ if (over[3]<0.0f) { copy_v4_v4(out, src); } @@ -58,11 +58,11 @@ static void do_alphaover_premul(bNode *UNUSED(node), float *out, float *src, flo else { float mul= 1.0f - fac[0]*over[3]; - out[0]= (mul*src[0]) + fac[0]*over[0]; - out[1]= (mul*src[1]) + fac[0]*over[1]; - out[2]= (mul*src[2]) + fac[0]*over[2]; - out[3]= (mul*src[3]) + fac[0]*over[3]; - } + out[0] = (mul*src[0]) + fac[0]*over[0]; + out[1] = (mul*src[1]) + fac[0]*over[1]; + out[2] = (mul*src[2]) + fac[0]*over[2]; + out[3] = (mul*src[3]) + fac[0]*over[3]; + } } /* result will be still premul, but the over part is premulled */ @@ -79,10 +79,10 @@ static void do_alphaover_key(bNode *UNUSED(node), float *out, float *src, float float premul= fac[0]*over[3]; float mul= 1.0f - premul; - out[0]= (mul*src[0]) + premul*over[0]; - out[1]= (mul*src[1]) + premul*over[1]; - out[2]= (mul*src[2]) + premul*over[2]; - out[3]= (mul*src[3]) + fac[0]*over[3]; + out[0] = (mul*src[0]) + premul*over[0]; + out[1] = (mul*src[1]) + premul*over[1]; + out[2] = (mul*src[2]) + premul*over[2]; + out[3] = (mul*src[3]) + fac[0]*over[3]; } } @@ -102,10 +102,10 @@ static void do_alphaover_mixed(bNode *node, float *out, float *src, float *over, float premul= fac[0]*addfac; float mul= 1.0f - fac[0]*over[3]; - out[0]= (mul*src[0]) + premul*over[0]; - out[1]= (mul*src[1]) + premul*over[1]; - out[2]= (mul*src[2]) + premul*over[2]; - out[3]= (mul*src[3]) + fac[0]*over[3]; + out[0] = (mul*src[0]) + premul*over[0]; + out[1] = (mul*src[1]) + premul*over[1]; + out[2] = (mul*src[2]) + premul*over[2]; + out[3] = (mul*src[3]) + fac[0]*over[3]; } } diff --git a/source/blender/nodes/composite/nodes/node_composite_bilateralblur.c b/source/blender/nodes/composite/nodes/node_composite_bilateralblur.c index e05ef1ea5a5..7674ace42a3 100644 --- a/source/blender/nodes/composite/nodes/node_composite_bilateralblur.c +++ b/source/blender/nodes/composite/nodes/node_composite_bilateralblur.c @@ -33,14 +33,14 @@ /* **************** BILATERALBLUR ******************** */ static bNodeSocketTemplate cmp_node_bilateralblur_in[] = { - { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, - { SOCK_RGBA, 1, N_("Determinator"), 1.0f, 1.0f, 1.0f, 1.0f}, - { -1, 0, "" } + { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, + { SOCK_RGBA, 1, N_("Determinator"), 1.0f, 1.0f, 1.0f, 1.0f}, + { -1, 0, "" } }; static bNodeSocketTemplate cmp_node_bilateralblur_out[] = { - { SOCK_RGBA, 0, N_("Image")}, - { -1, 0, "" } + { SOCK_RGBA, 0, N_("Image")}, + { -1, 0, "" } }; #ifdef WITH_COMPOSITOR_LEGACY diff --git a/source/blender/nodes/composite/nodes/node_composite_bokehimage.c b/source/blender/nodes/composite/nodes/node_composite_bokehimage.c index c5697679f90..8324b77b2d1 100644 --- a/source/blender/nodes/composite/nodes/node_composite_bokehimage.c +++ b/source/blender/nodes/composite/nodes/node_composite_bokehimage.c @@ -37,7 +37,7 @@ /* **************** Bokeh image Tools ******************** */ -static bNodeSocketTemplate cmp_node_bokehimage_out[]= { +static bNodeSocketTemplate cmp_node_bokehimage_out[] = { { SOCK_RGBA, 0, N_("Image"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, { -1, 0, "" } }; diff --git a/source/blender/nodes/composite/nodes/node_composite_boxmask.c b/source/blender/nodes/composite/nodes/node_composite_boxmask.c index 1ba522c0e5f..d3c6b2ccef0 100644 --- a/source/blender/nodes/composite/nodes/node_composite_boxmask.c +++ b/source/blender/nodes/composite/nodes/node_composite_boxmask.c @@ -1,6 +1,4 @@ /* - * $Id: CMP_math.c 36271 2011-04-21 13:11:51Z campbellbarton $ - * * ***** BEGIN GPL LICENSE BLOCK ***** * * This program is free software; you can redistribute it and/or @@ -35,15 +33,15 @@ #include "../node_composite_util.h" /* **************** SCALAR MATH ******************** */ -static bNodeSocketTemplate cmp_node_boxmask_in[]= { +static bNodeSocketTemplate cmp_node_boxmask_in[] = { { SOCK_FLOAT, 1, N_("Mask"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Value"), 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, - { -1, 0, "" } + { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_boxmask_out[]= { +static bNodeSocketTemplate cmp_node_boxmask_out[] = { { SOCK_FLOAT, 0, N_("Mask"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, - { -1, 0, "" } + { -1, 0, "" } }; static void node_composit_init_boxmask(bNodeTree *UNUSED(ntree), bNode *node, bNodeTemplate *UNUSED(ntemp)) diff --git a/source/blender/nodes/composite/nodes/node_composite_brightness.c b/source/blender/nodes/composite/nodes/node_composite_brightness.c index 2b8a394d6f2..ecf572f59c7 100644 --- a/source/blender/nodes/composite/nodes/node_composite_brightness.c +++ b/source/blender/nodes/composite/nodes/node_composite_brightness.c @@ -36,13 +36,13 @@ /* **************** Brigh and contrsast ******************** */ -static bNodeSocketTemplate cmp_node_brightcontrast_in[]= { +static bNodeSocketTemplate cmp_node_brightcontrast_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Bright"), 0.0f, 0.0f, 0.0f, 0.0f, -100.0f, 100.0f, PROP_NONE}, { SOCK_FLOAT, 1, N_("Contrast"), 0.0f, 0.0f, 0.0f, 0.0f, -100.0f, 100.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_brightcontrast_out[]= { +static bNodeSocketTemplate cmp_node_brightcontrast_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; @@ -72,7 +72,7 @@ static void do_brightnesscontrast(bNode *UNUSED(node), float *out, float *in, fl b = a * (brightness + delta); } - for (c=0; c<3; c++) { + for (c=0; c<3; c++) { i = in[c]; v = a*i + b; out[c] = v; diff --git a/source/blender/nodes/composite/nodes/node_composite_channelMatte.c b/source/blender/nodes/composite/nodes/node_composite_channelMatte.c index 06b77de463b..40dbbbb8dca 100644 --- a/source/blender/nodes/composite/nodes/node_composite_channelMatte.c +++ b/source/blender/nodes/composite/nodes/node_composite_channelMatte.c @@ -34,12 +34,12 @@ /* ******************* Channel Matte Node ********************************* */ -static bNodeSocketTemplate cmp_node_channel_matte_in[]={ +static bNodeSocketTemplate cmp_node_channel_matte_in[] ={ {SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, {-1, 0, ""} }; -static bNodeSocketTemplate cmp_node_channel_matte_out[]={ +static bNodeSocketTemplate cmp_node_channel_matte_out[] ={ {SOCK_RGBA, 0, N_("Image")}, {SOCK_FLOAT, 0, N_("Matte")}, {-1, 0, ""} @@ -71,7 +71,7 @@ static void do_normalized_ycca_to_rgba2(bNode *UNUSED(node), float *out, float * static void do_channel_matte(bNode *node, float *out, float *in) { NodeChroma *c=(NodeChroma *)node->storage; - float alpha=0.0; + float alpha=0.0; switch (c->algorithm) { case 0: { /* Alpha=key_channel-limit channel */ diff --git a/source/blender/nodes/composite/nodes/node_composite_chromaMatte.c b/source/blender/nodes/composite/nodes/node_composite_chromaMatte.c index 55ee1b090bb..f343f806d57 100644 --- a/source/blender/nodes/composite/nodes/node_composite_chromaMatte.c +++ b/source/blender/nodes/composite/nodes/node_composite_chromaMatte.c @@ -33,13 +33,13 @@ #include "node_composite_util.h" /* ******************* Chroma Key ********************************************************** */ -static bNodeSocketTemplate cmp_node_chroma_in[]={ +static bNodeSocketTemplate cmp_node_chroma_in[] = { {SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, {SOCK_RGBA, 1, N_("Key Color"), 1.0f, 1.0f, 1.0f, 1.0f}, {-1, 0, ""} }; -static bNodeSocketTemplate cmp_node_chroma_out[]={ +static bNodeSocketTemplate cmp_node_chroma_out[] = { {SOCK_RGBA, 0, N_("Image")}, {SOCK_FLOAT, 0, N_("Matte")}, {-1, 0, ""} diff --git a/source/blender/nodes/composite/nodes/node_composite_colorMatte.c b/source/blender/nodes/composite/nodes/node_composite_colorMatte.c index 37fb29811ba..07a6647d976 100644 --- a/source/blender/nodes/composite/nodes/node_composite_colorMatte.c +++ b/source/blender/nodes/composite/nodes/node_composite_colorMatte.c @@ -33,13 +33,13 @@ #include "node_composite_util.h" /* ******************* Color Key ********************************************************** */ -static bNodeSocketTemplate cmp_node_color_in[]={ +static bNodeSocketTemplate cmp_node_color_in[] = { {SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, {SOCK_RGBA, 1, N_("Key Color"), 1.0f, 1.0f, 1.0f, 1.0f}, {-1, 0, ""} }; -static bNodeSocketTemplate cmp_node_color_out[]={ +static bNodeSocketTemplate cmp_node_color_out[] = { {SOCK_RGBA, 0, N_("Image")}, {SOCK_FLOAT, 0, N_("Matte")}, {-1, 0, ""} diff --git a/source/blender/nodes/composite/nodes/node_composite_colorSpill.c b/source/blender/nodes/composite/nodes/node_composite_colorSpill.c index c4120ab22c6..44a5ac9e968 100644 --- a/source/blender/nodes/composite/nodes/node_composite_colorSpill.c +++ b/source/blender/nodes/composite/nodes/node_composite_colorSpill.c @@ -29,26 +29,25 @@ * \ingroup cmpnodes */ - - #include "node_composite_util.h" -#define AVG(a, b) ((a + b) / 2) - /* ******************* Color Spill Supression ********************************* */ -static bNodeSocketTemplate cmp_node_color_spill_in[]={ +static bNodeSocketTemplate cmp_node_color_spill_in[] = { {SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, {SOCK_FLOAT, 1, N_("Fac"), 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_FACTOR}, {-1, 0, ""} }; -static bNodeSocketTemplate cmp_node_color_spill_out[]={ +static bNodeSocketTemplate cmp_node_color_spill_out[] = { {SOCK_RGBA, 0, N_("Image")}, {-1, 0, ""} }; #ifdef WITH_COMPOSITOR_LEGACY +#define AVG(a, b) ((a + b) / 2) + + static void do_simple_spillmap_red(bNode *node, float* out, float *in) { NodeColorspill *ncs; diff --git a/source/blender/nodes/composite/nodes/node_composite_colorbalance.c b/source/blender/nodes/composite/nodes/node_composite_colorbalance.c index a9f930f9cf2..e9d26ebebbc 100644 --- a/source/blender/nodes/composite/nodes/node_composite_colorbalance.c +++ b/source/blender/nodes/composite/nodes/node_composite_colorbalance.c @@ -35,13 +35,13 @@ /* ******************* Color Balance ********************************* */ -static bNodeSocketTemplate cmp_node_colorbalance_in[]={ +static bNodeSocketTemplate cmp_node_colorbalance_in[] = { {SOCK_FLOAT, 1, N_("Fac"), 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_FACTOR}, {SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, {-1, 0, ""} }; -static bNodeSocketTemplate cmp_node_colorbalance_out[]={ +static bNodeSocketTemplate cmp_node_colorbalance_out[] = { {SOCK_RGBA, 0, N_("Image")}, {-1, 0, ""} }; diff --git a/source/blender/nodes/composite/nodes/node_composite_colorcorrection.c b/source/blender/nodes/composite/nodes/node_composite_colorcorrection.c index ce43b2f0f2b..526f8472992 100644 --- a/source/blender/nodes/composite/nodes/node_composite_colorcorrection.c +++ b/source/blender/nodes/composite/nodes/node_composite_colorcorrection.c @@ -36,13 +36,13 @@ /* ******************* Color Balance ********************************* */ -static bNodeSocketTemplate cmp_node_colorcorrection_in[]={ +static bNodeSocketTemplate cmp_node_colorcorrection_in[] = { { SOCK_RGBA,1,N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Mask"), 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_FACTOR}, { -1,0,""} }; -static bNodeSocketTemplate cmp_node_colorcorrection_out[]={ +static bNodeSocketTemplate cmp_node_colorcorrection_out[] = { { SOCK_RGBA,0,N_("Image")}, { -1,0,""} }; diff --git a/source/blender/nodes/composite/nodes/node_composite_common.c b/source/blender/nodes/composite/nodes/node_composite_common.c index 2596248d696..10b81cdaaa0 100644 --- a/source/blender/nodes/composite/nodes/node_composite_common.c +++ b/source/blender/nodes/composite/nodes/node_composite_common.c @@ -231,153 +231,3 @@ void register_node_type_cmp_group(bNodeTreeType *ttype) nodeRegisterType(ttype, &ntype); } - -#ifdef WITH_COMPOSITOR_LEGACY - -/**** FOR LOOP ****/ - -#if 0 /* XXX loop nodes don't work nicely with current trees */ -/* Move the results from the previous iteration back to the input sockets. */ -static void loop_iteration_reset(bNodeTree *ngroup, bNodeStack *gstack) -{ - bNodeSocket *gin, *gout; - bNodeStack *nsin, *nsout; - - gin = ngroup->inputs.first; - gout = ngroup->outputs.first; - - while (gin && gout) { - /* skip static (non-looping) sockets */ - while (gin && !(gin->flag & SOCK_DYNAMIC)) - gin=gin->next; - while (gout && !(gout->flag & SOCK_DYNAMIC)) - gout=gout->next; - - if (gin && gout) { - nsin = node_get_socket_stack(gstack, gin); - nsout = node_get_socket_stack(gstack, gout); - - move_stack(nsin, nsout); - - gin=gin->next; - gout=gout->next; - } - } -} - -static void forloop_execute(void *data, int thread, struct bNode *node, void *nodedata, struct bNodeStack **in, struct bNodeStack **out) -{ - bNodeTreeExec *exec= (bNodeTreeExec *)nodedata; - int totiterations= (int)in[0]->vec[0]; - bNodeSocket *sock; - bNodeStack *ns; - int iteration; - - /* XXX same behavior as trunk: all nodes inside group are executed. - * it's stupid, but just makes it work. compo redesign will do this better. - */ - { - bNode *inode; - for (inode=exec->nodetree->nodes.first; inode; inode=inode->next) - inode->need_exec = 1; - } - - /* "Iteration" socket */ - sock = exec->nodetree->inputs.first; - ns = node_get_socket_stack(exec->stack, sock); - - group_copy_inputs(node, in, exec->stack); - for (iteration=0; iteration < totiterations; ++iteration) { - /* first input contains current iteration counter */ - ns->vec[0] = (float)iteration; - - if (iteration > 0) - loop_iteration_reset(exec->nodetree, exec->stack); - ntreeExecNodes(exec, data, thread); - group_free_internal(exec); - } - group_move_outputs(node, out, exec->stack); -} - -void register_node_type_cmp_forloop(bNodeTreeType *ttype) -{ - static bNodeType ntype; - - node_type_base(ttype, &ntype, NODE_FORLOOP, "For", NODE_CLASS_GROUP, NODE_OPTIONS); - node_type_socket_templates(&ntype, NULL, NULL); - node_type_size(&ntype, 120, 60, 200); - node_type_label(&ntype, node_group_label); - node_type_init(&ntype, node_forloop_init); - node_type_valid(&ntype, node_group_valid); - node_type_template(&ntype, node_forloop_template); - node_type_update(&ntype, NULL, node_group_verify); - node_type_tree(&ntype, node_forloop_init_tree, node_loop_update_tree); - node_type_group_edit(&ntype, node_group_edit_get, node_group_edit_set, node_group_edit_clear); - node_type_exec_new(&ntype, group_initexec, group_freeexec, forloop_execute); - - nodeRegisterType(ttype, &ntype); -} -#endif - - -/**** WHILE LOOP ****/ - -#if 0 /* XXX loop nodes don't work nicely with current trees */ -static void whileloop_execute(void *data, int thread, struct bNode *node, void *nodedata, struct bNodeStack **in, struct bNodeStack **out) -{ - bNodeTreeExec *exec= (bNodeTreeExec *)nodedata; - int condition= (in[0]->vec[0] > 0.0f); - bNodeSocket *sock; - bNodeStack *ns; - int iteration; - - /* XXX same behavior as trunk: all nodes inside group are executed. - * it's stupid, but just makes it work. compo redesign will do this better. - */ - { - bNode *inode; - for (inode=exec->nodetree->nodes.first; inode; inode=inode->next) - inode->need_exec = 1; - } - - /* "Condition" socket */ - sock = exec->nodetree->outputs.first; - ns = node_get_socket_stack(exec->stack, sock); - - iteration = 0; - group_copy_inputs(node, in, exec->stack); - while (condition && iteration < node->custom1) { - if (iteration > 0) - loop_iteration_reset(exec->nodetree, exec->stack); - ntreeExecNodes(exec, data, thread); - group_free_internal(exec); - -// PRINT_BUFFERS(exec); - - condition = (ns->vec[0] > 0.0f); - ++iteration; - } - group_move_outputs(node, out, exec->stack); -} - -void register_node_type_cmp_whileloop(bNodeTreeType *ttype) -{ - static bNodeType ntype; - - node_type_base(ttype, &ntype, NODE_WHILELOOP, "While", NODE_CLASS_GROUP, NODE_OPTIONS); - node_type_socket_templates(&ntype, NULL, NULL); - node_type_size(&ntype, 120, 60, 200); - node_type_label(&ntype, node_group_label); - node_type_init(&ntype, node_whileloop_init); - node_type_valid(&ntype, node_group_valid); - node_type_template(&ntype, node_whileloop_template); - node_type_update(&ntype, NULL, node_group_verify); - node_type_tree(&ntype, node_whileloop_init_tree, node_loop_update_tree); - node_type_group_edit(&ntype, node_group_edit_get, node_group_edit_set, node_group_edit_clear); - node_type_exec_new(&ntype, group_initexec, group_freeexec, whileloop_execute); - - nodeRegisterType(ttype, &ntype); -} -#endif - -#endif /* WITH_COMPOSITOR_LEGACY */ diff --git a/source/blender/nodes/composite/nodes/node_composite_composite.c b/source/blender/nodes/composite/nodes/node_composite_composite.c index dadc863873d..cb932b6a8de 100644 --- a/source/blender/nodes/composite/nodes/node_composite_composite.c +++ b/source/blender/nodes/composite/nodes/node_composite_composite.c @@ -32,7 +32,7 @@ #include "node_composite_util.h" /* **************** COMPOSITE ******************** */ -static bNodeSocketTemplate cmp_node_composite_in[]= { +static bNodeSocketTemplate cmp_node_composite_in[] = { { SOCK_RGBA, 1, N_("Image"), 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Alpha"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR}, { SOCK_FLOAT, 1, N_("Z"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR}, @@ -110,7 +110,7 @@ void register_node_type_cmp_composite(bNodeTreeType *ttype) #endif /* Do not allow muting for this node. */ - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } diff --git a/source/blender/nodes/composite/nodes/node_composite_crop.c b/source/blender/nodes/composite/nodes/node_composite_crop.c index 9b1483d95cf..ad51fae1998 100644 --- a/source/blender/nodes/composite/nodes/node_composite_crop.c +++ b/source/blender/nodes/composite/nodes/node_composite_crop.c @@ -34,11 +34,11 @@ /* **************** Crop ******************** */ -static bNodeSocketTemplate cmp_node_crop_in[]= { +static bNodeSocketTemplate cmp_node_crop_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_crop_out[]= { +static bNodeSocketTemplate cmp_node_crop_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; @@ -82,7 +82,7 @@ static void node_composit_exec_crop(void *UNUSED(data), bNode *node, bNodeStack outputrect.ymin=MIN2(ntxy->y1, ntxy->y2); if (node->custom1) { - /* this option crops the image size too */ + /* this option crops the image size too */ stackbuf= get_cropped_compbuf(&outputrect, cbuf->rect, cbuf->x, cbuf->y, cbuf->type); } else { diff --git a/source/blender/nodes/composite/nodes/node_composite_curves.c b/source/blender/nodes/composite/nodes/node_composite_curves.c index 1948709ec84..a1999ec8887 100644 --- a/source/blender/nodes/composite/nodes/node_composite_curves.c +++ b/source/blender/nodes/composite/nodes/node_composite_curves.c @@ -36,7 +36,7 @@ /* **************** CURVE Time ******************** */ /* custom1 = sfra, custom2 = efra */ -static bNodeSocketTemplate cmp_node_time_out[]= { +static bNodeSocketTemplate cmp_node_time_out[] = { { SOCK_FLOAT, 0, N_("Fac")}, { -1, 0, "" } }; @@ -55,7 +55,7 @@ static void node_composit_exec_curves_time(void *data, bNode *node, bNodeStack * curvemapping_initialize(node->storage); fac = curvemapping_evaluateF(node->storage, 0, fac); - out[0]->vec[0]= CLAMPIS(fac, 0.0f, 1.0f); + out[0]->vec[0] = CLAMPIS(fac, 0.0f, 1.0f); } #endif /* WITH_COMPOSITOR_LEGACY */ @@ -86,12 +86,12 @@ void register_node_type_cmp_curve_time(bNodeTreeType *ttype) /* **************** CURVE VEC ******************** */ -static bNodeSocketTemplate cmp_node_curve_vec_in[]= { +static bNodeSocketTemplate cmp_node_curve_vec_in[] = { { SOCK_VECTOR, 1, N_("Vector"), 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_curve_vec_out[]= { +static bNodeSocketTemplate cmp_node_curve_vec_out[] = { { SOCK_VECTOR, 0, N_("Vector")}, { -1, 0, "" } }; @@ -132,7 +132,7 @@ void register_node_type_cmp_curve_vec(bNodeTreeType *ttype) /* **************** CURVE RGB ******************** */ -static bNodeSocketTemplate cmp_node_curve_rgb_in[]= { +static bNodeSocketTemplate cmp_node_curve_rgb_in[] = { { SOCK_FLOAT, 1, N_("Fac"), 1.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_FACTOR}, { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { SOCK_RGBA, 1, N_("Black Level"), 0.0f, 0.0f, 0.0f, 1.0f}, @@ -140,7 +140,7 @@ static bNodeSocketTemplate cmp_node_curve_rgb_in[]= { { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_curve_rgb_out[]= { +static bNodeSocketTemplate cmp_node_curve_rgb_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; @@ -151,7 +151,7 @@ static void do_curves(bNode *node, float *out, float *in) { curvemapping_initialize(node->storage); curvemapping_evaluate_premulRGBF(node->storage, out, in); - out[3]= in[3]; + out[3] = in[3]; } static void do_curves_fac(bNode *node, float *out, float *in, float *fac) @@ -166,11 +166,11 @@ static void do_curves_fac(bNode *node, float *out, float *in, float *fac) else { float col[4], mfac= 1.0f-*fac; curvemapping_evaluate_premulRGBF(node->storage, col, in); - out[0]= mfac*in[0] + *fac*col[0]; - out[1]= mfac*in[1] + *fac*col[1]; - out[2]= mfac*in[2] + *fac*col[2]; + out[0] = mfac*in[0] + *fac*col[0]; + out[1] = mfac*in[1] + *fac*col[1]; + out[2] = mfac*in[2] + *fac*col[2]; } - out[3]= in[3]; + out[3] = in[3]; } static void node_composit_exec_curve_rgb(void *UNUSED(data), bNode *node, bNodeStack **in, bNodeStack **out) diff --git a/source/blender/nodes/composite/nodes/node_composite_defocus.c b/source/blender/nodes/composite/nodes/node_composite_defocus.c index 1a9852264bf..27ce0f7c4a7 100644 --- a/source/blender/nodes/composite/nodes/node_composite_defocus.c +++ b/source/blender/nodes/composite/nodes/node_composite_defocus.c @@ -34,12 +34,12 @@ #include <limits.h> /* ************ qdn: Defocus node ****************** */ -static bNodeSocketTemplate cmp_node_defocus_in[]= { +static bNodeSocketTemplate cmp_node_defocus_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Z"), 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, PROP_FACTOR}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_defocus_out[]= { +static bNodeSocketTemplate cmp_node_defocus_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; @@ -338,7 +338,7 @@ static void defocus_blur(bNode *node, CompBuf *new, CompBuf *img, CompBuf *zbuf, // fast blur... // bug #6656 part 1, probably when previous node_composite.c was split into separate files, it was not properly updated // to include recent cvs commits (well, at least not defocus node), so this part was missing... - wt = minf(nqd->maxblur, aperture * 128.0f); + wt = min_ff(nqd->maxblur, aperture * 128.0f); IIR_gauss_single(crad, wt); IIR_gauss_single(wts, wt); @@ -589,8 +589,8 @@ static void defocus_blur(bNode *node, CompBuf *new, CompBuf *img, CompBuf *zbuf, // n-agonal int ov, nv; float mind, maxd, lwt; - ys = maxi((int)floor(bkh_b[2] * ct_crad + y), 0); - ye = mini((int)ceil(bkh_b[3] * ct_crad + y), new->y - 1); + ys = max_ii((int)floor(bkh_b[2] * ct_crad + y), 0); + ye = min_ii((int)ceil(bkh_b[3] * ct_crad + y), new->y - 1); for (sy=ys; sy<=ye; sy++) { float fxs = 1e10f, fxe = -1e10f; float yf = (sy - y)/ct_crad; @@ -861,7 +861,7 @@ static void node_composit_exec_defocus(void *UNUSED(data), bNode *node, bNodeSta if (node->exec & NODE_BREAK) { free_compbuf(new); new= NULL; - } + } out[0]->data = new; if (zbuf_use && (zbuf_use != zbuf)) free_compbuf(zbuf_use); } diff --git a/source/blender/nodes/composite/nodes/node_composite_despeckle.c b/source/blender/nodes/composite/nodes/node_composite_despeckle.c index 21b703dc9a8..9d47e4bc276 100644 --- a/source/blender/nodes/composite/nodes/node_composite_despeckle.c +++ b/source/blender/nodes/composite/nodes/node_composite_despeckle.c @@ -32,12 +32,12 @@ #include "node_composite_util.h" /* **************** FILTER ******************** */ -static bNodeSocketTemplate cmp_node_despeckle_in[]= { +static bNodeSocketTemplate cmp_node_despeckle_in[] = { { SOCK_FLOAT, 1, N_("Fac"), 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, PROP_FACTOR}, { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_despeckle_out[]= { +static bNodeSocketTemplate cmp_node_despeckle_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/composite/nodes/node_composite_diffMatte.c b/source/blender/nodes/composite/nodes/node_composite_diffMatte.c index ed43baef420..014b72d3c60 100644 --- a/source/blender/nodes/composite/nodes/node_composite_diffMatte.c +++ b/source/blender/nodes/composite/nodes/node_composite_diffMatte.c @@ -33,13 +33,13 @@ #include "node_composite_util.h" /* ******************* channel Difference Matte ********************************* */ -static bNodeSocketTemplate cmp_node_diff_matte_in[]={ +static bNodeSocketTemplate cmp_node_diff_matte_in[] = { {SOCK_RGBA, 1, N_("Image 1"), 1.0f, 1.0f, 1.0f, 1.0f}, {SOCK_RGBA, 1, N_("Image 2"), 1.0f, 1.0f, 1.0f, 1.0f}, {-1, 0, ""} }; -static bNodeSocketTemplate cmp_node_diff_matte_out[]={ +static bNodeSocketTemplate cmp_node_diff_matte_out[] = { {SOCK_RGBA, 0, N_("Image")}, {SOCK_FLOAT, 0, N_("Matte")}, {-1, 0, ""} @@ -76,7 +76,7 @@ static void do_diff_matte(bNode *node, float *outColor, float *inColor1, float * } /*only change if more transparent than either image */ - maxInputAlpha=maxf(inColor1[3], inColor2[3]); + maxInputAlpha=max_ff(inColor1[3], inColor2[3]); if (alpha < maxInputAlpha) { /*clamp*/ if (alpha < 0.0f) alpha = 0.0f; diff --git a/source/blender/nodes/composite/nodes/node_composite_dilate.c b/source/blender/nodes/composite/nodes/node_composite_dilate.c index f53c64b990a..9787c9f7145 100644 --- a/source/blender/nodes/composite/nodes/node_composite_dilate.c +++ b/source/blender/nodes/composite/nodes/node_composite_dilate.c @@ -54,28 +54,28 @@ static void morpho_dilate(CompBuf *cbuf) for (y = 0; y < cbuf->y; y++) { for (x = 0; x < cbuf->x - 1; x++) { p = rectf + cbuf->x * y + x; - *p = maxf(*p, *(p + 1)); + *p = max_ff(*p, *(p + 1)); } } for (y = 0; y < cbuf->y; y++) { for (x = cbuf->x - 1; x >= 1; x--) { p = rectf + cbuf->x * y + x; - *p = maxf(*p, *(p - 1)); + *p = max_ff(*p, *(p - 1)); } } for (x = 0; x < cbuf->x; x++) { for (y = 0; y < cbuf->y - 1; y++) { p = rectf + cbuf->x * y + x; - *p = maxf(*p, *(p + cbuf->x)); + *p = max_ff(*p, *(p + cbuf->x)); } } for (x = 0; x < cbuf->x; x++) { for (y = cbuf->y - 1; y >= 1; y--) { p = rectf + cbuf->x * y + x; - *p = maxf(*p, *(p - cbuf->x)); + *p = max_ff(*p, *(p - cbuf->x)); } } } @@ -88,28 +88,28 @@ static void morpho_erode(CompBuf *cbuf) for (y = 0; y < cbuf->y; y++) { for (x = 0; x < cbuf->x - 1; x++) { p = rectf + cbuf->x * y + x; - *p = minf(*p, *(p + 1)); + *p = min_ff(*p, *(p + 1)); } } for (y = 0; y < cbuf->y; y++) { for (x = cbuf->x - 1; x >= 1; x--) { p = rectf + cbuf->x * y + x; - *p = minf(*p, *(p - 1)); + *p = min_ff(*p, *(p - 1)); } } for (x = 0; x < cbuf->x; x++) { for (y = 0; y < cbuf->y - 1; y++) { p = rectf + cbuf->x * y + x; - *p = minf(*p, *(p + cbuf->x)); + *p = min_ff(*p, *(p + cbuf->x)); } } for (x = 0; x < cbuf->x; x++) { for (y = cbuf->y - 1; y >= 1; y--) { p = rectf + cbuf->x * y + x; - *p = minf(*p, *(p - cbuf->x)); + *p = min_ff(*p, *(p - cbuf->x)); } } diff --git a/source/blender/nodes/composite/nodes/node_composite_displace.c b/source/blender/nodes/composite/nodes/node_composite_displace.c index 51ccc2a4d39..c07ad0a0c97 100644 --- a/source/blender/nodes/composite/nodes/node_composite_displace.c +++ b/source/blender/nodes/composite/nodes/node_composite_displace.c @@ -35,14 +35,14 @@ /* **************** Displace ******************** */ -static bNodeSocketTemplate cmp_node_displace_in[]= { +static bNodeSocketTemplate cmp_node_displace_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { SOCK_VECTOR, 1, N_("Vector"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_TRANSLATION}, { SOCK_FLOAT, 1, N_("X Scale"), 0.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f, PROP_FACTOR}, { SOCK_FLOAT, 1, N_("Y Scale"), 0.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f, PROP_FACTOR}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_displace_out[]= { +static bNodeSocketTemplate cmp_node_displace_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; @@ -113,8 +113,8 @@ static void do_displace(bNode *node, CompBuf *stackbuf, CompBuf *cbuf, CompBuf * dxt = p_dx - d_dx; dyt = p_dy - d_dy; - dxt = signf(dxt)*maxf(fabsf(dxt), DISPLACE_EPSILON)/(float)stackbuf->x; - dyt = signf(dyt)*maxf(fabsf(dyt), DISPLACE_EPSILON)/(float)stackbuf->y; + dxt = signf(dxt)*max_ff(fabsf(dxt), DISPLACE_EPSILON)/(float)stackbuf->x; + dyt = signf(dyt)*max_ff(fabsf(dyt), DISPLACE_EPSILON)/(float)stackbuf->y; ibuf_sample(ibuf, u, v, dxt, dyt, col); qd_setPixel(stackbuf, x, y, col); diff --git a/source/blender/nodes/composite/nodes/node_composite_distanceMatte.c b/source/blender/nodes/composite/nodes/node_composite_distanceMatte.c index 7a101ff43b5..7e605865cd2 100644 --- a/source/blender/nodes/composite/nodes/node_composite_distanceMatte.c +++ b/source/blender/nodes/composite/nodes/node_composite_distanceMatte.c @@ -33,13 +33,13 @@ #include "node_composite_util.h" /* ******************* channel Distance Matte ********************************* */ -static bNodeSocketTemplate cmp_node_distance_matte_in[]={ +static bNodeSocketTemplate cmp_node_distance_matte_in[] = { {SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, {SOCK_RGBA, 1, N_("Key Color"), 1.0f, 1.0f, 1.0f, 1.0f}, {-1, 0, ""} }; -static bNodeSocketTemplate cmp_node_distance_matte_out[]={ +static bNodeSocketTemplate cmp_node_distance_matte_out[] = { {SOCK_RGBA, 0, N_("Image")}, {SOCK_FLOAT, 0, N_("Matte")}, {-1, 0, ""} @@ -159,9 +159,9 @@ static void node_composit_exec_distance_matte(void *data, bNode *node, bNodeStac workbuf=dupalloc_compbuf(inbuf); /*use the input color*/ - c->key[0]= in[1]->vec[0]; - c->key[1]= in[1]->vec[1]; - c->key[2]= in[1]->vec[2]; + c->key[0] = in[1]->vec[0]; + c->key[1] = in[1]->vec[1]; + c->key[2] = in[1]->vec[2]; /* work in RGB color space */ if (c->channel == 1) { diff --git a/source/blender/nodes/composite/nodes/node_composite_doubleEdgeMask.c b/source/blender/nodes/composite/nodes/node_composite_doubleEdgeMask.c index 63a54efea74..3c1e3ee443e 100644 --- a/source/blender/nodes/composite/nodes/node_composite_doubleEdgeMask.c +++ b/source/blender/nodes/composite/nodes/node_composite_doubleEdgeMask.c @@ -32,12 +32,12 @@ /* **************** Double Edge Mask ******************** */ -static bNodeSocketTemplate cmp_node_doubleedgemask_in[]= { +static bNodeSocketTemplate cmp_node_doubleedgemask_in[] = { { SOCK_FLOAT, 1, "Inner Mask", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f, PROP_NONE}, // inner mask socket definition { SOCK_FLOAT, 1, "Outer Mask", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f, PROP_NONE}, // outer mask socket definition { -1, 0, "" } // input socket array terminator }; -static bNodeSocketTemplate cmp_node_doubleedgemask_out[]= { +static bNodeSocketTemplate cmp_node_doubleedgemask_out[] = { { SOCK_FLOAT, 0, "Mask"}, // output socket definition { -1, 0, "" } // output socket array terminator }; diff --git a/source/blender/nodes/composite/nodes/node_composite_ellipsemask.c b/source/blender/nodes/composite/nodes/node_composite_ellipsemask.c index a97322a17c0..761b0b13f11 100644 --- a/source/blender/nodes/composite/nodes/node_composite_ellipsemask.c +++ b/source/blender/nodes/composite/nodes/node_composite_ellipsemask.c @@ -1,6 +1,4 @@ /* - * $Id: CMP_math.c 36271 2011-04-21 13:11:51Z campbellbarton $ - * * ***** BEGIN GPL LICENSE BLOCK ***** * * This program is free software; you can redistribute it and/or @@ -35,15 +33,15 @@ #include "../node_composite_util.h" /* **************** SCALAR MATH ******************** */ -static bNodeSocketTemplate cmp_node_ellipsemask_in[]= { +static bNodeSocketTemplate cmp_node_ellipsemask_in[] = { { SOCK_FLOAT, 1, N_("Mask"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Value"), 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, - { -1, 0, "" } + { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_ellipsemask_out[]= { +static bNodeSocketTemplate cmp_node_ellipsemask_out[] = { { SOCK_FLOAT, 0, N_("Mask"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, - { -1, 0, "" } + { -1, 0, "" } }; static void node_composit_init_ellipsemask(bNodeTree *UNUSED(ntree), bNode *node, bNodeTemplate *UNUSED(ntemp)) diff --git a/source/blender/nodes/composite/nodes/node_composite_filter.c b/source/blender/nodes/composite/nodes/node_composite_filter.c index 0b12c03682b..a27116ab077 100644 --- a/source/blender/nodes/composite/nodes/node_composite_filter.c +++ b/source/blender/nodes/composite/nodes/node_composite_filter.c @@ -33,12 +33,12 @@ #include "node_composite_util.h" /* **************** FILTER ******************** */ -static bNodeSocketTemplate cmp_node_filter_in[]= { +static bNodeSocketTemplate cmp_node_filter_in[] = { { SOCK_FLOAT, 1, N_("Fac"), 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, PROP_FACTOR}, { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_filter_out[]= { +static bNodeSocketTemplate cmp_node_filter_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; @@ -73,10 +73,10 @@ static void do_filter_edge(CompBuf *out, CompBuf *in, float *filter, float fac) for (c=0; c<3; c++) { f1= filter[0]*row1[0] + filter[1]*row1[4] + filter[2]*row1[8] + filter[3]*row2[0] + filter[4]*row2[4] + filter[5]*row2[8] + filter[6]*row3[0] + filter[7]*row3[4] + filter[8]*row3[8]; f2= filter[0]*row1[0] + filter[3]*row1[4] + filter[6]*row1[8] + filter[1]*row2[0] + filter[4]*row2[4] + filter[7]*row2[8] + filter[2]*row3[0] + filter[5]*row3[4] + filter[8]*row3[8]; - fp[0]= mfac*row2[4] + fac*sqrt(f1*f1 + f2*f2); + fp[0] = mfac*row2[4] + fac*sqrt(f1*f1 + f2*f2); fp++; row1++; row2++; row3++; } - fp[0]= row2[4]; + fp[0] = row2[4]; /* no alpha... will clear it completely */ fp++; row1++; row2++; row3++; } @@ -87,7 +87,7 @@ static void do_filter_edge(CompBuf *out, CompBuf *in, float *filter, float fac) for (x=2; x<rowlen; x++) { f1= filter[0]*row1[0] + filter[1]*row1[1] + filter[2]*row1[2] + filter[3]*row2[0] + filter[4]*row2[1] + filter[5]*row2[2] + filter[6]*row3[0] + filter[7]*row3[1] + filter[8]*row3[2]; f2= filter[0]*row1[0] + filter[3]*row1[1] + filter[6]*row1[2] + filter[1]*row2[0] + filter[4]*row2[1] + filter[7]*row2[2] + filter[2]*row3[0] + filter[5]*row3[1] + filter[8]*row3[2]; - fp[0]= mfac*row2[1] + fac*sqrt(f1*f1 + f2*f2); + fp[0] = mfac*row2[1] + fac*sqrt(f1*f1 + f2*f2); fp++; row1++; row2++; row3++; } } @@ -116,28 +116,28 @@ static void do_filter3(CompBuf *out, CompBuf *in, float *filter, float fac) fp= out->rect + pixlen*(y)*rowlen; if (pixlen==1) { - fp[0]= row2[0]; + fp[0] = row2[0]; fp+= 1; for (x=2; x<rowlen; x++) { - fp[0]= mfac*row2[1] + fac*(filter[0]*row1[0] + filter[1]*row1[1] + filter[2]*row1[2] + filter[3]*row2[0] + filter[4]*row2[1] + filter[5]*row2[2] + filter[6]*row3[0] + filter[7]*row3[1] + filter[8]*row3[2]); + fp[0] = mfac*row2[1] + fac*(filter[0]*row1[0] + filter[1]*row1[1] + filter[2]*row1[2] + filter[3]*row2[0] + filter[4]*row2[1] + filter[5]*row2[2] + filter[6]*row3[0] + filter[7]*row3[1] + filter[8]*row3[2]); fp++; row1++; row2++; row3++; } - fp[0]= row2[1]; + fp[0] = row2[1]; } else if (pixlen==2) { - fp[0]= row2[0]; - fp[1]= row2[1]; + fp[0] = row2[0]; + fp[1] = row2[1]; fp+= 2; for (x=2; x<rowlen; x++) { for (c=0; c<2; c++) { - fp[0]= mfac*row2[2] + fac*(filter[0]*row1[0] + filter[1]*row1[2] + filter[2]*row1[4] + filter[3]*row2[0] + filter[4]*row2[2] + filter[5]*row2[4] + filter[6]*row3[0] + filter[7]*row3[2] + filter[8]*row3[4]); + fp[0] = mfac*row2[2] + fac*(filter[0]*row1[0] + filter[1]*row1[2] + filter[2]*row1[4] + filter[3]*row2[0] + filter[4]*row2[2] + filter[5]*row2[4] + filter[6]*row3[0] + filter[7]*row3[2] + filter[8]*row3[4]); fp++; row1++; row2++; row3++; } } - fp[0]= row2[2]; - fp[1]= row2[3]; + fp[0] = row2[2]; + fp[1] = row2[3]; } else if (pixlen==3) { copy_v3_v3(fp, row2); @@ -145,7 +145,7 @@ static void do_filter3(CompBuf *out, CompBuf *in, float *filter, float fac) for (x=2; x<rowlen; x++) { for (c=0; c<3; c++) { - fp[0]= mfac*row2[3] + fac*(filter[0]*row1[0] + filter[1]*row1[3] + filter[2]*row1[6] + filter[3]*row2[0] + filter[4]*row2[3] + filter[5]*row2[6] + filter[6]*row3[0] + filter[7]*row3[3] + filter[8]*row3[6]); + fp[0] = mfac*row2[3] + fac*(filter[0]*row1[0] + filter[1]*row1[3] + filter[2]*row1[6] + filter[3]*row2[0] + filter[4]*row2[3] + filter[5]*row2[6] + filter[6]*row3[0] + filter[7]*row3[3] + filter[8]*row3[6]); fp++; row1++; row2++; row3++; } } @@ -157,7 +157,7 @@ static void do_filter3(CompBuf *out, CompBuf *in, float *filter, float fac) for (x=2; x<rowlen; x++) { for (c=0; c<4; c++) { - fp[0]= mfac*row2[4] + fac*(filter[0]*row1[0] + filter[1]*row1[4] + filter[2]*row1[8] + filter[3]*row2[0] + filter[4]*row2[4] + filter[5]*row2[8] + filter[6]*row3[0] + filter[7]*row3[4] + filter[8]*row3[8]); + fp[0] = mfac*row2[4] + fac*(filter[0]*row1[0] + filter[1]*row1[4] + filter[2]*row1[8] + filter[3]*row2[0] + filter[4]*row2[4] + filter[5]*row2[8] + filter[6]*row3[0] + filter[7]*row3[4] + filter[8]*row3[8]); fp++; row1++; row2++; row3++; } } @@ -169,13 +169,13 @@ static void do_filter3(CompBuf *out, CompBuf *in, float *filter, float fac) static void node_composit_exec_filter(void *data, bNode *node, bNodeStack **in, bNodeStack **out) { - static float soft[9]= {1/16.0f, 2/16.0f, 1/16.0f, 2/16.0f, 4/16.0f, 2/16.0f, 1/16.0f, 2/16.0f, 1/16.0f}; - float sharp[9]= {-1, -1, -1, -1, 9, -1, -1, -1, -1}; - float laplace[9]= {-1/8.0f, -1/8.0f, -1/8.0f, -1/8.0f, 1.0f, -1/8.0f, -1/8.0f, -1/8.0f, -1/8.0f}; - float sobel[9]= {1, 2, 1, 0, 0, 0, -1, -2, -1}; - float prewitt[9]= {1, 1, 1, 0, 0, 0, -1, -1, -1}; - float kirsch[9]= {5, 5, 5, -3, -3, -3, -2, -2, -2}; - float shadow[9]= {1, 2, 1, 0, 1, 0, -1, -2, -1}; + static float soft[9] = {1/16.0f, 2/16.0f, 1/16.0f, 2/16.0f, 4/16.0f, 2/16.0f, 1/16.0f, 2/16.0f, 1/16.0f}; + float sharp[9] = {-1, -1, -1, -1, 9, -1, -1, -1, -1}; + float laplace[9] = {-1/8.0f, -1/8.0f, -1/8.0f, -1/8.0f, 1.0f, -1/8.0f, -1/8.0f, -1/8.0f, -1/8.0f}; + float sobel[9] = {1, 2, 1, 0, 0, 0, -1, -2, -1}; + float prewitt[9] = {1, 1, 1, 0, 0, 0, -1, -1, -1}; + float kirsch[9] = {5, 5, 5, -3, -3, -3, -2, -2, -2}; + float shadow[9] = {1, 2, 1, 0, 1, 0, -1, -2, -1}; if (out[0]->hasoutput==0) return; diff --git a/source/blender/nodes/composite/nodes/node_composite_flip.c b/source/blender/nodes/composite/nodes/node_composite_flip.c index 147e7591af7..4aa98d173e7 100644 --- a/source/blender/nodes/composite/nodes/node_composite_flip.c +++ b/source/blender/nodes/composite/nodes/node_composite_flip.c @@ -33,12 +33,12 @@ #include "node_composite_util.h" /* **************** Flip ******************** */ -static bNodeSocketTemplate cmp_node_flip_in[]= { +static bNodeSocketTemplate cmp_node_flip_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_flip_out[]= { +static bNodeSocketTemplate cmp_node_flip_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; @@ -75,7 +75,7 @@ static void node_composit_exec_flip(void *UNUSED(data), bNode *node, bNodeStack outfp += (src_width-1)*src_pix; for (x=0; x<src_width; x++) { for (i=0; i<src_pix; i++) { - outfp[i]= srcfp[i]; + outfp[i] = srcfp[i]; } outfp -= src_pix; srcfp += src_pix; diff --git a/source/blender/nodes/composite/nodes/node_composite_gamma.c b/source/blender/nodes/composite/nodes/node_composite_gamma.c index 87155478035..b8c99894301 100644 --- a/source/blender/nodes/composite/nodes/node_composite_gamma.c +++ b/source/blender/nodes/composite/nodes/node_composite_gamma.c @@ -35,12 +35,12 @@ /* **************** Gamma Tools ******************** */ -static bNodeSocketTemplate cmp_node_gamma_in[]= { +static bNodeSocketTemplate cmp_node_gamma_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Gamma"), 1.0f, 0.0f, 0.0f, 0.0f, 0.001f, 10.0f, PROP_UNSIGNED}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_gamma_out[]= { +static bNodeSocketTemplate cmp_node_gamma_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/composite/nodes/node_composite_glare.c b/source/blender/nodes/composite/nodes/node_composite_glare.c index 7d6c0cb1a29..950d8a56f58 100644 --- a/source/blender/nodes/composite/nodes/node_composite_glare.c +++ b/source/blender/nodes/composite/nodes/node_composite_glare.c @@ -32,11 +32,11 @@ #include "node_composite_util.h" -static bNodeSocketTemplate cmp_node_glare_in[]= { +static bNodeSocketTemplate cmp_node_glare_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_glare_out[]= { +static bNodeSocketTemplate cmp_node_glare_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/composite/nodes/node_composite_hueSatVal.c b/source/blender/nodes/composite/nodes/node_composite_hueSatVal.c index c8784ceedb7..d52e3d01a32 100644 --- a/source/blender/nodes/composite/nodes/node_composite_hueSatVal.c +++ b/source/blender/nodes/composite/nodes/node_composite_hueSatVal.c @@ -34,12 +34,12 @@ /* **************** Hue Saturation ******************** */ -static bNodeSocketTemplate cmp_node_hue_sat_in[]= { +static bNodeSocketTemplate cmp_node_hue_sat_in[] = { { SOCK_FLOAT, 1, N_("Fac"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR}, { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_hue_sat_out[]= { +static bNodeSocketTemplate cmp_node_hue_sat_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; @@ -60,10 +60,10 @@ static void do_hue_sat_fac(bNode *node, float *out, float *in, float *fac) hsv[2]*= nhs->val; hsv_to_rgb(hsv[0], hsv[1], hsv[2], col, col+1, col+2); - out[0]= mfac*in[0] + *fac*col[0]; - out[1]= mfac*in[1] + *fac*col[1]; - out[2]= mfac*in[2] + *fac*col[2]; - out[3]= in[3]; + out[0] = mfac*in[0] + *fac*col[0]; + out[1] = mfac*in[1] + *fac*col[1]; + out[2] = mfac*in[2] + *fac*col[2]; + out[3] = in[3]; } else { copy_v4_v4(out, in); @@ -89,7 +89,7 @@ static void node_composit_exec_hue_sat(void *UNUSED(data), bNode *node, bNodeSta out[0]->data= stackbuf; - /* get rid of intermediary cbuf if it's extra */ + /* get rid of intermediary cbuf if it's extra */ if (stackbuf!=cbuf) free_compbuf(cbuf); } diff --git a/source/blender/nodes/composite/nodes/node_composite_huecorrect.c b/source/blender/nodes/composite/nodes/node_composite_huecorrect.c index 42077cd5c06..f751dbea8d2 100644 --- a/source/blender/nodes/composite/nodes/node_composite_huecorrect.c +++ b/source/blender/nodes/composite/nodes/node_composite_huecorrect.c @@ -32,13 +32,13 @@ #include "node_composite_util.h" -static bNodeSocketTemplate cmp_node_huecorrect_in[]= { +static bNodeSocketTemplate cmp_node_huecorrect_in[] = { { SOCK_FLOAT, 1, N_("Fac"), 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_FACTOR}, { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_huecorrect_out[]= { +static bNodeSocketTemplate cmp_node_huecorrect_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; @@ -71,7 +71,7 @@ static void do_huecorrect(bNode *node, float *out, float *in) /* convert back to rgb */ hsv_to_rgb(hsv[0], hsv[1], hsv[2], out, out+1, out+2); - out[3]= in[3]; + out[3] = in[3]; } static void do_huecorrect_fac(bNode *node, float *out, float *in, float *fac) @@ -101,10 +101,10 @@ static void do_huecorrect_fac(bNode *node, float *out, float *in, float *fac) /* convert back to rgb */ hsv_to_rgb(hsv[0], hsv[1], hsv[2], rgb, rgb+1, rgb+2); - out[0]= mfac*in[0] + *fac*rgb[0]; - out[1]= mfac*in[1] + *fac*rgb[1]; - out[2]= mfac*in[2] + *fac*rgb[2]; - out[3]= in[3]; + out[0] = mfac*in[0] + *fac*rgb[0]; + out[1] = mfac*in[1] + *fac*rgb[1]; + out[2] = mfac*in[2] + *fac*rgb[2]; + out[3] = in[3]; } static void node_composit_exec_huecorrect(void *UNUSED(data), bNode *node, bNodeStack **in, bNodeStack **out) diff --git a/source/blender/nodes/composite/nodes/node_composite_idMask.c b/source/blender/nodes/composite/nodes/node_composite_idMask.c index 31a3a765ebe..ef0c5021192 100644 --- a/source/blender/nodes/composite/nodes/node_composite_idMask.c +++ b/source/blender/nodes/composite/nodes/node_composite_idMask.c @@ -35,11 +35,11 @@ /* **************** ID Mask ******************** */ -static bNodeSocketTemplate cmp_node_idmask_in[]= { +static bNodeSocketTemplate cmp_node_idmask_in[] = { { SOCK_FLOAT, 1, N_("ID value"), 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_idmask_out[]= { +static bNodeSocketTemplate cmp_node_idmask_out[] = { { SOCK_FLOAT, 0, N_("Alpha")}, { -1, 0, "" } }; @@ -56,14 +56,14 @@ static void do_idmask(CompBuf *stackbuf, CompBuf *cbuf, float idnr) rect= cbuf->rect; for (x= cbuf->x*cbuf->y - 1; x>=0; x--) if (rect[x]==idnr) - abuf[x]= 255; + abuf[x] = 255; antialias_tagbuf(cbuf->x, cbuf->y, abuf); rect= stackbuf->rect; for (x= cbuf->x*cbuf->y - 1; x>=0; x--) if (abuf[x]>1) - rect[x]= (1.0f/255.0f)*(float)abuf[x]; + rect[x] = (1.0f/255.0f)*(float)abuf[x]; MEM_freeN(abuf); } @@ -78,7 +78,7 @@ static void do_idmask_fsa(CompBuf *stackbuf, CompBuf *cbuf, float idnr) rs= stackbuf->rect; for (x= cbuf->x*cbuf->y - 1; x>=0; x--) if (rect[x]==idnr) - rs[x]= 1.0f; + rs[x] = 1.0f; } diff --git a/source/blender/nodes/composite/nodes/node_composite_image.c b/source/blender/nodes/composite/nodes/node_composite_image.c index 9f3874560ac..150382c1f8f 100644 --- a/source/blender/nodes/composite/nodes/node_composite_image.c +++ b/source/blender/nodes/composite/nodes/node_composite_image.c @@ -34,7 +34,7 @@ /* **************** IMAGE (and RenderResult, multilayer image) ******************** */ -static bNodeSocketTemplate cmp_node_rlayers_out[]= { +static bNodeSocketTemplate cmp_node_rlayers_out[] = { { SOCK_RGBA, 0, N_("Image"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Alpha"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Z"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, @@ -505,7 +505,7 @@ static void node_composit_exec_image(void *data, bNode *node, bNodeStack **UNUSE generate_preview(data, node, stackbuf); } } - } + } } #endif /* WITH_COMPOSITOR_LEGACY */ diff --git a/source/blender/nodes/composite/nodes/node_composite_invert.c b/source/blender/nodes/composite/nodes/node_composite_invert.c index b0e656b173b..2db6e42f603 100644 --- a/source/blender/nodes/composite/nodes/node_composite_invert.c +++ b/source/blender/nodes/composite/nodes/node_composite_invert.c @@ -32,15 +32,15 @@ #include "node_composite_util.h" /* **************** INVERT ******************** */ -static bNodeSocketTemplate cmp_node_invert_in[]= { - { SOCK_FLOAT, 1, N_("Fac"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR}, - { SOCK_RGBA, 1, N_("Color"), 1.0f, 1.0f, 1.0f, 1.0f}, - { -1, 0, "" } +static bNodeSocketTemplate cmp_node_invert_in[] = { + { SOCK_FLOAT, 1, N_("Fac"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR}, + { SOCK_RGBA, 1, N_("Color"), 1.0f, 1.0f, 1.0f, 1.0f}, + { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_invert_out[]= { - { SOCK_RGBA, 0, N_("Color")}, - { -1, 0, "" } +static bNodeSocketTemplate cmp_node_invert_out[] = { + { SOCK_RGBA, 0, N_("Color")}, + { -1, 0, "" } }; #ifdef WITH_COMPOSITOR_LEGACY diff --git a/source/blender/nodes/composite/nodes/node_composite_keyingscreen.c b/source/blender/nodes/composite/nodes/node_composite_keyingscreen.c index e16b7e5d885..96e905827cb 100644 --- a/source/blender/nodes/composite/nodes/node_composite_keyingscreen.c +++ b/source/blender/nodes/composite/nodes/node_composite_keyingscreen.c @@ -96,21 +96,24 @@ static void compute_gradient_screen(RenderData *rd, NodeKeyingScreenData *keying int j; zero_v3(site->color); - for (j = 0; j < pattern_ibuf->x * pattern_ibuf->y; j++) { - if (pattern_ibuf->rect_float) { - add_v3_v3(site->color, &pattern_ibuf->rect_float[4 * j]); - } - else { - unsigned char *rrgb = (unsigned char *)pattern_ibuf->rect; - site->color[0] += srgb_to_linearrgb((float)rrgb[4 * j + 0] / 255.0f); - site->color[1] += srgb_to_linearrgb((float)rrgb[4 * j + 1] / 255.0f); - site->color[2] += srgb_to_linearrgb((float)rrgb[4 * j + 2] / 255.0f); + if (pattern_ibuf) { + for (j = 0; j < pattern_ibuf->x * pattern_ibuf->y; j++) { + if (pattern_ibuf->rect_float) { + add_v3_v3(site->color, &pattern_ibuf->rect_float[4 * j]); + } + else { + unsigned char *rrgb = (unsigned char *)pattern_ibuf->rect; + + site->color[0] += srgb_to_linearrgb((float)rrgb[4 * j + 0] / 255.0f); + site->color[1] += srgb_to_linearrgb((float)rrgb[4 * j + 1] / 255.0f); + site->color[2] += srgb_to_linearrgb((float)rrgb[4 * j + 2] / 255.0f); + } } - } - mul_v3_fl(site->color, 1.0f / (pattern_ibuf->x * pattern_ibuf->y)); - IMB_freeImBuf(pattern_ibuf); + mul_v3_fl(site->color, 1.0f / (pattern_ibuf->x * pattern_ibuf->y)); + IMB_freeImBuf(pattern_ibuf); + } site->co[0] = marker->pos[0] * screenbuf->x; site->co[1] = marker->pos[1] * screenbuf->y; diff --git a/source/blender/nodes/composite/nodes/node_composite_lensdist.c b/source/blender/nodes/composite/nodes/node_composite_lensdist.c index a4983cce8b8..c3f64f0eacb 100644 --- a/source/blender/nodes/composite/nodes/node_composite_lensdist.c +++ b/source/blender/nodes/composite/nodes/node_composite_lensdist.c @@ -32,13 +32,13 @@ #include "node_composite_util.h" -static bNodeSocketTemplate cmp_node_lensdist_in[]= { +static bNodeSocketTemplate cmp_node_lensdist_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Distort"), 0.f, 0.f, 0.f, 0.f, -0.999f, 1.f, PROP_NONE}, { SOCK_FLOAT, 1, N_("Dispersion"), 0.f, 0.f, 0.f, 0.f, 0.f, 1.f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_lensdist_out[]= { +static bNodeSocketTemplate cmp_node_lensdist_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; @@ -74,7 +74,7 @@ static void lensDistort(CompBuf *dst, CompBuf *src, float kr, float kg, float kb qd_getPixelLerpChan(tsrc, (u*dst->x - kr) - 0.5f, v*dst->y - 0.5f, 2, colp[x]+2); /* set alpha */ - colp[x][3]= 1.0f; + colp[x][3] = 1.0f; } } free_compbuf(tsrc); @@ -159,7 +159,7 @@ static void lensDistort(CompBuf *dst, CompBuf *src, float kr, float kg, float kb if (db) colp[x][2] = 2.f*tc[2] / (float)db; /* set alpha */ - colp[x][3]= 1.0f; + colp[x][3] = 1.0f; } } } diff --git a/source/blender/nodes/composite/nodes/node_composite_levels.c b/source/blender/nodes/composite/nodes/node_composite_levels.c index 601516c5bb0..57d94d6cb4d 100644 --- a/source/blender/nodes/composite/nodes/node_composite_levels.c +++ b/source/blender/nodes/composite/nodes/node_composite_levels.c @@ -34,12 +34,12 @@ /* **************** LEVELS ******************** */ -static bNodeSocketTemplate cmp_node_view_levels_in[]= { +static bNodeSocketTemplate cmp_node_view_levels_in[] = { { SOCK_RGBA, 1, N_("Image"), 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_view_levels_out[]={ +static bNodeSocketTemplate cmp_node_view_levels_out[] = { {SOCK_FLOAT, 0, N_("Mean")}, {SOCK_FLOAT, 0, N_("Std Dev")}, {-1, 0, ""} @@ -101,7 +101,7 @@ static void fill_bins(bNode *node, CompBuf* in, int* bins) bins[ivalue]+=1; } /*end if alpha */ } - } + } } static float brightness_mean(bNode *node, CompBuf* in) @@ -275,8 +275,8 @@ static void node_composit_exec_view_levels(void *data, bNode *node, bNodeStack * if (in[0]->hasinput==0) return; if (in[0]->data==NULL) return; - histogram=alloc_compbuf(256, 256, CB_RGBA, 1); - cbuf=typecheck_compbuf(in[0]->data, CB_RGBA); + histogram=alloc_compbuf(256, 256, CB_RGBA, 1); + cbuf=typecheck_compbuf(in[0]->data, CB_RGBA); /*initalize bins*/ for (x=0; x<256; x++) { @@ -300,9 +300,9 @@ static void node_composit_exec_view_levels(void *data, bNode *node, bNodeStack * #endif if (out[0]->hasoutput) - out[0]->vec[0]= mean; + out[0]->vec[0] = mean; if (out[1]->hasoutput) - out[1]->vec[0]= std_dev; + out[1]->vec[0] = std_dev; generate_preview(data, node, histogram); diff --git a/source/blender/nodes/composite/nodes/node_composite_lummaMatte.c b/source/blender/nodes/composite/nodes/node_composite_lummaMatte.c index 61cd4493f39..ed232933139 100644 --- a/source/blender/nodes/composite/nodes/node_composite_lummaMatte.c +++ b/source/blender/nodes/composite/nodes/node_composite_lummaMatte.c @@ -34,12 +34,12 @@ /* ******************* Luma Matte Node ********************************* */ -static bNodeSocketTemplate cmp_node_luma_matte_in[]={ +static bNodeSocketTemplate cmp_node_luma_matte_in[] = { {SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, {-1, 0, ""} }; -static bNodeSocketTemplate cmp_node_luma_matte_out[]={ +static bNodeSocketTemplate cmp_node_luma_matte_out[] = { {SOCK_RGBA, 0, N_("Image")}, {SOCK_FLOAT, 0, N_("Matte")}, {-1, 0, ""} diff --git a/source/blender/nodes/composite/nodes/node_composite_mapUV.c b/source/blender/nodes/composite/nodes/node_composite_mapUV.c index 04d2eaff4f4..40092a84367 100644 --- a/source/blender/nodes/composite/nodes/node_composite_mapUV.c +++ b/source/blender/nodes/composite/nodes/node_composite_mapUV.c @@ -34,12 +34,12 @@ /* **************** Map UV ******************** */ -static bNodeSocketTemplate cmp_node_mapuv_in[]= { +static bNodeSocketTemplate cmp_node_mapuv_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { SOCK_VECTOR, 1, N_("UV"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_mapuv_out[]= { +static bNodeSocketTemplate cmp_node_mapuv_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; @@ -135,7 +135,7 @@ static void do_mapuv(CompBuf *stackbuf, CompBuf *cbuf, CompBuf *uvbuf, float thr } } - IMB_freeImBuf(ibuf); + IMB_freeImBuf(ibuf); } diff --git a/source/blender/nodes/composite/nodes/node_composite_mapValue.c b/source/blender/nodes/composite/nodes/node_composite_mapValue.c index be69c11b35f..677d5bd5013 100644 --- a/source/blender/nodes/composite/nodes/node_composite_mapValue.c +++ b/source/blender/nodes/composite/nodes/node_composite_mapValue.c @@ -33,11 +33,11 @@ #include "node_composite_util.h" /* **************** MAP VALUE ******************** */ -static bNodeSocketTemplate cmp_node_map_value_in[]= { +static bNodeSocketTemplate cmp_node_map_value_in[] = { { SOCK_FLOAT, 1, N_("Value"), 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_map_value_out[]= { +static bNodeSocketTemplate cmp_node_map_value_out[] = { { SOCK_FLOAT, 0, N_("Value")}, { -1, 0, "" } }; @@ -48,13 +48,13 @@ static void do_map_value(bNode *node, float *out, float *src) { TexMapping *texmap= node->storage; - out[0]= (src[0] + texmap->loc[0])*texmap->size[0]; + out[0] = (src[0] + texmap->loc[0])*texmap->size[0]; if (texmap->flag & TEXMAP_CLIP_MIN) if (out[0]<texmap->min[0]) - out[0]= texmap->min[0]; + out[0] = texmap->min[0]; if (texmap->flag & TEXMAP_CLIP_MAX) if (out[0]>texmap->max[0]) - out[0]= texmap->max[0]; + out[0] = texmap->max[0]; } static void node_composit_exec_map_value(void *UNUSED(data), bNode *node, bNodeStack **in, bNodeStack **out) diff --git a/source/blender/nodes/composite/nodes/node_composite_math.c b/source/blender/nodes/composite/nodes/node_composite_math.c index 1bddfe0852a..5bc67adf5fb 100644 --- a/source/blender/nodes/composite/nodes/node_composite_math.c +++ b/source/blender/nodes/composite/nodes/node_composite_math.c @@ -33,15 +33,15 @@ #include "node_composite_util.h" /* **************** SCALAR MATH ******************** */ -static bNodeSocketTemplate cmp_node_math_in[]= { - { SOCK_FLOAT, 1, N_("Value"), 0.5f, 0.5f, 0.5f, 1.0f, -10000.0f, 10000.0f, PROP_NONE}, - { SOCK_FLOAT, 1, N_("Value"), 0.5f, 0.5f, 0.5f, 1.0f, -10000.0f, 10000.0f, PROP_NONE}, - { -1, 0, "" } +static bNodeSocketTemplate cmp_node_math_in[] = { + { SOCK_FLOAT, 1, N_("Value"), 0.5f, 0.5f, 0.5f, 1.0f, -10000.0f, 10000.0f, PROP_NONE}, + { SOCK_FLOAT, 1, N_("Value"), 0.5f, 0.5f, 0.5f, 1.0f, -10000.0f, 10000.0f, PROP_NONE}, + { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_math_out[]= { - { SOCK_FLOAT, 0, N_("Value")}, - { -1, 0, "" } +static bNodeSocketTemplate cmp_node_math_out[] = { + { SOCK_FLOAT, 0, N_("Value")}, + { -1, 0, "" } }; #ifdef WITH_COMPOSITOR_LEGACY @@ -50,63 +50,64 @@ static void do_math(bNode *node, float *out, float *in, float *in2) { switch (node->custom1) { case 0: /* Add */ - out[0]= in[0] + in2[0]; + out[0] = in[0] + in2[0]; break; case 1: /* Subtract */ - out[0]= in[0] - in2[0]; + out[0] = in[0] - in2[0]; break; case 2: /* Multiply */ - out[0]= in[0] * in2[0]; + out[0] = in[0] * in2[0]; break; case 3: /* Divide */ { if (in2[0]==0) /* We don't want to divide by zero. */ - out[0]= 0.0; + out[0] = 0.0; else - out[0]= in[0] / in2[0]; + out[0] = in[0] / in2[0]; } break; case 4: /* Sine */ - out[0]= sin(in[0]); + out[0] = sin(in[0]); break; case 5: /* Cosine */ - out[0]= cos(in[0]); + out[0] = cos(in[0]); break; case 6: /* Tangent */ - out[0]= tan(in[0]); + out[0] = tan(in[0]); break; case 7: /* Arc-Sine */ { /* Can't do the impossible... */ if (in[0] <= 1 && in[0] >= -1 ) - out[0]= asin(in[0]); + out[0] = asin(in[0]); else - out[0]= 0.0; + out[0] = 0.0; } break; case 8: /* Arc-Cosine */ { /* Can't do the impossible... */ if ( in[0] <= 1 && in[0] >= -1 ) - out[0]= acos(in[0]); + out[0] = acos(in[0]); else - out[0]= 0.0; + out[0] = 0.0; } break; case 9: /* Arc-Tangent */ - out[0]= atan(in[0]); + out[0] = atan(in[0]); break; case 10: /* Power */ { /* Only raise negative numbers by full integers */ if ( in[0] >= 0 ) { - out[0]= pow(in[0], in2[0]); + out[0] = pow(in[0], in2[0]); } else { - float y_mod_1 = fmod(in2[0], 1); + float y_mod_1 = fabsf(fmodf(in2[0], 1.0f)); + /* if input value is not nearly an integer, fall back to zero, nicer than straight rounding */ if (y_mod_1 > 0.999f || y_mod_1 < 0.001f) { - out[0]= powf(in[0], floorf(in2[0] + 0.5f)); + out[0] = powf(in[0], floorf(in2[0] + 0.5f)); } else { out[0] = 0.0f; @@ -118,50 +119,50 @@ static void do_math(bNode *node, float *out, float *in, float *in2) { /* Don't want any imaginary numbers... */ if ( in[0] > 0 && in2[0] > 0 ) - out[0]= log(in[0]) / log(in2[0]); + out[0] = log(in[0]) / log(in2[0]); else - out[0]= 0.0; + out[0] = 0.0; } break; case 12: /* Minimum */ { if ( in[0] < in2[0] ) - out[0]= in[0]; + out[0] = in[0]; else - out[0]= in2[0]; + out[0] = in2[0]; } break; case 13: /* Maximum */ { if ( in[0] > in2[0] ) - out[0]= in[0]; + out[0] = in[0]; else - out[0]= in2[0]; + out[0] = in2[0]; } break; case 14: /* Round */ { /* round by the second value */ if ( in2[0] != 0.0f ) - out[0]= floorf(in[0] / in2[0] + 0.5f) * in2[0]; + out[0] = floorf(in[0] / in2[0] + 0.5f) * in2[0]; else - out[0]= floorf(in[0] + 0.5f); + out[0] = floorf(in[0] + 0.5f); } break; case 15: /* Less Than */ { if ( in[0] < in2[0] ) - out[0]= 1.0f; + out[0] = 1.0f; else - out[0]= 0.0f; + out[0] = 0.0f; } break; case 16: /* Greater Than */ { if ( in[0] > in2[0] ) - out[0]= 1.0f; + out[0] = 1.0f; else - out[0]= 0.0f; + out[0] = 0.0f; } break; } diff --git a/source/blender/nodes/composite/nodes/node_composite_mixrgb.c b/source/blender/nodes/composite/nodes/node_composite_mixrgb.c index e2c9a5abcb1..5d3ee480612 100644 --- a/source/blender/nodes/composite/nodes/node_composite_mixrgb.c +++ b/source/blender/nodes/composite/nodes/node_composite_mixrgb.c @@ -32,13 +32,13 @@ #include "node_composite_util.h" /* **************** MIX RGB ******************** */ -static bNodeSocketTemplate cmp_node_mix_rgb_in[]= { +static bNodeSocketTemplate cmp_node_mix_rgb_in[] = { { SOCK_FLOAT, 1, N_("Fac"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 5.0f, PROP_FACTOR}, { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_mix_rgb_out[]= { +static bNodeSocketTemplate cmp_node_mix_rgb_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; @@ -55,7 +55,7 @@ static void do_mix_rgb(bNode *node, float *out, float *in1, float *in2, float *f else ramp_blend(node->custom1, col, fac[0], in2); copy_v3_v3(out, col); - out[3]= in1[3]; + out[3] = in1[3]; } static void node_composit_exec_mix_rgb(void *data, bNode *node, bNodeStack **in, bNodeStack **out) diff --git a/source/blender/nodes/composite/nodes/node_composite_normal.c b/source/blender/nodes/composite/nodes/node_composite_normal.c index 6f1e86e2760..93fd7ca1c1b 100644 --- a/source/blender/nodes/composite/nodes/node_composite_normal.c +++ b/source/blender/nodes/composite/nodes/node_composite_normal.c @@ -34,12 +34,12 @@ /* **************** NORMAL ******************** */ -static bNodeSocketTemplate cmp_node_normal_in[]= { +static bNodeSocketTemplate cmp_node_normal_in[] = { { SOCK_VECTOR, 1, N_("Normal"), 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_DIRECTION}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_normal_out[]= { +static bNodeSocketTemplate cmp_node_normal_out[] = { { SOCK_VECTOR, 0, N_("Normal")}, { SOCK_FLOAT, 0, N_("Dot")}, { -1, 0, "" } @@ -53,7 +53,7 @@ static void do_normal(bNode *node, float *out, float *in) float *nor= ((bNodeSocketValueVector*)sock->default_value)->value; /* render normals point inside... the widget points outside */ - out[0]= -dot_v3v3(nor, in); + out[0] = -dot_v3v3(nor, in); } /* generates normal, does dot product */ @@ -68,7 +68,7 @@ static void node_composit_exec_normal(void *UNUSED(data), bNode *node, bNodeStac if (in[0]->data==NULL) { copy_v3_v3(out[0]->vec, nor); /* render normals point inside... the widget points outside */ - out[1]->vec[0]= -dot_v3v3(out[0]->vec, in[0]->vec); + out[1]->vec[0] = -dot_v3v3(out[0]->vec, in[0]->vec); } else if (out[1]->hasoutput) { /* make output size of input image */ diff --git a/source/blender/nodes/composite/nodes/node_composite_normalize.c b/source/blender/nodes/composite/nodes/node_composite_normalize.c index 1d2312d8280..19b543dce5d 100644 --- a/source/blender/nodes/composite/nodes/node_composite_normalize.c +++ b/source/blender/nodes/composite/nodes/node_composite_normalize.c @@ -34,11 +34,11 @@ /* **************** NORMALIZE single channel, useful for Z buffer ******************** */ -static bNodeSocketTemplate cmp_node_normalize_in[]= { +static bNodeSocketTemplate cmp_node_normalize_in[] = { { SOCK_FLOAT, 1, N_("Value"), 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_normalize_out[]= { +static bNodeSocketTemplate cmp_node_normalize_out[] = { { SOCK_FLOAT, 0, N_("Value")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/composite/nodes/node_composite_pixelate.c b/source/blender/nodes/composite/nodes/node_composite_pixelate.c new file mode 100644 index 00000000000..5eac4867a23 --- /dev/null +++ b/source/blender/nodes/composite/nodes/node_composite_pixelate.c @@ -0,0 +1,57 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2006 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): Jeroen Bakker + * Monique Dewanchand + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file blender/nodes/composite/nodes/node_composite_pixelate.c + * \ingroup cmpnodes + */ + + +#include "node_composite_util.h" + + +/* **************** Pixelate ******************** */ + +static bNodeSocketTemplate cmp_node_pixelate_in[] = { + { SOCK_RGBA, 1, N_("Color"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_FACTOR}, + { -1, 0, "" } +}; +static bNodeSocketTemplate cmp_node_pixelate_out[] = { + { SOCK_RGBA, 0, N_("Color")}, + { -1, 0, "" } +}; + +void register_node_type_cmp_pixelate(bNodeTreeType *ttype) +{ + static bNodeType ntype; + + node_type_base(ttype, &ntype, CMP_NODE_PIXELATE, "Pixelate", NODE_CLASS_OP_FILTER, NODE_OPTIONS); + node_type_socket_templates(&ntype, cmp_node_pixelate_in, cmp_node_pixelate_out); + node_type_size(&ntype, 130, 100, 130); + + nodeRegisterType(ttype, &ntype); +} diff --git a/source/blender/nodes/composite/nodes/node_composite_premulkey.c b/source/blender/nodes/composite/nodes/node_composite_premulkey.c index d791983b069..7f7b7692b02 100644 --- a/source/blender/nodes/composite/nodes/node_composite_premulkey.c +++ b/source/blender/nodes/composite/nodes/node_composite_premulkey.c @@ -35,11 +35,11 @@ /* **************** Premul and Key Alpha Convert ******************** */ -static bNodeSocketTemplate cmp_node_premulkey_in[]= { +static bNodeSocketTemplate cmp_node_premulkey_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_premulkey_out[]= { +static bNodeSocketTemplate cmp_node_premulkey_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/composite/nodes/node_composite_rgb.c b/source/blender/nodes/composite/nodes/node_composite_rgb.c index 65c1dcdb7bb..54fba650783 100644 --- a/source/blender/nodes/composite/nodes/node_composite_rgb.c +++ b/source/blender/nodes/composite/nodes/node_composite_rgb.c @@ -34,7 +34,7 @@ /* **************** RGB ******************** */ -static bNodeSocketTemplate cmp_node_rgb_out[]= { +static bNodeSocketTemplate cmp_node_rgb_out[] = { { SOCK_RGBA, 0, N_("RGBA"), 0.5f, 0.5f, 0.5f, 1.0f}, { -1, 0, "" } }; diff --git a/source/blender/nodes/composite/nodes/node_composite_rotate.c b/source/blender/nodes/composite/nodes/node_composite_rotate.c index 8968fd5fb3a..9a76764b97e 100644 --- a/source/blender/nodes/composite/nodes/node_composite_rotate.c +++ b/source/blender/nodes/composite/nodes/node_composite_rotate.c @@ -34,12 +34,12 @@ /* **************** Rotate ******************** */ -static bNodeSocketTemplate cmp_node_rotate_in[]= { +static bNodeSocketTemplate cmp_node_rotate_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Degr"), 0.0f, 0.0f, 0.0f, 0.0f, -10000.0f, 10000.0f, PROP_ANGLE}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_rotate_out[]= { +static bNodeSocketTemplate cmp_node_rotate_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/composite/nodes/node_composite_sepcombHSVA.c b/source/blender/nodes/composite/nodes/node_composite_sepcombHSVA.c index ebc18cd19eb..f1a75493718 100644 --- a/source/blender/nodes/composite/nodes/node_composite_sepcombHSVA.c +++ b/source/blender/nodes/composite/nodes/node_composite_sepcombHSVA.c @@ -34,11 +34,11 @@ /* **************** SEPARATE HSVA ******************** */ -static bNodeSocketTemplate cmp_node_sephsva_in[]= { +static bNodeSocketTemplate cmp_node_sephsva_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_sephsva_out[]= { +static bNodeSocketTemplate cmp_node_sephsva_out[] = { { SOCK_FLOAT, 0, N_("H")}, { SOCK_FLOAT, 0, N_("S")}, { SOCK_FLOAT, 0, N_("V")}, @@ -54,10 +54,10 @@ static void do_sephsva(bNode *UNUSED(node), float *out, float *in) rgb_to_hsv(in[0], in[1], in[2], &h, &s, &v); - out[0]= h; - out[1]= s; - out[2]= v; - out[3]= in[3]; + out[0] = h; + out[1] = s; + out[2] = v; + out[3] = in[3]; } static void node_composit_exec_sephsva(void *UNUSED(data), bNode *node, bNodeStack **in, bNodeStack **out) @@ -97,7 +97,7 @@ static void node_composit_exec_sephsva(void *UNUSED(data), bNode *node, bNodeSta /*not used anymore */ if (cbuf2!=cbuf) free_compbuf(cbuf2); - free_compbuf(cbuf); + free_compbuf(cbuf); } } @@ -126,7 +126,7 @@ static bNodeSocketTemplate cmp_node_combhsva_in[] = { { SOCK_FLOAT, 1, N_("A"), 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_combhsva_out[]= { +static bNodeSocketTemplate cmp_node_combhsva_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/composite/nodes/node_composite_sepcombRGBA.c b/source/blender/nodes/composite/nodes/node_composite_sepcombRGBA.c index 0c989ed3fc6..83b2c731020 100644 --- a/source/blender/nodes/composite/nodes/node_composite_sepcombRGBA.c +++ b/source/blender/nodes/composite/nodes/node_composite_sepcombRGBA.c @@ -33,11 +33,11 @@ #include "node_composite_util.h" /* **************** SEPARATE RGBA ******************** */ -static bNodeSocketTemplate cmp_node_seprgba_in[]= { +static bNodeSocketTemplate cmp_node_seprgba_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_seprgba_out[]= { +static bNodeSocketTemplate cmp_node_seprgba_out[] = { { SOCK_FLOAT, 0, N_("R")}, { SOCK_FLOAT, 0, N_("G")}, { SOCK_FLOAT, 0, N_("B")}, @@ -98,14 +98,14 @@ void register_node_type_cmp_seprgba(bNodeTreeType *ttype) /* **************** COMBINE RGBA ******************** */ -static bNodeSocketTemplate cmp_node_combrgba_in[]= { +static bNodeSocketTemplate cmp_node_combrgba_in[] = { { SOCK_FLOAT, 1, N_("R"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_NONE}, { SOCK_FLOAT, 1, N_("G"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_NONE}, { SOCK_FLOAT, 1, N_("B"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_NONE}, { SOCK_FLOAT, 1, N_("A"), 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_combrgba_out[]= { +static bNodeSocketTemplate cmp_node_combrgba_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; @@ -150,7 +150,7 @@ static void node_composit_exec_combrgba(void *UNUSED(data), bNode *node, bNodeSt do_combrgba, CB_VAL, CB_VAL, CB_VAL, CB_VAL); out[0]->data= stackbuf; - } + } } #endif /* WITH_COMPOSITOR_LEGACY */ diff --git a/source/blender/nodes/composite/nodes/node_composite_sepcombYCCA.c b/source/blender/nodes/composite/nodes/node_composite_sepcombYCCA.c index ccae7cfe57f..982d674708c 100644 --- a/source/blender/nodes/composite/nodes/node_composite_sepcombYCCA.c +++ b/source/blender/nodes/composite/nodes/node_composite_sepcombYCCA.c @@ -34,11 +34,11 @@ /* **************** SEPARATE YCCA ******************** */ -static bNodeSocketTemplate cmp_node_sepycca_in[]= { +static bNodeSocketTemplate cmp_node_sepycca_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_sepycca_out[]= { +static bNodeSocketTemplate cmp_node_sepycca_out[] = { { SOCK_FLOAT, 0, N_("Y")}, { SOCK_FLOAT, 0, N_("Cb")}, { SOCK_FLOAT, 0, N_("Cr")}, @@ -55,10 +55,10 @@ static void do_sepycca_601(bNode *UNUSED(node), float *out, float *in) rgb_to_ycc(in[0], in[1], in[2], &y, &cb, &cr, BLI_YCC_ITU_BT601); /*divided by 255 to normalize for viewing in */ - out[0]= y/255.0f; - out[1]= cb/255.0f; - out[2]= cr/255.0f; - out[3]= in[3]; + out[0] = y/255.0f; + out[1] = cb/255.0f; + out[2] = cr/255.0f; + out[3] = in[3]; } static void do_sepycca_709(bNode *UNUSED(node), float *out, float *in) @@ -68,10 +68,10 @@ static void do_sepycca_709(bNode *UNUSED(node), float *out, float *in) rgb_to_ycc(in[0], in[1], in[2], &y, &cb, &cr, BLI_YCC_ITU_BT709); /*divided by 255 to normalize for viewing in */ - out[0]= y/255.0f; - out[1]= cb/255.0f; - out[2]= cr/255.0f; - out[3]= in[3]; + out[0] = y/255.0f; + out[1] = cb/255.0f; + out[2] = cr/255.0f; + out[3] = in[3]; } static void do_sepycca_jfif(bNode *UNUSED(node), float *out, float *in) @@ -81,10 +81,10 @@ static void do_sepycca_jfif(bNode *UNUSED(node), float *out, float *in) rgb_to_ycc(in[0], in[1], in[2], &y, &cb, &cr, BLI_YCC_JFIF_0_255); /*divided by 255 to normalize for viewing in */ - out[0]= y/255.0f; - out[1]= cb/255.0f; - out[2]= cr/255.0f; - out[3]= in[3]; + out[0] = y/255.0f; + out[1] = cb/255.0f; + out[2] = cr/255.0f; + out[3] = in[3]; } static void node_composit_exec_sepycca(void *UNUSED(data), bNode *node, bNodeStack **in, bNodeStack **out) @@ -167,14 +167,14 @@ void register_node_type_cmp_sepycca(bNodeTreeType *ttype) /* **************** COMBINE YCCA ******************** */ -static bNodeSocketTemplate cmp_node_combycca_in[]= { +static bNodeSocketTemplate cmp_node_combycca_in[] = { { SOCK_FLOAT, 1, N_("Y"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_NONE}, { SOCK_FLOAT, 1, N_("Cb"), 0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_NONE}, { SOCK_FLOAT, 1, N_("Cr"), 0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_NONE}, { SOCK_FLOAT, 1, N_("A"), 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_combycca_out[]= { +static bNodeSocketTemplate cmp_node_combycca_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; @@ -296,7 +296,7 @@ static void node_composit_exec_combycca(void *UNUSED(data), bNode *node, bNodeSt } out[0]->data= stackbuf; - } + } } #endif /* WITH_COMPOSITOR_LEGACY */ diff --git a/source/blender/nodes/composite/nodes/node_composite_sepcombYUVA.c b/source/blender/nodes/composite/nodes/node_composite_sepcombYUVA.c index 9b8c805b0f0..0a9575971b4 100644 --- a/source/blender/nodes/composite/nodes/node_composite_sepcombYUVA.c +++ b/source/blender/nodes/composite/nodes/node_composite_sepcombYUVA.c @@ -34,11 +34,11 @@ /* **************** SEPARATE YUVA ******************** */ -static bNodeSocketTemplate cmp_node_sepyuva_in[]= { +static bNodeSocketTemplate cmp_node_sepyuva_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_sepyuva_out[]= { +static bNodeSocketTemplate cmp_node_sepyuva_out[] = { { SOCK_FLOAT, 0, N_("Y")}, { SOCK_FLOAT, 0, N_("U")}, { SOCK_FLOAT, 0, N_("V")}, @@ -54,10 +54,10 @@ static void do_sepyuva(bNode *UNUSED(node), float *out, float *in) rgb_to_yuv(in[0], in[1], in[2], &y, &u, &v); - out[0]= y; - out[1]= u; - out[2]= v; - out[3]= in[3]; + out[0] = y; + out[1] = u; + out[2] = v; + out[3] = in[3]; } static void node_composit_exec_sepyuva(void *UNUSED(data), bNode *node, bNodeStack **in, bNodeStack **out) @@ -121,14 +121,14 @@ void register_node_type_cmp_sepyuva(bNodeTreeType *ttype) /* **************** COMBINE YUVA ******************** */ -static bNodeSocketTemplate cmp_node_combyuva_in[]= { +static bNodeSocketTemplate cmp_node_combyuva_in[] = { { SOCK_FLOAT, 1, N_("Y"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_NONE}, { SOCK_FLOAT, 1, N_("U"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_NONE}, { SOCK_FLOAT, 1, N_("V"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_NONE}, { SOCK_FLOAT, 1, N_("A"), 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_combyuva_out[]= { +static bNodeSocketTemplate cmp_node_combyuva_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/composite/nodes/node_composite_setalpha.c b/source/blender/nodes/composite/nodes/node_composite_setalpha.c index 503815b74a0..59c104869fe 100644 --- a/source/blender/nodes/composite/nodes/node_composite_setalpha.c +++ b/source/blender/nodes/composite/nodes/node_composite_setalpha.c @@ -33,12 +33,12 @@ #include "node_composite_util.h" /* **************** SET ALPHA ******************** */ -static bNodeSocketTemplate cmp_node_setalpha_in[]= { +static bNodeSocketTemplate cmp_node_setalpha_in[] = { { SOCK_RGBA, 1, N_("Image"), 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Alpha"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_setalpha_out[]= { +static bNodeSocketTemplate cmp_node_setalpha_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/composite/nodes/node_composite_splitViewer.c b/source/blender/nodes/composite/nodes/node_composite_splitViewer.c index f6811f526f7..73cf039c6df 100644 --- a/source/blender/nodes/composite/nodes/node_composite_splitViewer.c +++ b/source/blender/nodes/composite/nodes/node_composite_splitViewer.c @@ -33,7 +33,7 @@ #include "node_composite_util.h" /* **************** SPLIT VIEWER ******************** */ -static bNodeSocketTemplate cmp_node_splitviewer_in[]= { +static bNodeSocketTemplate cmp_node_splitviewer_in[] = { { SOCK_RGBA, 1, N_("Image"), 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_RGBA, 1, N_("Image"), 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } @@ -167,7 +167,7 @@ void register_node_type_cmp_splitviewer(bNodeTreeType *ttype) #endif /* Do not allow muting for this node. */ - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } diff --git a/source/blender/nodes/composite/nodes/node_composite_stabilize2d.c b/source/blender/nodes/composite/nodes/node_composite_stabilize2d.c index fdf0b38e844..1787e075a14 100644 --- a/source/blender/nodes/composite/nodes/node_composite_stabilize2d.c +++ b/source/blender/nodes/composite/nodes/node_composite_stabilize2d.c @@ -35,12 +35,12 @@ /* **************** Translate ******************** */ -static bNodeSocketTemplate cmp_node_stabilize2d_in[]= { +static bNodeSocketTemplate cmp_node_stabilize2d_in[] = { { SOCK_RGBA, 1, N_("Image"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_stabilize2d_out[]= { +static bNodeSocketTemplate cmp_node_stabilize2d_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/composite/nodes/node_composite_switch.c b/source/blender/nodes/composite/nodes/node_composite_switch.c index 258fac18c11..7f9127c969f 100644 --- a/source/blender/nodes/composite/nodes/node_composite_switch.c +++ b/source/blender/nodes/composite/nodes/node_composite_switch.c @@ -34,13 +34,13 @@ #include "../node_composite_util.h" /* **************** MIX RGB ******************** */ -static bNodeSocketTemplate cmp_node_switch_in[]= { +static bNodeSocketTemplate cmp_node_switch_in[] = { { SOCK_RGBA, 1, N_("Off"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, { SOCK_RGBA, 1, N_("On"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_switch_out[]= { +static bNodeSocketTemplate cmp_node_switch_out[] = { { SOCK_RGBA, 0, N_("Image"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, { -1, 0, "" } }; diff --git a/source/blender/nodes/composite/nodes/node_composite_texture.c b/source/blender/nodes/composite/nodes/node_composite_texture.c index 3fedccd7d12..b6518c48638 100644 --- a/source/blender/nodes/composite/nodes/node_composite_texture.c +++ b/source/blender/nodes/composite/nodes/node_composite_texture.c @@ -33,12 +33,12 @@ #include "node_composite_util.h" /* **************** TEXTURE ******************** */ -static bNodeSocketTemplate cmp_node_texture_in[]= { +static bNodeSocketTemplate cmp_node_texture_in[] = { { SOCK_VECTOR, 1, N_("Offset"), 0.0f, 0.0f, 0.0f, 0.0f, -2.0f, 2.0f, PROP_TRANSLATION}, { SOCK_VECTOR, 1, N_("Scale"), 1.0f, 1.0f, 1.0f, 1.0f, -10.0f, 10.0f, PROP_XYZ}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_texture_out[]= { +static bNodeSocketTemplate cmp_node_texture_out[] = { { SOCK_FLOAT, 0, N_("Value")}, { SOCK_RGBA, 0, N_("Color")}, { -1, 0, "" } @@ -51,28 +51,28 @@ static void texture_procedural(CompBuf *cbuf, float *out, float xco, float yco) { bNode *node= cbuf->node; TexResult texres= {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, NULL}; - float vec[3], *size, nor[3]={0.0f, 0.0f, 0.0f}, col[4]; + float vec[3], *size, nor[3] = {0.0f, 0.0f, 0.0f}, col[4]; int retval, type= cbuf->procedural_type; size= cbuf->procedural_size; - vec[0]= size[0]*(xco + cbuf->procedural_offset[0]); - vec[1]= size[1]*(yco + cbuf->procedural_offset[1]); - vec[2]= size[2]*cbuf->procedural_offset[2]; + vec[0] = size[0]*(xco + cbuf->procedural_offset[0]); + vec[1] = size[1]*(yco + cbuf->procedural_offset[1]); + vec[2] = size[2]*cbuf->procedural_offset[2]; retval= multitex_ext((Tex *)node->id, vec, NULL, NULL, 0, &texres); if (type==CB_VAL) { if (texres.talpha) - col[0]= texres.ta; + col[0] = texres.ta; else - col[0]= texres.tin; + col[0] = texres.tin; } else if (type==CB_RGBA) { if (texres.talpha) - col[3]= texres.ta; + col[3] = texres.ta; else - col[3]= texres.tin; + col[3] = texres.tin; if ((retval & TEX_RGB)) { copy_v3_v3(col, &texres.tr); @@ -81,7 +81,7 @@ static void texture_procedural(CompBuf *cbuf, float *out, float xco, float yco) copy_v3_fl(col, col[3]); } } - else { + else { copy_v3_v3(col, nor); } diff --git a/source/blender/nodes/composite/nodes/node_composite_tonemap.c b/source/blender/nodes/composite/nodes/node_composite_tonemap.c index 5e4efe2f3b1..00b1a5514dc 100644 --- a/source/blender/nodes/composite/nodes/node_composite_tonemap.c +++ b/source/blender/nodes/composite/nodes/node_composite_tonemap.c @@ -32,11 +32,11 @@ #include "node_composite_util.h" -static bNodeSocketTemplate cmp_node_tonemap_in[]= { +static bNodeSocketTemplate cmp_node_tonemap_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_tonemap_out[]= { +static bNodeSocketTemplate cmp_node_tonemap_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/composite/nodes/node_composite_translate.c b/source/blender/nodes/composite/nodes/node_composite_translate.c index 649902ff908..1c2963a2f08 100644 --- a/source/blender/nodes/composite/nodes/node_composite_translate.c +++ b/source/blender/nodes/composite/nodes/node_composite_translate.c @@ -35,13 +35,13 @@ /* **************** Translate ******************** */ -static bNodeSocketTemplate cmp_node_translate_in[]= { +static bNodeSocketTemplate cmp_node_translate_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { SOCK_FLOAT, 1, N_("X"), 0.0f, 0.0f, 0.0f, 0.0f, -10000.0f, 10000.0f, PROP_NONE}, { SOCK_FLOAT, 1, N_("Y"), 0.0f, 0.0f, 0.0f, 0.0f, -10000.0f, 10000.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_translate_out[]= { +static bNodeSocketTemplate cmp_node_translate_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/composite/nodes/node_composite_valToRgb.c b/source/blender/nodes/composite/nodes/node_composite_valToRgb.c index 87a776c7bea..5c111998b18 100644 --- a/source/blender/nodes/composite/nodes/node_composite_valToRgb.c +++ b/source/blender/nodes/composite/nodes/node_composite_valToRgb.c @@ -34,11 +34,11 @@ /* **************** VALTORGB ******************** */ -static bNodeSocketTemplate cmp_node_valtorgb_in[]= { +static bNodeSocketTemplate cmp_node_valtorgb_in[] = { { SOCK_FLOAT, 1, N_("Fac"), 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_valtorgb_out[]= { +static bNodeSocketTemplate cmp_node_valtorgb_out[] = { { SOCK_RGBA, 0, N_("Image")}, { SOCK_FLOAT, 0, N_("Alpha")}, { -1, 0, "" } @@ -106,11 +106,11 @@ void register_node_type_cmp_valtorgb(bNodeTreeType *ttype) /* **************** RGBTOBW ******************** */ -static bNodeSocketTemplate cmp_node_rgbtobw_in[]= { +static bNodeSocketTemplate cmp_node_rgbtobw_in[] = { { SOCK_RGBA, 1, N_("Image"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_rgbtobw_out[]= { +static bNodeSocketTemplate cmp_node_rgbtobw_out[] = { { SOCK_FLOAT, 0, N_("Val"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, { -1, 0, "" } }; diff --git a/source/blender/nodes/composite/nodes/node_composite_value.c b/source/blender/nodes/composite/nodes/node_composite_value.c index 63ab4fcb58f..2c65fe6be19 100644 --- a/source/blender/nodes/composite/nodes/node_composite_value.c +++ b/source/blender/nodes/composite/nodes/node_composite_value.c @@ -33,7 +33,7 @@ #include "node_composite_util.h" /* **************** VALUE ******************** */ -static bNodeSocketTemplate cmp_node_value_out[]= { +static bNodeSocketTemplate cmp_node_value_out[] = { /* XXX value nodes use the output sockets for buttons, so we need explicit limits here! */ { SOCK_FLOAT, 0, N_("Value"), 0.0f, 0.0f, 0.0f, 0.0f, -FLT_MAX, FLT_MAX}, { -1, 0, "" } @@ -56,7 +56,7 @@ static void node_composit_exec_value(void *UNUSED(data), bNode *node, bNodeStack bNodeSocket *sock= node->outputs.first; float val= ((bNodeSocketValueFloat*)sock->default_value)->value; - out[0]->vec[0]= val; + out[0]->vec[0] = val; } #endif /* WITH_COMPOSITOR_LEGACY */ diff --git a/source/blender/nodes/composite/nodes/node_composite_viewer.c b/source/blender/nodes/composite/nodes/node_composite_viewer.c index 6321b1def4d..938f75cf3f5 100644 --- a/source/blender/nodes/composite/nodes/node_composite_viewer.c +++ b/source/blender/nodes/composite/nodes/node_composite_viewer.c @@ -149,7 +149,7 @@ void register_node_type_cmp_viewer(bNodeTreeType *ttype) node_type_exec(&ntype, node_composit_exec_viewer); #endif - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } diff --git a/source/blender/nodes/composite/nodes/node_composite_zcombine.c b/source/blender/nodes/composite/nodes/node_composite_zcombine.c index 3decbe8d230..8e639aaa357 100644 --- a/source/blender/nodes/composite/nodes/node_composite_zcombine.c +++ b/source/blender/nodes/composite/nodes/node_composite_zcombine.c @@ -35,14 +35,14 @@ /* **************** Z COMBINE ******************** */ /* lazy coder note: node->custom2 is abused to send signal */ -static bNodeSocketTemplate cmp_node_zcombine_in[]= { +static bNodeSocketTemplate cmp_node_zcombine_in[] = { { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Z"), 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 10000.0f, PROP_NONE}, { SOCK_RGBA, 1, N_("Image"), 1.0f, 1.0f, 1.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Z"), 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 10000.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_zcombine_out[]= { +static bNodeSocketTemplate cmp_node_zcombine_out[] = { { SOCK_RGBA, 0, N_("Image")}, { SOCK_FLOAT, 0, N_("Z")}, { -1, 0, "" } @@ -60,10 +60,10 @@ static void do_zcombine(bNode *node, float *out, float *src1, float *z1, float * // use alpha in combine operation alpha= src1[3]; malpha= 1.0f - alpha; - out[0]= malpha*src2[0] + alpha*src1[0]; - out[1]= malpha*src2[1] + alpha*src1[1]; - out[2]= malpha*src2[2] + alpha*src1[2]; - out[3]= malpha*src2[3] + alpha*src1[3]; + out[0] = malpha*src2[0] + alpha*src1[0]; + out[1] = malpha*src2[1] + alpha*src1[1]; + out[2] = malpha*src2[2] + alpha*src1[2]; + out[3] = malpha*src2[3] + alpha*src1[3]; } else { // do combination based solely on z value @@ -75,10 +75,10 @@ static void do_zcombine(bNode *node, float *out, float *src1, float *z1, float * // use alpha in combine operation alpha= src2[3]; malpha= 1.0f - alpha; - out[0]= malpha*src1[0] + alpha*src2[0]; - out[1]= malpha*src1[1] + alpha*src2[1]; - out[2]= malpha*src1[2] + alpha*src2[2]; - out[3]= malpha*src1[3] + alpha*src2[3]; + out[0] = malpha*src1[0] + alpha*src2[0]; + out[1] = malpha*src1[1] + alpha*src2[1]; + out[2] = malpha*src1[2] + alpha*src2[2]; + out[3] = malpha*src1[3] + alpha*src2[3]; } else { // do combination based solely on z value @@ -111,20 +111,20 @@ static void do_zcombine_add(bNode *node, float *out, float *col1, float *col2, f malpha= 1.0f - alpha; - out[0]= malpha*col1[0] + alpha*col2[0]; - out[1]= malpha*col1[1] + alpha*col2[1]; - out[2]= malpha*col1[2] + alpha*col2[2]; - out[3]= malpha*col1[3] + alpha*col2[3]; + out[0] = malpha*col1[0] + alpha*col2[0]; + out[1] = malpha*col1[1] + alpha*col2[1]; + out[2] = malpha*col1[2] + alpha*col2[2]; + out[3] = malpha*col1[3] + alpha*col2[3]; } else { alpha= col1[3]; malpha= 1.0f - alpha; - out[0]= malpha*col2[0] + alpha*col1[0]; - out[1]= malpha*col2[1] + alpha*col1[1]; - out[2]= malpha*col2[2] + alpha*col1[2]; - out[3]= malpha*col2[3] + alpha*col1[3]; + out[0] = malpha*col2[0] + alpha*col1[0]; + out[1] = malpha*col2[1] + alpha*col1[1]; + out[2] = malpha*col2[2] + alpha*col1[2]; + out[3] = malpha*col2[3] + alpha*col1[3]; } } else { @@ -132,10 +132,10 @@ static void do_zcombine_add(bNode *node, float *out, float *col1, float *col2, f alpha = *acol; malpha= 1.0f - alpha; - out[0]= malpha*col1[0] + alpha*col2[0]; - out[1]= malpha*col1[1] + alpha*col2[1]; - out[2]= malpha*col1[2] + alpha*col2[2]; - out[3]= malpha*col1[3] + alpha*col2[3]; + out[0] = malpha*col1[0] + alpha*col2[0]; + out[1] = malpha*col1[1] + alpha*col2[1]; + out[2] = malpha*col1[2] + alpha*col2[2]; + out[3] = malpha*col1[3] + alpha*col2[3]; } } @@ -202,8 +202,8 @@ static void node_composit_exec_zcombine(void *data, bNode *node, bNodeStack **in aabuf= MEM_mallocN(cbuf->x*cbuf->y, "aa buf"); fp= mbuf->rect; for (x= cbuf->x*cbuf->y-1; x>=0; x--) - if (fp[x]==0.0f) aabuf[x]= 0; - else aabuf[x]= 255; + if (fp[x]==0.0f) aabuf[x] = 0; + else aabuf[x] = 255; antialias_tagbuf(cbuf->x, cbuf->y, aabuf); @@ -211,7 +211,7 @@ static void node_composit_exec_zcombine(void *data, bNode *node, bNodeStack **in fp= mbuf->rect; for (x= cbuf->x*cbuf->y-1; x>=0; x--) if (aabuf[x]>1) - fp[x]= (1.0f/255.0f)*(float)aabuf[x]; + fp[x] = (1.0f/255.0f)*(float)aabuf[x]; composit3_pixel_processor(node, stackbuf, in[0]->data, in[0]->vec, in[2]->data, in[2]->vec, mbuf, NULL, do_zcombine_add, CB_RGBA, CB_RGBA, CB_VAL); diff --git a/source/blender/nodes/intern/node_common.c b/source/blender/nodes/intern/node_common.c index 301dea22c17..86ef8a14c12 100644 --- a/source/blender/nodes/intern/node_common.c +++ b/source/blender/nodes/intern/node_common.c @@ -92,7 +92,7 @@ bNodeSocket *node_group_add_extern_socket(bNodeTree *UNUSED(ntree), ListBase *lb sock->new_sock = NULL; /* group sockets are dynamically added */ - sock->flag |= SOCK_DYNAMIC; + sock->flag |= SOCK_DYNAMIC|SOCK_COLLAPSED; sock->own_index = gsock->own_index; sock->groupsock = gsock; @@ -115,7 +115,7 @@ bNodeSocket *node_group_add_socket(bNodeTree *ngroup, const char *name, int type BLI_strncpy(gsock->name, name, sizeof(gsock->name)); gsock->type = type; /* group sockets are dynamically added */ - gsock->flag |= SOCK_DYNAMIC; + gsock->flag |= SOCK_DYNAMIC|SOCK_COLLAPSED; gsock->next = gsock->prev = NULL; gsock->new_sock = NULL; @@ -354,168 +354,6 @@ static void UNUSED_FUNCTION(node_group_link)(bNodeTree *ntree, bNodeSocket *sock node_group_expose_socket(ntree, sock, in_out); } -/**** For Loop ****/ - -/* Essentially a group node with slightly different behavior. - * The internal tree is executed several times, with each output being re-used - * as an input in the next iteration. For this purpose, input and output socket - * lists are kept identical! - */ - -bNodeTemplate node_forloop_template(bNode *node) -{ - bNodeTemplate ntemp; - ntemp.type = NODE_FORLOOP; - ntemp.ngroup = (bNodeTree*)node->id; - return ntemp; -} - -void node_forloop_init(bNodeTree *ntree, bNode *node, bNodeTemplate *ntemp) -{ - bNodeSocket *sock; - - node->id = (ID*)ntemp->ngroup; - - sock = nodeAddSocket(ntree, node, SOCK_IN, "Iterations", SOCK_FLOAT); - node_socket_set_default_value_float(sock->default_value, PROP_UNSIGNED, 1, 0, 10000); - - /* NB: group socket input/output roles are inverted internally! - * Group "inputs" work as outputs in links and vice versa. - */ - if (ntemp->ngroup) { - bNodeSocket *gsock; - for (gsock=ntemp->ngroup->inputs.first; gsock; gsock=gsock->next) - node_group_add_extern_socket(ntree, &node->inputs, SOCK_IN, gsock); - for (gsock=ntemp->ngroup->outputs.first; gsock; gsock=gsock->next) - node_group_add_extern_socket(ntree, &node->outputs, SOCK_OUT, gsock); - } -} - -void node_forloop_init_tree(bNodeTree *ntree) -{ - bNodeSocket *sock; - sock = node_group_add_socket(ntree, "Iteration", SOCK_FLOAT, SOCK_IN); - sock->flag |= SOCK_INTERNAL; -} - -static void loop_sync(bNodeTree *ntree, int sync_in_out) -{ - bNodeSocket *sock, *sync, *nsync, *mirror; - ListBase *sync_lb; - - if (sync_in_out==SOCK_IN) { - sock = ntree->outputs.first; - - sync = ntree->inputs.first; - sync_lb = &ntree->inputs; - } - else { - sock = ntree->inputs.first; - - sync = ntree->outputs.first; - sync_lb = &ntree->outputs; - } - - /* NB: the sock->storage pointer is used here directly to store the own_index int - * out the mirrored socket counterpart! - */ - - while (sock) { - /* skip static and internal sockets on the sync side (preserves socket order!) */ - while (sync && ((sync->flag & SOCK_INTERNAL) || !(sync->flag & SOCK_DYNAMIC))) - sync = sync->next; - - if (sync && !(sync->flag & SOCK_INTERNAL) && (sync->flag & SOCK_DYNAMIC)) { - if (sock->storage==NULL) { - /* if mirror index is 0, the sockets is newly added and a new mirror must be created. */ - mirror = node_group_expose_socket(ntree, sock, sync_in_out); - /* store the mirror index */ - sock->storage = SET_INT_IN_POINTER(mirror->own_index); - mirror->storage = SET_INT_IN_POINTER(sock->own_index); - /* move mirror to the right place */ - BLI_remlink(sync_lb, mirror); - if (sync) - BLI_insertlinkbefore(sync_lb, sync, mirror); - else - BLI_addtail(sync_lb, mirror); - } - else { - /* look up the mirror socket */ - for (mirror=sync; mirror; mirror=mirror->next) - if (mirror->own_index == GET_INT_FROM_POINTER(sock->storage)) - break; - /* make sure the name is the same (only for identification by user, no deeper meaning) */ - BLI_strncpy(mirror->name, sock->name, sizeof(mirror->name)); - /* fix the socket order if necessary */ - if (mirror != sync) { - BLI_remlink(sync_lb, mirror); - BLI_insertlinkbefore(sync_lb, sync, mirror); - } - else - sync = sync->next; - } - } - - sock = sock->next; - } - - /* remaining sockets in sync_lb are leftovers from deleted sockets, remove them */ - while (sync) { - nsync = sync->next; - if (!(sync->flag & SOCK_INTERNAL) && (sync->flag & SOCK_DYNAMIC)) - node_group_remove_socket(ntree, sync, sync_in_out); - sync = nsync; - } -} - -void node_loop_update_tree(bNodeTree *ngroup) -{ - /* make sure inputs & outputs are identical */ - if (ngroup->update & NTREE_UPDATE_GROUP_IN) - loop_sync(ngroup, SOCK_OUT); - if (ngroup->update & NTREE_UPDATE_GROUP_OUT) - loop_sync(ngroup, SOCK_IN); -} - -void node_whileloop_init(bNodeTree *ntree, bNode *node, bNodeTemplate *ntemp) -{ - bNodeSocket *sock; - - node->id = (ID*)ntemp->ngroup; - - sock = nodeAddSocket(ntree, node, SOCK_IN, "Condition", SOCK_FLOAT); - node_socket_set_default_value_float(sock->default_value, PROP_NONE, 1, 0, 1); - - /* max iterations */ - node->custom1 = 10000; - - /* NB: group socket input/output roles are inverted internally! - * Group "inputs" work as outputs in links and vice versa. - */ - if (ntemp->ngroup) { - bNodeSocket *gsock; - for (gsock=ntemp->ngroup->inputs.first; gsock; gsock=gsock->next) - node_group_add_extern_socket(ntree, &node->inputs, SOCK_IN, gsock); - for (gsock=ntemp->ngroup->outputs.first; gsock; gsock=gsock->next) - node_group_add_extern_socket(ntree, &node->outputs, SOCK_OUT, gsock); - } -} - -void node_whileloop_init_tree(bNodeTree *ntree) -{ - bNodeSocket *sock; - sock = node_group_add_socket(ntree, "Condition", SOCK_FLOAT, SOCK_OUT); - sock->flag |= SOCK_INTERNAL; -} - -bNodeTemplate node_whileloop_template(bNode *node) -{ - bNodeTemplate ntemp; - ntemp.type = NODE_WHILELOOP; - ntemp.ngroup = (bNodeTree*)node->id; - return ntemp; -} - /**** FRAME ****/ static void node_frame_init(bNodeTree *UNUSED(ntree), bNode *node, bNodeTemplate *UNUSED(ntemp)) @@ -547,16 +385,13 @@ void register_node_type_frame(bNodeTreeType *ttype) /* **************** REROUTE ******************** */ /* simple, only a single input and output here */ -static ListBase node_reroute_internal_connect(bNodeTree *ntree, bNode *node) +static void node_reroute_update_internal_links(bNodeTree *ntree, bNode *node) { bNodeLink *link; - ListBase ret; - - ret.first = ret.last = NULL; /* Security check! */ if (!ntree) - return ret; + return; link = MEM_callocN(sizeof(bNodeLink), "internal node link"); link->fromnode = node; @@ -565,9 +400,7 @@ static ListBase node_reroute_internal_connect(bNodeTree *ntree, bNode *node) link->tosock = node->outputs.first; /* internal link is always valid */ link->flag |= NODE_LINK_VALID; - BLI_addtail(&ret, link); - - return ret; + BLI_addtail(&node->internal_links, link); } static void node_reroute_init(bNodeTree *ntree, bNode *node, bNodeTemplate *UNUSED(ntemp)) @@ -586,7 +419,7 @@ void register_node_type_reroute(bNodeTreeType *ttype) node_type_base(ttype, ntype, NODE_REROUTE, "Reroute", NODE_CLASS_LAYOUT, 0); node_type_init(ntype, node_reroute_init); - node_type_internal_connect(ntype, node_reroute_internal_connect); + node_type_internal_links(ntype, node_reroute_update_internal_links); ntype->needs_free = 1; nodeRegisterType(ttype, ntype); diff --git a/source/blender/nodes/intern/node_common.h b/source/blender/nodes/intern/node_common.h index 00f72469b0f..9e04a9e05f8 100644 --- a/source/blender/nodes/intern/node_common.h +++ b/source/blender/nodes/intern/node_common.h @@ -38,18 +38,8 @@ struct bNodeTree; void node_group_init(struct bNodeTree *ntree, struct bNode *node, struct bNodeTemplate *ntemp); -void node_forloop_init(struct bNodeTree *ntree, struct bNode *node, struct bNodeTemplate *ntemp); -void node_whileloop_init(struct bNodeTree *ntree, struct bNode *node, struct bNodeTemplate *ntemp); - -void node_forloop_init_tree(struct bNodeTree *ntree); -void node_whileloop_init_tree(struct bNodeTree *ntree); - const char *node_group_label(struct bNode *node); - struct bNodeTemplate node_group_template(struct bNode *node); -struct bNodeTemplate node_forloop_template(struct bNode *node); -struct bNodeTemplate node_whileloop_template(struct bNode *node); - int node_group_valid(struct bNodeTree *ntree, struct bNodeTemplate *ntemp); void node_group_verify(struct bNodeTree *ntree, struct bNode *node, struct ID *id); @@ -57,8 +47,6 @@ struct bNodeTree *node_group_edit_get(struct bNode *node); struct bNodeTree *node_group_edit_set(struct bNode *node, int edit); void node_group_edit_clear(bNode *node); -void node_loop_update_tree(struct bNodeTree *ngroup); - void ntree_update_reroute_nodes(struct bNodeTree *ntree); #endif diff --git a/source/blender/nodes/intern/node_exec.c b/source/blender/nodes/intern/node_exec.c index d01ef2e2d52..3cc7ebf9337 100644 --- a/source/blender/nodes/intern/node_exec.c +++ b/source/blender/nodes/intern/node_exec.c @@ -69,7 +69,7 @@ void node_get_stack(bNode *node, bNodeStack *stack, bNodeStack **in, bNodeStack } } -void node_init_input_index(bNodeSocket *sock, int *index) +static void node_init_input_index(bNodeSocket *sock, int *index) { if (sock->link && sock->link->fromsock) { sock->stack_index = sock->link->fromsock->stack_index; @@ -79,16 +79,31 @@ void node_init_input_index(bNodeSocket *sock, int *index) } } -void node_init_output_index(bNodeSocket *sock, int *index) +static void node_init_output_index(bNodeSocket *sock, int *index, ListBase *internal_links) { - sock->stack_index = (*index)++; + if (internal_links) { + bNodeLink *link; + /* copy the stack index from internally connected input to skip the node */ + for (link = internal_links->first; link; link = link->next) { + if (link->tosock == sock) { + sock->stack_index = link->fromsock->stack_index; + break; + } + } + /* if not internally connected, assign a new stack index anyway to avoid bad stack access */ + if (!link) + sock->stack_index = (*index)++; + } + else { + sock->stack_index = (*index)++; + } } /* basic preparation of socket stacks */ static struct bNodeStack *setup_stack(bNodeStack *stack, bNodeSocket *sock) { bNodeStack *ns = node_get_socket_stack(stack, sock); - float null_value[4]= {0.0f, 0.0f, 0.0f, 0.0f}; + float null_value[4] = {0.0f, 0.0f, 0.0f, 0.0f}; /* don't mess with remote socket stacks, these are initialized by other nodes! */ if (sock->link) @@ -133,7 +148,7 @@ bNodeTreeExec *ntree_exec_begin(bNodeTree *ntree) bNodeExec *nodeexec; bNodeSocket *sock, *gsock; bNodeStack *ns; - int index= 0; + int index; bNode **nodelist; int totnodes, n; @@ -148,10 +163,11 @@ bNodeTreeExec *ntree_exec_begin(bNodeTree *ntree) /* backpointer to node tree */ exec->nodetree = ntree; + /* set stack indices */ + index = 0; /* group inputs essentially work as outputs */ for (gsock=ntree->inputs.first; gsock; gsock = gsock->next) - node_init_output_index(gsock, &index); - /* set stack indexes */ + node_init_output_index(gsock, &index, NULL); for (n=0; n < totnodes; ++n) { node = nodelist[n]; @@ -160,8 +176,15 @@ bNodeTreeExec *ntree_exec_begin(bNodeTree *ntree) /* init node socket stack indexes */ for (sock=node->inputs.first; sock; sock=sock->next) node_init_input_index(sock, &index); - for (sock=node->outputs.first; sock; sock=sock->next) - node_init_output_index(sock, &index); + + if (node->flag & NODE_MUTED || node->type == NODE_REROUTE) { + for (sock=node->outputs.first; sock; sock=sock->next) + node_init_output_index(sock, &index, &node->internal_links); + } + else { + for (sock=node->outputs.first; sock; sock=sock->next) + node_init_output_index(sock, &index, NULL); + } } /* group outputs essentially work as inputs */ for (gsock=ntree->outputs.first; gsock; gsock = gsock->next) diff --git a/source/blender/nodes/intern/node_exec.h b/source/blender/nodes/intern/node_exec.h index 1003206e96a..e985795de71 100644 --- a/source/blender/nodes/intern/node_exec.h +++ b/source/blender/nodes/intern/node_exec.h @@ -73,8 +73,6 @@ typedef struct bNodeThreadStack { struct bNodeStack *node_get_socket_stack(struct bNodeStack *stack, struct bNodeSocket *sock); void node_get_stack(struct bNode *node, struct bNodeStack *stack, struct bNodeStack **in, struct bNodeStack **out); -void node_init_input_index(struct bNodeSocket *sock, int *index); -void node_init_output_index(struct bNodeSocket *sock, int *index); struct bNodeTreeExec *ntree_exec_begin(struct bNodeTree *ntree); void ntree_exec_end(struct bNodeTreeExec *exec); diff --git a/source/blender/nodes/intern/node_socket.c b/source/blender/nodes/intern/node_socket.c index 8b393dd740a..0335d295fba 100644 --- a/source/blender/nodes/intern/node_socket.c +++ b/source/blender/nodes/intern/node_socket.c @@ -41,6 +41,7 @@ #include "BLI_listbase.h" #include "BLI_math.h" #include "BLI_utildefines.h" +#include "BLI_string.h" #include "BKE_DerivedMesh.h" #include "BKE_node.h" @@ -157,6 +158,20 @@ static bNodeSocketType node_socket_type_mesh = { /* buttonfunc */ NULL, }; +/****************** STRING ******************/ + +static bNodeSocketType node_socket_type_string = { + /* type */ SOCK_STRING, + /* ui_name */ "String", + /* ui_description */ "String", + /* ui_icon */ 0, + /* ui_color */ {255, 255, 255, 255}, + + /* value_structname */ "bNodeSocketValueString", + /* value_structsize */ sizeof(bNodeSocketValueString), + + /* buttonfunc */ NULL, +}; void node_socket_type_init(bNodeSocketType *types[]) { @@ -169,6 +184,7 @@ void node_socket_type_init(bNodeSocketType *types[]) INIT_TYPE(boolean); INIT_TYPE(shader); INIT_TYPE(mesh); + INIT_TYPE(string); #undef INIT_TYPE } @@ -218,6 +234,9 @@ void node_socket_init_default_value(int type, void *default_value) case SOCK_MESH: node_socket_set_default_value_mesh(default_value); break; + case SOCK_STRING: + node_socket_set_default_value_string(default_value, PROP_NONE, (char *)""); + break; } } @@ -265,6 +284,13 @@ void node_socket_set_default_value_rgba(void *default_value, float r, float g, f val->value[3] = a; } +void node_socket_set_default_value_string(void *default_value, PropertySubType subtype, const char *value) +{ + bNodeSocketValueString *val = default_value; + val->subtype = subtype; + BLI_strncpy(val->value, value, 1024);//FILE_MAX +} + void node_socket_set_default_value_shader(void *UNUSED(default_value)) { } @@ -282,12 +308,14 @@ void node_socket_copy_default_value(int type, void *to_default_value, void *from bNodeSocketValueBoolean *frombool= (bNodeSocketValueBoolean*)from_default_value; bNodeSocketValueVector *fromvector= (bNodeSocketValueVector*)from_default_value; bNodeSocketValueRGBA *fromrgba= (bNodeSocketValueRGBA*)from_default_value; + bNodeSocketValueString *fromstring= (bNodeSocketValueString*)from_default_value; bNodeSocketValueFloat *tofloat= (bNodeSocketValueFloat*)to_default_value; bNodeSocketValueInt *toint= (bNodeSocketValueInt*)to_default_value; bNodeSocketValueBoolean *tobool= (bNodeSocketValueBoolean*)to_default_value; bNodeSocketValueVector *tovector= (bNodeSocketValueVector*)to_default_value; bNodeSocketValueRGBA *torgba= (bNodeSocketValueRGBA*)to_default_value; + bNodeSocketValueString *tostring= (bNodeSocketValueString*)to_default_value; switch (type) { case SOCK_FLOAT: @@ -305,6 +333,9 @@ void node_socket_copy_default_value(int type, void *to_default_value, void *from case SOCK_RGBA: *torgba = *fromrgba; break; + case SOCK_STRING: + *tostring = *fromstring; + break; } } @@ -470,6 +501,9 @@ struct bNodeSocket *node_add_input_from_template(struct bNodeTree *ntree, struct case SOCK_MESH: node_socket_set_default_value_mesh(sock->default_value); break; + case SOCK_STRING: + node_socket_set_default_value_string(sock->default_value, stemp->subtype, (char *)""); + break; } return sock; @@ -490,39 +524,39 @@ static bNodeSocket *verify_socket_template(bNodeTree *ntree, bNode *node, int in break; } if (sock) { - sock->type= stemp->type; /* in future, read this from tydefs! */ - if (stemp->limit==0) sock->limit= 0xFFF; - else sock->limit= stemp->limit; + sock->type = stemp->type; /* in future, read this from tydefs! */ + if (stemp->limit == 0) sock->limit= 0xFFF; + else sock->limit = stemp->limit; sock->flag |= stemp->flag; /* Copy the property range and subtype parameters in case the template changed. * NOT copying the actual value here, only button behavior changes! */ switch (sock->type) { - case SOCK_FLOAT: + case SOCK_FLOAT: { bNodeSocketValueFloat *dval= sock->default_value; dval->min = stemp->min; dval->max = stemp->max; dval->subtype = stemp->subtype; + break; } - break; - case SOCK_INT: + case SOCK_INT: { bNodeSocketValueInt *dval= sock->default_value; dval->min = stemp->min; dval->max = stemp->max; dval->subtype = stemp->subtype; + break; } - break; - case SOCK_VECTOR: + case SOCK_VECTOR: { bNodeSocketValueVector *dval= sock->default_value; dval->min = stemp->min; dval->max = stemp->max; dval->subtype = stemp->subtype; + break; } - break; } BLI_remlink(socklist, sock); @@ -600,7 +634,9 @@ void node_verify_socket_templates(bNodeTree *ntree, bNode *node) * This also prevents group node sockets from being removed, without the need to explicitly * check the node type here. */ - if (ntype && ((ntype->inputs && ntype->inputs[0].type>=0) || (ntype->outputs && ntype->outputs[0].type>=0))) { + if (ntype && ((ntype->inputs && ntype->inputs[0].type >= 0) || + (ntype->outputs && ntype->outputs[0].type >= 0))) + { verify_socket_template_list(ntree, node, SOCK_IN, &node->inputs, ntype->inputs); verify_socket_template_list(ntree, node, SOCK_OUT, &node->outputs, ntype->outputs); } diff --git a/source/blender/nodes/intern/node_util.c b/source/blender/nodes/intern/node_util.c index 27258c45fe5..09e6ddd18a5 100644 --- a/source/blender/nodes/intern/node_util.c +++ b/source/blender/nodes/intern/node_util.c @@ -65,12 +65,12 @@ void node_free_standard_storage(bNode *node) void node_copy_curves(bNode *orig_node, bNode *new_node) { - new_node->storage= curvemapping_copy(orig_node->storage); + new_node->storage = curvemapping_copy(orig_node->storage); } void node_copy_standard_storage(bNode *orig_node, bNode *new_node) { - new_node->storage= MEM_dupallocN(orig_node->storage); + new_node->storage = MEM_dupallocN(orig_node->storage); } void *node_initexec_curves(bNode *node) @@ -109,18 +109,15 @@ const char *node_filter_label(bNode *node) return IFACE_(name); } -ListBase node_internal_connect_default(bNodeTree *ntree, bNode *node) +void node_update_internal_links_default(bNodeTree *ntree, bNode *node) { - ListBase ret; bNodeSocket *fromsock_first=NULL, *tosock_first=NULL; /* used for fallback link if no other reconnections are found */ int datatype; int num_links_in = 0, num_links_out = 0, num_reconnect = 0; - ret.first = ret.last = NULL; - /* Security check! */ if (!ntree) - return ret; + return; for (datatype=0; datatype < NUM_SOCKET_TYPES; ++datatype) { bNodeSocket *fromsock, *tosock; @@ -170,7 +167,7 @@ ListBase node_internal_connect_default(bNodeTree *ntree, bNode *node) ilink->tosock = tosock; /* internal link is always valid */ ilink->flag |= NODE_LINK_VALID; - BLI_addtail(&ret, ilink); + BLI_addtail(&node->internal_links, ilink); ++num_reconnect; } @@ -188,8 +185,6 @@ ListBase node_internal_connect_default(bNodeTree *ntree, bNode *node) ilink->tosock = tosock_first; /* internal link is always valid */ ilink->flag |= NODE_LINK_VALID; - BLI_addtail(&ret, ilink); + BLI_addtail(&node->internal_links, ilink); } - - return ret; } diff --git a/source/blender/nodes/intern/node_util.h b/source/blender/nodes/intern/node_util.h index 95104df5fed..3134baa283c 100644 --- a/source/blender/nodes/intern/node_util.h +++ b/source/blender/nodes/intern/node_util.h @@ -62,7 +62,7 @@ const char *node_math_label(struct bNode *node); const char *node_vect_math_label(struct bNode *node); const char *node_filter_label(struct bNode *node); -ListBase node_internal_connect_default(struct bNodeTree *ntree, struct bNode *node); +void node_update_internal_links_default(struct bNodeTree *ntree, struct bNode *node); #endif diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.c index ad907c317f8..b7dc83d7d79 100644 --- a/source/blender/nodes/shader/node_shader_tree.c +++ b/source/blender/nodes/shader/node_shader_tree.c @@ -87,10 +87,11 @@ static void foreach_nodeclass(Scene *scene, void *calldata, bNodeClassCallback f func(calldata, NODE_CLASS_SHADER, N_("Shader")); func(calldata, NODE_CLASS_TEXTURE, N_("Texture")); } - + func(calldata, NODE_CLASS_OP_COLOR, N_("Color")); func(calldata, NODE_CLASS_OP_VECTOR, N_("Vector")); func(calldata, NODE_CLASS_CONVERTOR, N_("Convertor")); + func(calldata, NODE_CLASS_SCRIPT, N_("Script")); func(calldata, NODE_CLASS_GROUP, N_("Group")); func(calldata, NODE_CLASS_LAYOUT, N_("Layout")); } @@ -153,7 +154,7 @@ bNodeTreeType ntreeType_Shader = { /* update */ update, /* update_node */ NULL, /* validate_link */ NULL, - /* internal_connect */ node_internal_connect_default + /* update_internal_links */ node_update_internal_links_default }; /* GPU material from shader nodes */ diff --git a/source/blender/nodes/shader/node_shader_util.c b/source/blender/nodes/shader/node_shader_util.c index 56704b981be..6130fe72af3 100644 --- a/source/blender/nodes/shader/node_shader_util.c +++ b/source/blender/nodes/shader/node_shader_util.c @@ -50,9 +50,9 @@ void nodestack_get_vec(float *in, short type_in, bNodeStack *ns) } else if (type_in==SOCK_VECTOR) { if (ns->sockettype==SOCK_FLOAT) { - in[0]= from[0]; - in[1]= from[0]; - in[2]= from[0]; + in[0] = from[0]; + in[1] = from[0]; + in[2] = from[0]; } else { copy_v3_v3(in, from); @@ -63,14 +63,14 @@ void nodestack_get_vec(float *in, short type_in, bNodeStack *ns) copy_v4_v4(in, from); } else if (ns->sockettype==SOCK_FLOAT) { - in[0]= from[0]; - in[1]= from[0]; - in[2]= from[0]; - in[3]= 1.0f; + in[0] = from[0]; + in[1] = from[0]; + in[2] = from[0]; + in[3] = 1.0f; } else { copy_v3_v3(in, from); - in[3]= 1.0f; + in[3] = 1.0f; } } } diff --git a/source/blender/nodes/shader/nodes/node_shader_add_shader.c b/source/blender/nodes/shader/nodes/node_shader_add_shader.c index ee8513a4119..ec868b2cc38 100644 --- a/source/blender/nodes/shader/nodes/node_shader_add_shader.c +++ b/source/blender/nodes/shader/nodes/node_shader_add_shader.c @@ -29,13 +29,13 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_add_shader_in[]= { +static bNodeSocketTemplate sh_node_add_shader_in[] = { { SOCK_SHADER, 1, N_("Shader")}, { SOCK_SHADER, 1, N_("Shader")}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_add_shader_out[]= { +static bNodeSocketTemplate sh_node_add_shader_out[] = { { SOCK_SHADER, 0, N_("Shader")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/shader/nodes/node_shader_ambient_occlusion.c b/source/blender/nodes/shader/nodes/node_shader_ambient_occlusion.c new file mode 100644 index 00000000000..7dfefc9ece0 --- /dev/null +++ b/source/blender/nodes/shader/nodes/node_shader_ambient_occlusion.c @@ -0,0 +1,63 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2005 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include "../node_shader_util.h" + +/* **************** OUTPUT ******************** */ + +static bNodeSocketTemplate sh_node_ambient_occlusion_in[] = { + { SOCK_RGBA, 1, N_("Color"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, + { -1, 0, "" } +}; + +static bNodeSocketTemplate sh_node_ambient_occlusion_out[] = { + { SOCK_SHADER, 0, N_("AO")}, + { -1, 0, "" } +}; + +static int node_shader_gpu_ambient_occlusion(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) +{ + return GPU_stack_link(mat, "node_ambient_occlusion", in, out, GPU_builtin(GPU_VIEW_NORMAL)); +} + +/* node type definition */ +void register_node_type_sh_ambient_occlusion(bNodeTreeType *ttype) +{ + static bNodeType ntype; + + node_type_base(ttype, &ntype, SH_NODE_AMBIENT_OCCLUSION, "Ambient Occlusion", NODE_CLASS_SHADER, 0); + node_type_compatibility(&ntype, NODE_NEW_SHADING); + node_type_socket_templates(&ntype, sh_node_ambient_occlusion_in, sh_node_ambient_occlusion_out); + node_type_size(&ntype, 150, 60, 200); + node_type_init(&ntype, NULL); + node_type_storage(&ntype, "", NULL, NULL); + node_type_exec(&ntype, NULL); + node_type_gpu(&ntype, node_shader_gpu_ambient_occlusion); + + nodeRegisterType(ttype, &ntype); +} + diff --git a/source/blender/nodes/shader/nodes/node_shader_attribute.c b/source/blender/nodes/shader/nodes/node_shader_attribute.c index 9c65323337e..9b2ed2f14f0 100644 --- a/source/blender/nodes/shader/nodes/node_shader_attribute.c +++ b/source/blender/nodes/shader/nodes/node_shader_attribute.c @@ -29,7 +29,7 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_attribute_out[]= { +static bNodeSocketTemplate sh_node_attribute_out[] = { { SOCK_RGBA, 0, N_("Color")}, { SOCK_VECTOR, 0, N_("Vector"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Fac"), 0.0f, 0.0f, 0.0f, 0.0f, -FLT_MAX, FLT_MAX}, diff --git a/source/blender/nodes/shader/nodes/node_shader_background.c b/source/blender/nodes/shader/nodes/node_shader_background.c index 7d13c359a2b..d82c513540c 100644 --- a/source/blender/nodes/shader/nodes/node_shader_background.c +++ b/source/blender/nodes/shader/nodes/node_shader_background.c @@ -29,13 +29,13 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_background_in[]= { +static bNodeSocketTemplate sh_node_background_in[] = { { SOCK_RGBA, 1, N_("Color"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Strength"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000000.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_background_out[]= { +static bNodeSocketTemplate sh_node_background_out[] = { { SOCK_SHADER, 0, N_("Background")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/shader/nodes/node_shader_brightness.c b/source/blender/nodes/shader/nodes/node_shader_brightness.c index 2735553cdad..9c23a29cae9 100644 --- a/source/blender/nodes/shader/nodes/node_shader_brightness.c +++ b/source/blender/nodes/shader/nodes/node_shader_brightness.c @@ -31,14 +31,14 @@ /* **************** Brigh and contrsast ******************** */ -static bNodeSocketTemplate sh_node_brightcontrast_in[]= { +static bNodeSocketTemplate sh_node_brightcontrast_in[] = { { SOCK_RGBA, 1, N_("Color"), 1.0f, 1.0f, 1.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Bright"), 0.0f, 0.0f, 0.0f, 0.0f, -100.0f, 100.0f, PROP_NONE}, { SOCK_FLOAT, 1, N_("Contrast"), 0.0f, 0.0f, 0.0f, 0.0f, -100.0f, 100.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_brightcontrast_out[]= { +static bNodeSocketTemplate sh_node_brightcontrast_out[] = { { SOCK_RGBA, 0, N_("Color")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_anisotropic.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_anisotropic.c index 9157728b546..71780e9316e 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_anisotropic.c +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_anisotropic.c @@ -29,21 +29,27 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_bsdf_anisotropic_in[]= { +static bNodeSocketTemplate sh_node_bsdf_anisotropic_in[] = { { SOCK_RGBA, 1, N_("Color"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, - { SOCK_FLOAT, 1, N_("Roughness U"), 0.2f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, - { SOCK_FLOAT, 1, N_("Roughness V"), 0.2f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, + { SOCK_FLOAT, 1, N_("Roughness"), 0.2f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, + { SOCK_FLOAT, 1, N_("Anisotropy"), 0.5f, 0.0f, 0.0f, 0.0f, -1.0f, 1.0f}, + { SOCK_FLOAT, 1, N_("Rotation"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, + { SOCK_VECTOR, 1, N_("Normal"), 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, + { SOCK_VECTOR, 1, N_("Tangent"), 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_bsdf_anisotropic_out[]= { +static bNodeSocketTemplate sh_node_bsdf_anisotropic_out[] = { { SOCK_SHADER, 0, N_("BSDF")}, { -1, 0, "" } }; static int node_shader_gpu_bsdf_anisotropic(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { - return GPU_stack_link(mat, "node_bsdf_anisotropic", in, out, GPU_builtin(GPU_VIEW_NORMAL), GPU_builtin(GPU_VIEW_POSITION)); + if (!in[3].link) + in[3].link = GPU_builtin(GPU_VIEW_NORMAL); + + return GPU_stack_link(mat, "node_bsdf_anisotropic", in, out); } /* node type definition */ @@ -51,7 +57,7 @@ void register_node_type_sh_bsdf_anisotropic(bNodeTreeType *ttype) { static bNodeType ntype; - node_type_base(ttype, &ntype, SH_NODE_BSDF_ANISOTROPIC, "Glossy Anisotropic BSDF", NODE_CLASS_SHADER, 0); + node_type_base(ttype, &ntype, SH_NODE_BSDF_ANISOTROPIC, "Anisotropic BSDF", NODE_CLASS_SHADER, 0); node_type_compatibility(&ntype, NODE_NEW_SHADING); node_type_socket_templates(&ntype, sh_node_bsdf_anisotropic_in, sh_node_bsdf_anisotropic_out); node_type_size(&ntype, 150, 60, 200); diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c index d2e2db3e78a..ad9f197afb8 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c @@ -29,20 +29,24 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_bsdf_diffuse_in[]= { +static bNodeSocketTemplate sh_node_bsdf_diffuse_in[] = { { SOCK_RGBA, 1, N_("Color"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Roughness"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, + { SOCK_VECTOR, 1, N_("Normal"), 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_bsdf_diffuse_out[]= { +static bNodeSocketTemplate sh_node_bsdf_diffuse_out[] = { { SOCK_SHADER, 0, N_("BSDF")}, { -1, 0, "" } }; static int node_shader_gpu_bsdf_diffuse(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { - return GPU_stack_link(mat, "node_bsdf_diffuse", in, out, GPU_builtin(GPU_VIEW_NORMAL)); + if (!in[2].link) + in[2].link = GPU_builtin(GPU_VIEW_NORMAL); + + return GPU_stack_link(mat, "node_bsdf_diffuse", in, out); } /* node type definition */ diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c index 8ff0ad57742..9e188092570 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c @@ -29,21 +29,25 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_bsdf_glass_in[]= { +static bNodeSocketTemplate sh_node_bsdf_glass_in[] = { { SOCK_RGBA, 1, N_("Color"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Roughness"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("IOR"), 1.45f, 0.0f, 0.0f, 0.0f, 1.0f, 1000.0f}, + { SOCK_VECTOR, 1, N_("Normal"), 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_bsdf_glass_out[]= { +static bNodeSocketTemplate sh_node_bsdf_glass_out[] = { { SOCK_SHADER, 0, N_("BSDF")}, { -1, 0, "" } }; static int node_shader_gpu_bsdf_glass(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { - return GPU_stack_link(mat, "node_bsdf_glass", in, out, GPU_builtin(GPU_VIEW_NORMAL), GPU_builtin(GPU_VIEW_POSITION)); + if (!in[3].link) + in[3].link = GPU_builtin(GPU_VIEW_NORMAL); + + return GPU_stack_link(mat, "node_bsdf_glass", in, out); } /* node type definition */ diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c index d28b3454f02..5e32930b707 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c @@ -29,21 +29,24 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_bsdf_glossy_in[]= { +static bNodeSocketTemplate sh_node_bsdf_glossy_in[] = { { SOCK_RGBA, 1, N_("Color"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Roughness"), 0.2f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, + { SOCK_VECTOR, 1, N_("Normal"), 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_bsdf_glossy_out[]= { +static bNodeSocketTemplate sh_node_bsdf_glossy_out[] = { { SOCK_SHADER, 0, N_("BSDF")}, { -1, 0, "" } }; static int node_shader_gpu_bsdf_glossy(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { - /* todo: is incoming vector normalized? */ - return GPU_stack_link(mat, "node_bsdf_glossy", in, out, GPU_builtin(GPU_VIEW_NORMAL), GPU_builtin(GPU_VIEW_POSITION)); + if (!in[2].link) + in[2].link = GPU_builtin(GPU_VIEW_NORMAL); + + return GPU_stack_link(mat, "node_bsdf_glossy", in, out); } /* node type definition */ diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_refraction.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_refraction.c new file mode 100644 index 00000000000..99e66e39002 --- /dev/null +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_refraction.c @@ -0,0 +1,68 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2005 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include "../node_shader_util.h" + +/* **************** OUTPUT ******************** */ + +static bNodeSocketTemplate sh_node_bsdf_refraction_in[] = { + { SOCK_RGBA, 1, N_("Color"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, + { SOCK_FLOAT, 1, N_("Roughness"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, + { SOCK_FLOAT, 1, N_("IOR"), 1.45f, 0.0f, 0.0f, 0.0f, 1.0f, 1000.0f}, + { SOCK_VECTOR, 1, N_("Normal"), 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, + { -1, 0, "" } +}; + +static bNodeSocketTemplate sh_node_bsdf_refraction_out[] = { + { SOCK_SHADER, 0, N_("BSDF")}, + { -1, 0, "" } +}; + +static int node_shader_gpu_bsdf_refraction(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) +{ + if (!in[3].link) + in[3].link = GPU_builtin(GPU_VIEW_NORMAL); + + return GPU_stack_link(mat, "node_bsdf_refraction", in, out); +} + +/* node type definition */ +void register_node_type_sh_bsdf_refraction(bNodeTreeType *ttype) +{ + static bNodeType ntype; + + node_type_base(ttype, &ntype, SH_NODE_BSDF_REFRACTION, "Refraction BSDF", NODE_CLASS_SHADER, NODE_OPTIONS); + node_type_compatibility(&ntype, NODE_NEW_SHADING); + node_type_socket_templates(&ntype, sh_node_bsdf_refraction_in, sh_node_bsdf_refraction_out); + node_type_size(&ntype, 150, 60, 200); + node_type_init(&ntype, NULL); + node_type_storage(&ntype, "", NULL, NULL); + node_type_exec(&ntype, NULL); + node_type_gpu(&ntype, node_shader_gpu_bsdf_refraction); + + nodeRegisterType(ttype, &ntype); +} diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.c index a3ba3ac7ff3..3c7084886b7 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.c +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.c @@ -29,19 +29,23 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_bsdf_translucent_in[]= { +static bNodeSocketTemplate sh_node_bsdf_translucent_in[] = { { SOCK_RGBA, 1, N_("Color"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, + { SOCK_VECTOR, 1, N_("Normal"), 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_bsdf_translucent_out[]= { +static bNodeSocketTemplate sh_node_bsdf_translucent_out[] = { { SOCK_SHADER, 0, N_("BSDF")}, { -1, 0, "" } }; static int node_shader_gpu_bsdf_translucent(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { - return GPU_stack_link(mat, "node_bsdf_translucent", in, out, GPU_builtin(GPU_VIEW_NORMAL)); + if (!in[1].link) + in[1].link = GPU_builtin(GPU_VIEW_NORMAL); + + return GPU_stack_link(mat, "node_bsdf_translucent", in, out); } /* node type definition */ diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.c index 8c945abdd0d..7fb452ad78d 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.c +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.c @@ -29,12 +29,12 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_bsdf_transparent_in[]= { +static bNodeSocketTemplate sh_node_bsdf_transparent_in[] = { { SOCK_RGBA, 1, N_("Color"), 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_bsdf_transparent_out[]= { +static bNodeSocketTemplate sh_node_bsdf_transparent_out[] = { { SOCK_SHADER, 0, N_("BSDF")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c index 04a1c1b32df..a4d25d42d4e 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c @@ -29,20 +29,24 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_bsdf_velvet_in[]= { +static bNodeSocketTemplate sh_node_bsdf_velvet_in[] = { { SOCK_RGBA, 1, N_("Color"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Sigma"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, + { SOCK_VECTOR, 1, N_("Normal"), 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_bsdf_velvet_out[]= { +static bNodeSocketTemplate sh_node_bsdf_velvet_out[] = { { SOCK_SHADER, 0, N_("BSDF")}, { -1, 0, "" } }; static int node_shader_gpu_bsdf_velvet(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) { - return GPU_stack_link(mat, "node_bsdf_velvet", in, out, GPU_builtin(GPU_VIEW_NORMAL)); + if (!in[2].link) + in[2].link = GPU_builtin(GPU_VIEW_NORMAL); + + return GPU_stack_link(mat, "node_bsdf_velvet", in, out); } /* node type definition */ diff --git a/source/blender/nodes/shader/nodes/node_shader_bump.c b/source/blender/nodes/shader/nodes/node_shader_bump.c new file mode 100644 index 00000000000..b0605f9b248 --- /dev/null +++ b/source/blender/nodes/shader/nodes/node_shader_bump.c @@ -0,0 +1,68 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2005 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file blender/nodes/shader/nodes/node_shader_bump.c + * \ingroup shdnodes + */ + + + +#include "node_shader_util.h" + + +/* **************** BUMP ******************** */ +static bNodeSocketTemplate sh_node_bump_in[] = { + { SOCK_FLOAT, 1, "Strength", 0.1f, 0.0f, 0.0f, 0.0f, 0.0f, 10.0f}, + { SOCK_FLOAT, 1, "Height", 1.0f, 1.0f, 1.0f, 1.0f, -1000.0f, 1000.0f, PROP_NONE, SOCK_HIDE_VALUE}, + { -1, 0, "" } +}; + +static bNodeSocketTemplate sh_node_bump_out[] = { + { SOCK_VECTOR, 0, "Normal"}, + { -1, 0, "" } +}; + +static int gpu_shader_bump(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) +{ + return GPU_stack_link(mat, "node_bump", in, out, GPU_builtin(GPU_VIEW_NORMAL)); +} + +/* node type definition */ +void register_node_type_sh_bump(bNodeTreeType *ttype) +{ + static bNodeType ntype; + + node_type_base(ttype, &ntype, SH_NODE_BUMP, "Bump", NODE_CLASS_OP_VECTOR, NODE_OPTIONS); + node_type_compatibility(&ntype, NODE_NEW_SHADING); + node_type_socket_templates(&ntype, sh_node_bump_in, sh_node_bump_out); + node_type_size(&ntype, 150, 60, 200); + node_type_storage(&ntype, "BumpNode", node_free_standard_storage, node_copy_standard_storage); + node_type_exec(&ntype, NULL); + node_type_gpu(&ntype, gpu_shader_bump); + + nodeRegisterType(ttype, &ntype); +} diff --git a/source/blender/nodes/shader/nodes/node_shader_camera.c b/source/blender/nodes/shader/nodes/node_shader_camera.c index 17cec8196e8..fd36a94516e 100644 --- a/source/blender/nodes/shader/nodes/node_shader_camera.c +++ b/source/blender/nodes/shader/nodes/node_shader_camera.c @@ -33,7 +33,7 @@ #include "node_shader_util.h" /* **************** CAMERA INFO ******************** */ -static bNodeSocketTemplate sh_node_camera_out[]= { +static bNodeSocketTemplate sh_node_camera_out[] = { { SOCK_VECTOR, 0, N_("View Vector")}, { SOCK_FLOAT, 0, N_("View Z Depth")}, { SOCK_FLOAT, 0, N_("View Distance")}, @@ -47,8 +47,8 @@ static void node_shader_exec_camera(void *data, bNode *UNUSED(node), bNodeStack ShadeInput *shi= ((ShaderCallData *)data)->shi; /* Data we need for shading. */ copy_v3_v3(out[0]->vec, shi->co); /* get view vector */ - out[1]->vec[0]= fabs(shi->co[2]); /* get view z-depth */ - out[2]->vec[0]= normalize_v3(out[0]->vec); /* get view distance */ + out[1]->vec[0] = fabs(shi->co[2]); /* get view z-depth */ + out[2]->vec[0] = normalize_v3(out[0]->vec); /* get view distance */ } } diff --git a/source/blender/nodes/shader/nodes/node_shader_common.c b/source/blender/nodes/shader/nodes/node_shader_common.c index df369482a2e..688d77d8350 100644 --- a/source/blender/nodes/shader/nodes/node_shader_common.c +++ b/source/blender/nodes/shader/nodes/node_shader_common.c @@ -204,128 +204,3 @@ void register_node_type_sh_group(bNodeTreeType *ttype) nodeRegisterType(ttype, &ntype); } - - -/**** FOR LOOP ****/ - -#if 0 /* XXX loop nodes don't work nicely with current trees */ -static void forloop_execute(void *data, int thread, struct bNode *node, void *nodedata, struct bNodeStack **in, struct bNodeStack **out) -{ - bNodeTreeExec *exec= (bNodeTreeExec*)nodedata; - bNodeThreadStack *nts; - int iterations= (int)in[0]->vec[0]; - bNodeSocket *sock; - bNodeStack *ns; - int iteration; - - /* XXX same behavior as trunk: all nodes inside group are executed. - * it's stupid, but just makes it work. compo redesign will do this better. - */ - { - bNode *inode; - for (inode=exec->nodetree->nodes.first; inode; inode=inode->next) - inode->need_exec = 1; - } - - nts = ntreeGetThreadStack(exec, thread); - - /* "Iteration" socket */ - sock = exec->nodetree->inputs.first; - ns = node_get_socket_stack(nts->stack, sock); - -// group_copy_inputs(node, in, nts->stack); - for (iteration=0; iteration < iterations; ++iteration) { - /* first input contains current iteration counter */ - ns->vec[0] = (float)iteration; - ns->vec[1]=ns->vec[2]=ns->vec[3] = 0.0f; - -// if (iteration > 0) -// loop_init_iteration(exec->nodetree, nts->stack); -// ntreeExecThreadNodes(exec, nts, data, thread); - } -// loop_copy_outputs(node, in, out, exec->stack); - - ntreeReleaseThreadStack(nts); -} - -void register_node_type_sh_forloop(bNodeTreeType *ttype) -{ - static bNodeType ntype; - - node_type_base(ttype, &ntype, NODE_FORLOOP, "For", NODE_CLASS_GROUP, NODE_OPTIONS); - node_type_socket_templates(&ntype, NULL, NULL); - node_type_size(&ntype, 120, 60, 200); - node_type_label(&ntype, node_group_label); - node_type_init(&ntype, node_forloop_init); - node_type_valid(&ntype, node_group_valid); - node_type_template(&ntype, node_forloop_template); - node_type_update(&ntype, NULL, node_group_verify); - node_type_tree(&ntype, node_forloop_init_tree, node_loop_update_tree); - node_type_group_edit(&ntype, node_group_edit_get, node_group_edit_set, node_group_edit_clear); - node_type_exec_new(&ntype, group_initexec, group_freeexec, forloop_execute); - - nodeRegisterType(ttype, &ntype); -} -#endif - -/**** WHILE LOOP ****/ - -#if 0 /* XXX loop nodes don't work nicely with current trees */ -static void whileloop_execute(void *data, int thread, struct bNode *node, void *nodedata, struct bNodeStack **in, struct bNodeStack **out) -{ - bNodeTreeExec *exec= (bNodeTreeExec*)nodedata; - bNodeThreadStack *nts; - int condition= (in[0]->vec[0] > 0.0f); - bNodeSocket *sock; - bNodeStack *ns; - int iteration; - - /* XXX same behavior as trunk: all nodes inside group are executed. - * it's stupid, but just makes it work. compo redesign will do this better. - */ - { - bNode *inode; - for (inode=exec->nodetree->nodes.first; inode; inode=inode->next) - inode->need_exec = 1; - } - - nts = ntreeGetThreadStack(exec, thread); - - /* "Condition" socket */ - sock = exec->nodetree->outputs.first; - ns = node_get_socket_stack(nts->stack, sock); - - iteration = 0; -// group_copy_inputs(node, in, nts->stack); - while (condition && iteration < node->custom1) { -// if (iteration > 0) -// loop_init_iteration(exec->nodetree, nts->stack); -// ntreeExecThreadNodes(exec, nts, data, thread); - - condition = (ns->vec[0] > 0.0f); - ++iteration; - } -// loop_copy_outputs(node, in, out, exec->stack); - - ntreeReleaseThreadStack(nts); -} - -void register_node_type_sh_whileloop(bNodeTreeType *ttype) -{ - static bNodeType ntype; - - node_type_base(ttype, &ntype, NODE_WHILELOOP, "While", NODE_CLASS_GROUP, NODE_OPTIONS); - node_type_socket_templates(&ntype, NULL, NULL); - node_type_size(&ntype, 120, 60, 200); - node_type_label(&ntype, node_group_label); - node_type_init(&ntype, node_whileloop_init); - node_type_valid(&ntype, node_group_valid); - node_type_template(&ntype, node_whileloop_template); - node_type_update(&ntype, NULL, node_group_verify); - node_type_tree(&ntype, node_whileloop_init_tree, node_loop_update_tree); - node_type_group_edit(&ntype, node_group_edit_get, node_group_edit_set, node_group_edit_clear); - node_type_exec_new(&ntype, group_initexec, group_freeexec, whileloop_execute); - - nodeRegisterType(ttype, &ntype); -} -#endif diff --git a/source/blender/nodes/shader/nodes/node_shader_curves.c b/source/blender/nodes/shader/nodes/node_shader_curves.c index 83cb1d33628..9fa654c9740 100644 --- a/source/blender/nodes/shader/nodes/node_shader_curves.c +++ b/source/blender/nodes/shader/nodes/node_shader_curves.c @@ -34,13 +34,13 @@ /* **************** CURVE VEC ******************** */ -static bNodeSocketTemplate sh_node_curve_vec_in[]= { +static bNodeSocketTemplate sh_node_curve_vec_in[] = { { SOCK_FLOAT, 0, N_("Fac"), 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, PROP_FACTOR}, { SOCK_VECTOR, 1, N_("Vector"), 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_curve_vec_out[]= { +static bNodeSocketTemplate sh_node_curve_vec_out[] = { { SOCK_VECTOR, 0, N_("Vector")}, { -1, 0, "" } }; @@ -88,13 +88,13 @@ void register_node_type_sh_curve_vec(bNodeTreeType *ttype) /* **************** CURVE RGB ******************** */ -static bNodeSocketTemplate sh_node_curve_rgb_in[]= { +static bNodeSocketTemplate sh_node_curve_rgb_in[] = { { SOCK_FLOAT, 1, N_("Fac"), 1.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_FACTOR}, { SOCK_RGBA, 1, N_("Color"), 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_curve_rgb_out[]= { +static bNodeSocketTemplate sh_node_curve_rgb_out[] = { { SOCK_RGBA, 0, N_("Color")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/shader/nodes/node_shader_emission.c b/source/blender/nodes/shader/nodes/node_shader_emission.c index 4854d887592..0c4cb7ed51c 100644 --- a/source/blender/nodes/shader/nodes/node_shader_emission.c +++ b/source/blender/nodes/shader/nodes/node_shader_emission.c @@ -29,13 +29,13 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_emission_in[]= { +static bNodeSocketTemplate sh_node_emission_in[] = { { SOCK_RGBA, 1, N_("Color"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Strength"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000000.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_emission_out[]= { +static bNodeSocketTemplate sh_node_emission_out[] = { { SOCK_SHADER, 0, N_("Emission")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/shader/nodes/node_shader_fresnel.c b/source/blender/nodes/shader/nodes/node_shader_fresnel.c index 610a2149011..80913e6b07a 100644 --- a/source/blender/nodes/shader/nodes/node_shader_fresnel.c +++ b/source/blender/nodes/shader/nodes/node_shader_fresnel.c @@ -28,12 +28,12 @@ #include "../node_shader_util.h" /* **************** Fresnel ******************** */ -static bNodeSocketTemplate sh_node_fresnel_in[]= { +static bNodeSocketTemplate sh_node_fresnel_in[] = { { SOCK_FLOAT, 1, N_("IOR"), 1.45f, 0.0f, 0.0f, 0.0f, 1.0f, 1000.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_fresnel_out[]= { +static bNodeSocketTemplate sh_node_fresnel_out[] = { { SOCK_FLOAT, 0, N_("Fac"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } }; diff --git a/source/blender/nodes/shader/nodes/node_shader_gamma.c b/source/blender/nodes/shader/nodes/node_shader_gamma.c index 526868f73d3..c49554c44be 100644 --- a/source/blender/nodes/shader/nodes/node_shader_gamma.c +++ b/source/blender/nodes/shader/nodes/node_shader_gamma.c @@ -30,13 +30,13 @@ /* **************** Gamma Tools ******************** */ -static bNodeSocketTemplate sh_node_gamma_in[]= { +static bNodeSocketTemplate sh_node_gamma_in[] = { { SOCK_RGBA, 1, N_("Color"), 1.0f, 1.0f, 1.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Gamma"), 1.0f, 0.0f, 0.0f, 0.0f, 0.001f, 10.0f, PROP_UNSIGNED}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_gamma_out[]= { +static bNodeSocketTemplate sh_node_gamma_out[] = { { SOCK_RGBA, 0, N_("Color")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/shader/nodes/node_shader_geom.c b/source/blender/nodes/shader/nodes/node_shader_geom.c index f23158ab5d4..eb3d462d616 100644 --- a/source/blender/nodes/shader/nodes/node_shader_geom.c +++ b/source/blender/nodes/shader/nodes/node_shader_geom.c @@ -37,7 +37,7 @@ /* **************** GEOMETRY ******************** */ /* output socket type definition */ -static bNodeSocketTemplate sh_node_geom_out[]= { +static bNodeSocketTemplate sh_node_geom_out[] = { { SOCK_VECTOR, 0, N_("Global")}, { SOCK_VECTOR, 0, N_("Local")}, { SOCK_VECTOR, 0, N_("View")}, @@ -92,12 +92,12 @@ static void node_shader_exec_geom(void *data, bNode *node, bNodeStack **UNUSED(i } copy_v3_v3(out[GEOM_OUT_VCOL]->vec, scol->col); - out[GEOM_OUT_VCOL]->vec[3]= scol->col[3]; - out[GEOM_OUT_VCOL_ALPHA]->vec[0]= scol->col[3]; + out[GEOM_OUT_VCOL]->vec[3] = scol->col[3]; + out[GEOM_OUT_VCOL_ALPHA]->vec[0] = scol->col[3]; } else { memcpy(out[GEOM_OUT_VCOL]->vec, defaultvcol, sizeof(defaultvcol)); - out[GEOM_OUT_VCOL_ALPHA]->vec[0]= 1.0f; + out[GEOM_OUT_VCOL_ALPHA]->vec[0] = 1.0f; } if (shi->osatex) { @@ -116,7 +116,7 @@ static void node_shader_exec_geom(void *data, bNode *node, bNodeStack **UNUSED(i } /* front/back, normal flipping was stored */ - out[GEOM_OUT_FRONTBACK]->vec[0]= (shi->flippednor)? 0.0f: 1.0f; + out[GEOM_OUT_FRONTBACK]->vec[0] = (shi->flippednor)? 0.0f: 1.0f; } } diff --git a/source/blender/nodes/shader/nodes/node_shader_geometry.c b/source/blender/nodes/shader/nodes/node_shader_geometry.c index 2ebd93218d6..acef885d2d4 100644 --- a/source/blender/nodes/shader/nodes/node_shader_geometry.c +++ b/source/blender/nodes/shader/nodes/node_shader_geometry.c @@ -29,7 +29,7 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_geometry_out[]= { +static bNodeSocketTemplate sh_node_geometry_out[] = { { SOCK_VECTOR, 0, N_("Position"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_VECTOR, 0, N_("Normal"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_VECTOR, 0, N_("Tangent"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, diff --git a/source/blender/nodes/shader/nodes/node_shader_holdout.c b/source/blender/nodes/shader/nodes/node_shader_holdout.c index dbd4ed8ab67..18ad4994c9b 100644 --- a/source/blender/nodes/shader/nodes/node_shader_holdout.c +++ b/source/blender/nodes/shader/nodes/node_shader_holdout.c @@ -29,11 +29,11 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_holdout_in[]= { +static bNodeSocketTemplate sh_node_holdout_in[] = { { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_holdout_out[]= { +static bNodeSocketTemplate sh_node_holdout_out[] = { { SOCK_SHADER, 0, N_("Holdout")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/shader/nodes/node_shader_hueSatVal.c b/source/blender/nodes/shader/nodes/node_shader_hueSatVal.c index b07650e33c0..b635ad1edd9 100644 --- a/source/blender/nodes/shader/nodes/node_shader_hueSatVal.c +++ b/source/blender/nodes/shader/nodes/node_shader_hueSatVal.c @@ -34,7 +34,7 @@ /* **************** Hue Saturation ******************** */ -static bNodeSocketTemplate sh_node_hue_sat_in[]= { +static bNodeSocketTemplate sh_node_hue_sat_in[] = { { SOCK_FLOAT, 1, N_("Hue"), 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE}, { SOCK_FLOAT, 1, N_("Saturation"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f, PROP_FACTOR}, { SOCK_FLOAT, 1, N_("Value"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f, PROP_FACTOR}, @@ -42,7 +42,7 @@ static bNodeSocketTemplate sh_node_hue_sat_in[]= { { SOCK_RGBA, 1, N_("Color"), 0.8f, 0.8f, 0.8f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_hue_sat_out[]= { +static bNodeSocketTemplate sh_node_hue_sat_out[] = { { SOCK_RGBA, 0, N_("Color")}, { -1, 0, "" } }; @@ -60,9 +60,9 @@ static void do_hue_sat_fac(bNode *UNUSED(node), float *out, float *hue, float *s hsv[2]*= *val; hsv_to_rgb(hsv[0], hsv[1], hsv[2], col, col+1, col+2); - out[0]= mfac*in[0] + *fac*col[0]; - out[1]= mfac*in[1] + *fac*col[1]; - out[2]= mfac*in[2] + *fac*col[2]; + out[0] = mfac*in[0] + *fac*col[0]; + out[1] = mfac*in[1] + *fac*col[1]; + out[2] = mfac*in[2] + *fac*col[2]; } else { copy_v4_v4(out, in); diff --git a/source/blender/nodes/shader/nodes/node_shader_invert.c b/source/blender/nodes/shader/nodes/node_shader_invert.c index ef592a7e2ec..2ea858f4e34 100644 --- a/source/blender/nodes/shader/nodes/node_shader_invert.c +++ b/source/blender/nodes/shader/nodes/node_shader_invert.c @@ -35,15 +35,15 @@ /* **************** INVERT ******************** */ -static bNodeSocketTemplate sh_node_invert_in[]= { - { SOCK_FLOAT, 1, N_("Fac"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR}, - { SOCK_RGBA, 1, N_("Color"), 0.0f, 0.0f, 0.0f, 1.0f}, - { -1, 0, "" } +static bNodeSocketTemplate sh_node_invert_in[] = { + { SOCK_FLOAT, 1, N_("Fac"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR}, + { SOCK_RGBA, 1, N_("Color"), 0.0f, 0.0f, 0.0f, 1.0f}, + { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_invert_out[]= { - { SOCK_RGBA, 0, N_("Color")}, - { -1, 0, "" } +static bNodeSocketTemplate sh_node_invert_out[] = { + { SOCK_RGBA, 0, N_("Color")}, + { -1, 0, "" } }; static void node_shader_exec_invert(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **in, diff --git a/source/blender/nodes/shader/nodes/node_shader_layer_weight.c b/source/blender/nodes/shader/nodes/node_shader_layer_weight.c index 6eacea10b5b..3058483ebef 100644 --- a/source/blender/nodes/shader/nodes/node_shader_layer_weight.c +++ b/source/blender/nodes/shader/nodes/node_shader_layer_weight.c @@ -29,12 +29,12 @@ /* **************** Layer Weight ******************** */ -static bNodeSocketTemplate sh_node_layer_weight_in[]= { +static bNodeSocketTemplate sh_node_layer_weight_in[] = { { SOCK_FLOAT, 1, N_("Blend"), 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_layer_weight_out[]= { +static bNodeSocketTemplate sh_node_layer_weight_out[] = { { SOCK_FLOAT, 0, N_("Fresnel"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Facing"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } diff --git a/source/blender/nodes/shader/nodes/node_shader_light_falloff.c b/source/blender/nodes/shader/nodes/node_shader_light_falloff.c index aab5fa8060d..2dec244ae3a 100644 --- a/source/blender/nodes/shader/nodes/node_shader_light_falloff.c +++ b/source/blender/nodes/shader/nodes/node_shader_light_falloff.c @@ -29,7 +29,7 @@ /* **************** INPUT ********************* */ -static bNodeSocketTemplate sh_node_light_falloff_in[]= { +static bNodeSocketTemplate sh_node_light_falloff_in[] = { { SOCK_FLOAT, 0, N_("Strength"), 100.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000000.0f}, { SOCK_FLOAT, 0, N_("Smooth"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000.0f}, { -1, 0, "" } @@ -37,7 +37,7 @@ static bNodeSocketTemplate sh_node_light_falloff_in[]= { /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_light_falloff_out[]= { +static bNodeSocketTemplate sh_node_light_falloff_out[] = { { SOCK_FLOAT, 0, N_("Quadratic"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Linear"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Constant"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, diff --git a/source/blender/nodes/shader/nodes/node_shader_light_path.c b/source/blender/nodes/shader/nodes/node_shader_light_path.c index 264b1390688..b4a3d4e01e1 100644 --- a/source/blender/nodes/shader/nodes/node_shader_light_path.c +++ b/source/blender/nodes/shader/nodes/node_shader_light_path.c @@ -29,7 +29,7 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_light_path_out[]= { +static bNodeSocketTemplate sh_node_light_path_out[] = { { SOCK_FLOAT, 0, N_("Is Camera Ray"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Is Shadow Ray"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Is Diffuse Ray"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, diff --git a/source/blender/nodes/shader/nodes/node_shader_mapping.c b/source/blender/nodes/shader/nodes/node_shader_mapping.c index 4508f66543e..cedd3a4910c 100644 --- a/source/blender/nodes/shader/nodes/node_shader_mapping.c +++ b/source/blender/nodes/shader/nodes/node_shader_mapping.c @@ -33,12 +33,12 @@ #include "node_shader_util.h" /* **************** MAPPING ******************** */ -static bNodeSocketTemplate sh_node_mapping_in[]= { +static bNodeSocketTemplate sh_node_mapping_in[] = { { SOCK_VECTOR, 1, N_("Vector"), 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_mapping_out[]= { +static bNodeSocketTemplate sh_node_mapping_out[] = { { SOCK_VECTOR, 0, N_("Vector")}, { -1, 0, "" } }; @@ -55,14 +55,14 @@ static void node_shader_exec_mapping(void *UNUSED(data), bNode *node, bNodeStack mul_m4_v3(texmap->mat, vec); if (texmap->flag & TEXMAP_CLIP_MIN) { - if (vec[0]<texmap->min[0]) vec[0]= texmap->min[0]; - if (vec[1]<texmap->min[1]) vec[1]= texmap->min[1]; - if (vec[2]<texmap->min[2]) vec[2]= texmap->min[2]; + if (vec[0]<texmap->min[0]) vec[0] = texmap->min[0]; + if (vec[1]<texmap->min[1]) vec[1] = texmap->min[1]; + if (vec[2]<texmap->min[2]) vec[2] = texmap->min[2]; } if (texmap->flag & TEXMAP_CLIP_MAX) { - if (vec[0]>texmap->max[0]) vec[0]= texmap->max[0]; - if (vec[1]>texmap->max[1]) vec[1]= texmap->max[1]; - if (vec[2]>texmap->max[2]) vec[2]= texmap->max[2]; + if (vec[0]>texmap->max[0]) vec[0] = texmap->max[0]; + if (vec[1]>texmap->max[1]) vec[1] = texmap->max[1]; + if (vec[2]>texmap->max[2]) vec[2] = texmap->max[2]; } } diff --git a/source/blender/nodes/shader/nodes/node_shader_material.c b/source/blender/nodes/shader/nodes/node_shader_material.c index 57865e072e7..bccf6d349cf 100644 --- a/source/blender/nodes/shader/nodes/node_shader_material.c +++ b/source/blender/nodes/shader/nodes/node_shader_material.c @@ -34,7 +34,7 @@ /* **************** MATERIAL ******************** */ -static bNodeSocketTemplate sh_node_material_in[]= { +static bNodeSocketTemplate sh_node_material_in[] = { { SOCK_RGBA, 1, N_("Color"), 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_RGBA, 1, N_("Spec"), 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Refl"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_FACTOR}, @@ -42,7 +42,7 @@ static bNodeSocketTemplate sh_node_material_in[]= { { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_material_out[]= { +static bNodeSocketTemplate sh_node_material_out[] = { { SOCK_RGBA, 0, N_("Color")}, { SOCK_FLOAT, 0, N_("Alpha")}, { SOCK_VECTOR, 0, N_("Normal")}, @@ -51,7 +51,7 @@ static bNodeSocketTemplate sh_node_material_out[]= { /* **************** EXTENDED MATERIAL ******************** */ -static bNodeSocketTemplate sh_node_material_ext_in[]= { +static bNodeSocketTemplate sh_node_material_ext_in[] = { { SOCK_RGBA, 1, N_("Color"), 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_RGBA, 1, N_("Spec"), 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Refl"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_FACTOR}, @@ -66,7 +66,7 @@ static bNodeSocketTemplate sh_node_material_ext_in[]= { { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_material_ext_out[]= { +static bNodeSocketTemplate sh_node_material_ext_out[] = { { SOCK_RGBA, 0, N_("Color")}, { SOCK_FLOAT, 0, N_("Alpha")}, { SOCK_VECTOR, 0, N_("Normal")}, @@ -84,7 +84,7 @@ static void node_shader_exec_material(void *data, bNode *node, bNodeStack **in, ShaderCallData *shcd= data; float col[4]; bNodeSocket *sock; - char hasinput[NUM_MAT_IN]= {'\0'}; + char hasinput[NUM_MAT_IN] = {'\0'}; int i; /* note: cannot use the in[]->hasinput flags directly, as these are not necessarily @@ -139,7 +139,7 @@ static void node_shader_exec_material(void *data, bNode *node, bNodeStack **in, if (hasinput[MAT_IN_ALPHA]) nodestack_get_vec(&shi->alpha, SOCK_FLOAT, in[MAT_IN_ALPHA]); if (hasinput[MAT_IN_TRANSLUCENCY]) - nodestack_get_vec(&shi->translucency, SOCK_FLOAT, in[MAT_IN_TRANSLUCENCY]); + nodestack_get_vec(&shi->translucency, SOCK_FLOAT, in[MAT_IN_TRANSLUCENCY]); } shi->nodes= 1; /* temp hack to prevent trashadow recursion */ @@ -157,20 +157,20 @@ static void node_shader_exec_material(void *data, bNode *node, bNodeStack **in, copy_v3_v3(col, shrnode.spec); } else - col[0]= col[1]= col[2]= 0.0f; + col[0] = col[1] = col[2] = 0.0f; - col[3]= shrnode.alpha; + col[3] = shrnode.alpha; if (shi->do_preview) nodeAddToPreview(node, col, shi->xs, shi->ys, shi->do_manage); copy_v3_v3(out[MAT_OUT_COLOR]->vec, col); - out[MAT_OUT_ALPHA]->vec[0]= shrnode.alpha; + out[MAT_OUT_ALPHA]->vec[0] = shrnode.alpha; if (node->custom1 & SH_NODE_MAT_NEG) { - shi->vn[0]= -shi->vn[0]; - shi->vn[1]= -shi->vn[1]; - shi->vn[2]= -shi->vn[2]; + shi->vn[0] = -shi->vn[0]; + shi->vn[1] = -shi->vn[1]; + shi->vn[2] = -shi->vn[2]; } copy_v3_v3(out[MAT_OUT_NORMAL]->vec, shi->vn); @@ -222,7 +222,7 @@ static int gpu_shader_material(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUShadeInput shi; GPUShadeResult shr; bNodeSocket *sock; - char hasinput[NUM_MAT_IN]= {'\0'}; + char hasinput[NUM_MAT_IN] = {'\0'}; int i; /* note: cannot use the in[]->hasinput flags directly, as these are not necessarily diff --git a/source/blender/nodes/shader/nodes/node_shader_math.c b/source/blender/nodes/shader/nodes/node_shader_math.c index c112ae1d448..0b71a3f13b4 100644 --- a/source/blender/nodes/shader/nodes/node_shader_math.c +++ b/source/blender/nodes/shader/nodes/node_shader_math.c @@ -34,61 +34,61 @@ /* **************** SCALAR MATH ******************** */ -static bNodeSocketTemplate sh_node_math_in[]= { - { SOCK_FLOAT, 1, N_("Value"), 0.5f, 0.5f, 0.5f, 1.0f, -10000.0f, 10000.0f, PROP_NONE}, - { SOCK_FLOAT, 1, N_("Value"), 0.5f, 0.5f, 0.5f, 1.0f, -10000.0f, 10000.0f, PROP_NONE}, - { -1, 0, "" } +static bNodeSocketTemplate sh_node_math_in[] = { + { SOCK_FLOAT, 1, N_("Value"), 0.5f, 0.5f, 0.5f, 1.0f, -10000.0f, 10000.0f, PROP_NONE}, + { SOCK_FLOAT, 1, N_("Value"), 0.5f, 0.5f, 0.5f, 1.0f, -10000.0f, 10000.0f, PROP_NONE}, + { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_math_out[]= { - { SOCK_FLOAT, 0, N_("Value")}, - { -1, 0, "" } +static bNodeSocketTemplate sh_node_math_out[] = { + { SOCK_FLOAT, 0, N_("Value")}, + { -1, 0, "" } }; static void node_shader_exec_math(void *UNUSED(data), bNode *node, bNodeStack **in, bNodeStack **out) { - switch (node->custom1) { + switch (node->custom1) { case 0: /* Add */ - out[0]->vec[0]= in[0]->vec[0] + in[1]->vec[0]; + out[0]->vec[0] = in[0]->vec[0] + in[1]->vec[0]; break; case 1: /* Subtract */ - out[0]->vec[0]= in[0]->vec[0] - in[1]->vec[0]; + out[0]->vec[0] = in[0]->vec[0] - in[1]->vec[0]; break; case 2: /* Multiply */ - out[0]->vec[0]= in[0]->vec[0] * in[1]->vec[0]; + out[0]->vec[0] = in[0]->vec[0] * in[1]->vec[0]; break; case 3: /* Divide */ { if (in[1]->vec[0]==0) /* We don't want to divide by zero. */ - out[0]->vec[0]= 0.0; + out[0]->vec[0] = 0.0; else - out[0]->vec[0]= in[0]->vec[0] / in[1]->vec[0]; + out[0]->vec[0] = in[0]->vec[0] / in[1]->vec[0]; } break; case 4: /* Sine */ { if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */ - out[0]->vec[0]= sin(in[0]->vec[0]); + out[0]->vec[0] = sin(in[0]->vec[0]); else - out[0]->vec[0]= sin(in[1]->vec[0]); + out[0]->vec[0] = sin(in[1]->vec[0]); } break; case 5: /* Cosine */ { - if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */ - out[0]->vec[0]= cos(in[0]->vec[0]); + if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */ + out[0]->vec[0] = cos(in[0]->vec[0]); else - out[0]->vec[0]= cos(in[1]->vec[0]); + out[0]->vec[0] = cos(in[1]->vec[0]); } break; case 6: /* Tangent */ { - if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */ - out[0]->vec[0]= tan(in[0]->vec[0]); + if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */ + out[0]->vec[0] = tan(in[0]->vec[0]); else - out[0]->vec[0]= tan(in[1]->vec[0]); + out[0]->vec[0] = tan(in[1]->vec[0]); } break; case 7: /* Arc-Sine */ @@ -96,16 +96,16 @@ bNodeStack **out) if (in[0]->hasinput || !in[1]->hasinput) { /* This one only takes one input, so we've got to choose. */ /* Can't do the impossible... */ if ( in[0]->vec[0] <= 1 && in[0]->vec[0] >= -1 ) - out[0]->vec[0]= asin(in[0]->vec[0]); + out[0]->vec[0] = asin(in[0]->vec[0]); else - out[0]->vec[0]= 0.0; + out[0]->vec[0] = 0.0; } else { /* Can't do the impossible... */ if ( in[1]->vec[0] <= 1 && in[1]->vec[0] >= -1 ) - out[0]->vec[0]= asin(in[1]->vec[0]); + out[0]->vec[0] = asin(in[1]->vec[0]); else - out[0]->vec[0]= 0.0; + out[0]->vec[0] = 0.0; } } break; @@ -114,86 +114,97 @@ bNodeStack **out) if (in[0]->hasinput || !in[1]->hasinput) { /* This one only takes one input, so we've got to choose. */ /* Can't do the impossible... */ if ( in[0]->vec[0] <= 1 && in[0]->vec[0] >= -1 ) - out[0]->vec[0]= acos(in[0]->vec[0]); + out[0]->vec[0] = acos(in[0]->vec[0]); else - out[0]->vec[0]= 0.0; + out[0]->vec[0] = 0.0; } else { /* Can't do the impossible... */ if ( in[1]->vec[0] <= 1 && in[1]->vec[0] >= -1 ) - out[0]->vec[0]= acos(in[1]->vec[0]); + out[0]->vec[0] = acos(in[1]->vec[0]); else - out[0]->vec[0]= 0.0; + out[0]->vec[0] = 0.0; } } break; case 9: /* Arc-Tangent */ { if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */ - out[0]->vec[0]= atan(in[0]->vec[0]); + out[0]->vec[0] = atan(in[0]->vec[0]); else - out[0]->vec[0]= atan(in[1]->vec[0]); + out[0]->vec[0] = atan(in[1]->vec[0]); } break; case 10: /* Power */ { - /* Don't want any imaginary numbers... */ - if ( in[0]->vec[0] >= 0 ) - out[0]->vec[0]= pow(in[0]->vec[0], in[1]->vec[0]); - else - out[0]->vec[0]= 0.0; + /* Only raise negative numbers by full integers */ + if ( in[0]->vec[0] >= 0 ) { + out[0]->vec[0] = pow(in[0]->vec[0], in[1]->vec[0]); + } + else { + float y_mod_1 = fabsf(fmodf(in[1]->vec[0], 1.0f)); + + /* if input value is not nearly an integer, fall back to zero, nicer than straight rounding */ + if (y_mod_1 > 0.999f || y_mod_1 < 0.001f) { + out[0]->vec[0] = powf(in[0]->vec[0], floorf(in[1]->vec[0] + 0.5f)); + } + else { + out[0]->vec[0] = 0.0f; + } + } + } break; case 11: /* Logarithm */ { /* Don't want any imaginary numbers... */ if ( in[0]->vec[0] > 0 && in[1]->vec[0] > 0 ) - out[0]->vec[0]= log(in[0]->vec[0]) / log(in[1]->vec[0]); + out[0]->vec[0] = log(in[0]->vec[0]) / log(in[1]->vec[0]); else - out[0]->vec[0]= 0.0; + out[0]->vec[0] = 0.0; } break; case 12: /* Minimum */ { if ( in[0]->vec[0] < in[1]->vec[0] ) - out[0]->vec[0]= in[0]->vec[0]; + out[0]->vec[0] = in[0]->vec[0]; else - out[0]->vec[0]= in[1]->vec[0]; + out[0]->vec[0] = in[1]->vec[0]; } break; case 13: /* Maximum */ { if ( in[0]->vec[0] > in[1]->vec[0] ) - out[0]->vec[0]= in[0]->vec[0]; + out[0]->vec[0] = in[0]->vec[0]; else - out[0]->vec[0]= in[1]->vec[0]; + out[0]->vec[0] = in[1]->vec[0]; } break; case 14: /* Round */ { if (in[0]->hasinput || !in[1]->hasinput) /* This one only takes one input, so we've got to choose. */ - out[0]->vec[0]= (in[0]->vec[0]<0)?(int)(in[0]->vec[0] - 0.5f):(int)(in[0]->vec[0] + 0.5f); + out[0]->vec[0] = (in[0]->vec[0]<0)?(int)(in[0]->vec[0] - 0.5f):(int)(in[0]->vec[0] + 0.5f); else - out[0]->vec[0]= (in[1]->vec[0]<0)?(int)(in[1]->vec[0] - 0.5f):(int)(in[1]->vec[0] + 0.5f); + out[0]->vec[0] = (in[1]->vec[0]<0)?(int)(in[1]->vec[0] - 0.5f):(int)(in[1]->vec[0] + 0.5f); } break; case 15: /* Less Than */ { if ( in[0]->vec[0] < in[1]->vec[0] ) - out[0]->vec[0]= 1.0f; + out[0]->vec[0] = 1.0f; else - out[0]->vec[0]= 0.0f; + out[0]->vec[0] = 0.0f; } break; case 16: /* Greater Than */ { if ( in[0]->vec[0] > in[1]->vec[0] ) - out[0]->vec[0]= 1.0f; + out[0]->vec[0] = 1.0f; else - out[0]->vec[0]= 0.0f; + out[0]->vec[0] = 0.0f; } break; - } + } } static int gpu_shader_math(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out) @@ -214,8 +225,7 @@ static int gpu_shader_math(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUN case 13: case 15: case 16: - GPU_stack_link(mat, names[node->custom1], NULL, out, - GPU_socket(&in[0]), GPU_socket(&in[1])); + GPU_stack_link(mat, names[node->custom1], in, out); break; case 4: case 5: @@ -224,10 +234,20 @@ static int gpu_shader_math(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUN 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])); + if (in[0].hasinput || !in[1].hasinput) { + /* use only first item and terminator */ + GPUNodeStack tmp_in[2]; + memcpy(&tmp_in[0], &in[0], sizeof(GPUNodeStack)); + memcpy(&tmp_in[1], &in[2], sizeof(GPUNodeStack)); + GPU_stack_link(mat, names[node->custom1], tmp_in, out); + } + else { + /* use only second item and terminator */ + GPUNodeStack tmp_in[2]; + memcpy(&tmp_in[0], &in[1], sizeof(GPUNodeStack)); + memcpy(&tmp_in[1], &in[2], sizeof(GPUNodeStack)); + GPU_stack_link(mat, names[node->custom1], tmp_in, out); + } break; default: return 0; diff --git a/source/blender/nodes/shader/nodes/node_shader_mixRgb.c b/source/blender/nodes/shader/nodes/node_shader_mixRgb.c index 53c1387ca1a..18dcc8f7fef 100644 --- a/source/blender/nodes/shader/nodes/node_shader_mixRgb.c +++ b/source/blender/nodes/shader/nodes/node_shader_mixRgb.c @@ -33,13 +33,13 @@ #include "node_shader_util.h" /* **************** MIX RGB ******************** */ -static bNodeSocketTemplate sh_node_mix_rgb_in[]= { +static bNodeSocketTemplate sh_node_mix_rgb_in[] = { { SOCK_FLOAT, 1, N_("Fac"), 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR}, { SOCK_RGBA, 1, N_("Color1"), 0.5f, 0.5f, 0.5f, 1.0f}, { SOCK_RGBA, 1, N_("Color2"), 0.5f, 0.5f, 0.5f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_mix_rgb_out[]= { +static bNodeSocketTemplate sh_node_mix_rgb_out[] = { { SOCK_RGBA, 0, N_("Color")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/shader/nodes/node_shader_mix_shader.c b/source/blender/nodes/shader/nodes/node_shader_mix_shader.c index 80ee1a8499d..039e63a4dea 100644 --- a/source/blender/nodes/shader/nodes/node_shader_mix_shader.c +++ b/source/blender/nodes/shader/nodes/node_shader_mix_shader.c @@ -29,14 +29,14 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_mix_shader_in[]= { +static bNodeSocketTemplate sh_node_mix_shader_in[] = { { SOCK_FLOAT, 1, N_("Fac"), 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_SHADER, 1, N_("Shader")}, { SOCK_SHADER, 1, N_("Shader")}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_mix_shader_out[]= { +static bNodeSocketTemplate sh_node_mix_shader_out[] = { { SOCK_SHADER, 0, N_("Shader")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/shader/nodes/node_shader_normal.c b/source/blender/nodes/shader/nodes/node_shader_normal.c index bb0a85417d9..98a56c85279 100644 --- a/source/blender/nodes/shader/nodes/node_shader_normal.c +++ b/source/blender/nodes/shader/nodes/node_shader_normal.c @@ -33,12 +33,12 @@ #include "node_shader_util.h" /* **************** NORMAL ******************** */ -static bNodeSocketTemplate sh_node_normal_in[]= { +static bNodeSocketTemplate sh_node_normal_in[] = { { SOCK_VECTOR, 1, N_("Normal"), 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_normal_out[]= { +static bNodeSocketTemplate sh_node_normal_out[] = { { SOCK_VECTOR, 0, N_("Normal")}, { SOCK_FLOAT, 0, N_("Dot")}, { -1, 0, "" } @@ -68,7 +68,7 @@ static void node_shader_exec_normal(void *UNUSED(data), bNode *node, bNodeStack copy_v3_v3(out[0]->vec, ((bNodeSocketValueVector*)sock->default_value)->value); /* render normals point inside... the widget points outside */ - out[1]->vec[0]= -dot_v3v3(out[0]->vec, vec); + out[1]->vec[0] = -dot_v3v3(out[0]->vec, vec); } static int gpu_shader_normal(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out) diff --git a/source/blender/nodes/shader/nodes/node_shader_normal_map.c b/source/blender/nodes/shader/nodes/node_shader_normal_map.c new file mode 100644 index 00000000000..ee83699abdb --- /dev/null +++ b/source/blender/nodes/shader/nodes/node_shader_normal_map.c @@ -0,0 +1,70 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2005 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include "../node_shader_util.h" + +/* **************** OUTPUT ******************** */ + +static bNodeSocketTemplate sh_node_normal_map_in[] = { + { SOCK_FLOAT, 1, N_("Strength"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 10.0f}, + { SOCK_RGBA, 0, N_("Color"), 0.5f, 0.5f, 1.0f, 1.0f, 0.0f, 1.0f}, + { -1, 0, "" } +}; + +static bNodeSocketTemplate sh_node_normal_map_out[] = { + { SOCK_VECTOR, 0, N_("Normal"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, + { -1, 0, "" } +}; + +static void node_shader_init_normal_map(bNodeTree *UNUSED(ntree), bNode *node, bNodeTemplate *UNUSED(ntemp)) +{ + NodeShaderNormalMap *attr = MEM_callocN(sizeof(NodeShaderNormalMap), "NodeShaderNormalMap"); + node->storage = attr; +} + +static int gpu_shader_normal_map(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) +{ + return GPU_stack_link(mat, "node_normal_map", in, out, GPU_builtin(GPU_VIEW_NORMAL)); +} + +/* node type definition */ +void register_node_type_sh_normal_map(bNodeTreeType *ttype) +{ + static bNodeType ntype; + + node_type_base(ttype, &ntype, SH_NODE_NORMAL_MAP, "Normal Map", NODE_CLASS_OP_VECTOR, NODE_OPTIONS); + node_type_compatibility(&ntype, NODE_NEW_SHADING); + node_type_socket_templates(&ntype, sh_node_normal_map_in, sh_node_normal_map_out); + node_type_size(&ntype, 250, 60, 250); + node_type_init(&ntype, node_shader_init_normal_map); + node_type_storage(&ntype, "NodeShaderNormalMap", node_free_standard_storage, node_copy_standard_storage); + node_type_exec(&ntype, NULL); + node_type_gpu(&ntype, gpu_shader_normal_map); + + nodeRegisterType(ttype, &ntype); +} + diff --git a/source/blender/nodes/shader/nodes/node_shader_object_info.c b/source/blender/nodes/shader/nodes/node_shader_object_info.c index 1cafa01ecec..ef283004d46 100644 --- a/source/blender/nodes/shader/nodes/node_shader_object_info.c +++ b/source/blender/nodes/shader/nodes/node_shader_object_info.c @@ -29,7 +29,7 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_object_info_out[]= { +static bNodeSocketTemplate sh_node_object_info_out[] = { { SOCK_VECTOR, 0, N_("Location"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Object Index"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Material Index"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, diff --git a/source/blender/nodes/shader/nodes/node_shader_output.c b/source/blender/nodes/shader/nodes/node_shader_output.c index 4434054abae..6f7f900aecd 100644 --- a/source/blender/nodes/shader/nodes/node_shader_output.c +++ b/source/blender/nodes/shader/nodes/node_shader_output.c @@ -33,7 +33,7 @@ #include "node_shader_util.h" /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_output_in[]= { +static bNodeSocketTemplate sh_node_output_in[] = { { SOCK_RGBA, 1, N_("Color"), 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Alpha"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR}, { -1, 0, "" } @@ -62,7 +62,7 @@ static void node_shader_exec_output(void *data, bNode *node, bNodeStack **in, bN // copy_v3_v3(shr->nor, in[3]->vec); } - } + } } static int gpu_shader_output(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) @@ -92,7 +92,7 @@ void register_node_type_sh_output(bNodeTreeType *ttype) node_type_gpu(&ntype, gpu_shader_output); /* Do not allow muting output node. */ - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } diff --git a/source/blender/nodes/shader/nodes/node_shader_output_lamp.c b/source/blender/nodes/shader/nodes/node_shader_output_lamp.c index eb7208302fe..ce406a8f5a1 100644 --- a/source/blender/nodes/shader/nodes/node_shader_output_lamp.c +++ b/source/blender/nodes/shader/nodes/node_shader_output_lamp.c @@ -29,7 +29,7 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_output_lamp_in[]= { +static bNodeSocketTemplate sh_node_output_lamp_in[] = { { SOCK_SHADER, 1, N_("Surface"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } }; @@ -49,7 +49,7 @@ void register_node_type_sh_output_lamp(bNodeTreeType *ttype) node_type_gpu(&ntype, NULL); /* Do not allow muting output node. */ - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } diff --git a/source/blender/nodes/shader/nodes/node_shader_output_material.c b/source/blender/nodes/shader/nodes/node_shader_output_material.c index e81744c44bd..f185e13010b 100644 --- a/source/blender/nodes/shader/nodes/node_shader_output_material.c +++ b/source/blender/nodes/shader/nodes/node_shader_output_material.c @@ -29,7 +29,7 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_output_material_in[]= { +static bNodeSocketTemplate sh_node_output_material_in[] = { { SOCK_SHADER, 1, N_("Surface")}, { SOCK_SHADER, 1, N_("Volume")}, { SOCK_FLOAT, 1, N_("Displacement"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, @@ -62,7 +62,7 @@ void register_node_type_sh_output_material(bNodeTreeType *ttype) node_type_gpu(&ntype, node_shader_gpu_output_material); /* Do not allow muting output node. */ - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } diff --git a/source/blender/nodes/shader/nodes/node_shader_output_world.c b/source/blender/nodes/shader/nodes/node_shader_output_world.c index 3a931c2af53..953197ab2cd 100644 --- a/source/blender/nodes/shader/nodes/node_shader_output_world.c +++ b/source/blender/nodes/shader/nodes/node_shader_output_world.c @@ -29,7 +29,7 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_output_world_in[]= { +static bNodeSocketTemplate sh_node_output_world_in[] = { { SOCK_SHADER, 1, N_("Surface"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_SHADER, 1, N_("Volume"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } @@ -50,7 +50,7 @@ void register_node_type_sh_output_world(bNodeTreeType *ttype) node_type_gpu(&ntype, NULL); /* Do not allow muting output node. */ - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } diff --git a/source/blender/nodes/shader/nodes/node_shader_particle_info.c b/source/blender/nodes/shader/nodes/node_shader_particle_info.c index ddfcb9476f4..c7e31d117cc 100644 --- a/source/blender/nodes/shader/nodes/node_shader_particle_info.c +++ b/source/blender/nodes/shader/nodes/node_shader_particle_info.c @@ -28,18 +28,18 @@ #include "../node_shader_util.h" static bNodeSocketTemplate outputs[] = { - { SOCK_FLOAT, 0, "Index" }, - { SOCK_FLOAT, 0, "Age" }, - { SOCK_FLOAT, 0, "Lifetime" }, - { SOCK_VECTOR, 0, "Location" }, - #if 0 /* quaternion sockets not yet supported */ - { SOCK_QUATERNION, 0, "Rotation" }, - #endif - { SOCK_FLOAT, 0, "Size" }, - { SOCK_VECTOR, 0, "Velocity" }, - { SOCK_VECTOR, 0, "Angular Velocity" }, - { -1, 0, "" } -}; + { SOCK_FLOAT, 0, "Index" }, + { SOCK_FLOAT, 0, "Age" }, + { SOCK_FLOAT, 0, "Lifetime" }, + { SOCK_VECTOR, 0, "Location" }, +#if 0 /* quaternion sockets not yet supported */ + { SOCK_QUATERNION, 0, "Rotation" }, +#endif + { SOCK_FLOAT, 0, "Size" }, + { SOCK_VECTOR, 0, "Velocity" }, + { SOCK_VECTOR, 0, "Angular Velocity" }, + { -1, 0, "" } + }; /* node type definition */ void register_node_type_sh_particle_info(bNodeTreeType *ttype) diff --git a/source/blender/nodes/shader/nodes/node_shader_rgb.c b/source/blender/nodes/shader/nodes/node_shader_rgb.c index 5a19c61fe92..f37ff1d511b 100644 --- a/source/blender/nodes/shader/nodes/node_shader_rgb.c +++ b/source/blender/nodes/shader/nodes/node_shader_rgb.c @@ -33,7 +33,7 @@ #include "node_shader_util.h" /* **************** RGB ******************** */ -static bNodeSocketTemplate sh_node_rgb_out[]= { +static bNodeSocketTemplate sh_node_rgb_out[] = { { SOCK_RGBA, 0, N_("Color")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/shader/nodes/node_shader_script.c b/source/blender/nodes/shader/nodes/node_shader_script.c new file mode 100644 index 00000000000..b5563658a64 --- /dev/null +++ b/source/blender/nodes/shader/nodes/node_shader_script.c @@ -0,0 +1,86 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2005 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file blender/nodes/shader/nodes/node_shader_script.c + * \ingroup shdnodes + */ + +#include "BKE_idprop.h" + +#include "node_shader_util.h" + +/* **************** Script ******************** */ + +static void init(bNodeTree *UNUSED(ntree), bNode *node, bNodeTemplate *UNUSED(ntemp)) +{ + NodeShaderScript *nss = MEM_callocN(sizeof(NodeShaderScript), "shader script node"); + node->storage = nss; +} + +static void node_free_script(bNode *node) +{ + NodeShaderScript *nss = node->storage; + + if (nss) { + if (nss->bytecode) { + MEM_freeN(nss->bytecode); + } + + if (nss->prop) { + IDP_FreeProperty(nss->prop); + MEM_freeN(nss->prop); + } + + MEM_freeN(nss); + } +} + +static void node_copy_script(bNode *orig_node, bNode *new_node) +{ + NodeShaderScript *orig_nss = orig_node->storage; + NodeShaderScript *new_nss = MEM_dupallocN(orig_nss); + + if (orig_nss->bytecode) + new_nss->bytecode = MEM_dupallocN(orig_nss->bytecode); + + if (orig_nss->prop) + new_nss->prop = IDP_CopyProperty(orig_nss->prop); + + new_node->storage = new_nss; +} + +void register_node_type_sh_script(bNodeTreeType *ttype) +{ + static bNodeType ntype; + + node_type_base(ttype, &ntype, SH_NODE_SCRIPT, "Script", NODE_CLASS_SCRIPT, NODE_OPTIONS); + node_type_compatibility(&ntype, NODE_NEW_SHADING); + node_type_init(&ntype, init); + node_type_storage(&ntype, "NodeShaderScript", node_free_script, node_copy_script); + + nodeRegisterType(ttype, &ntype); +} diff --git a/source/blender/nodes/shader/nodes/node_shader_sepcombRGB.c b/source/blender/nodes/shader/nodes/node_shader_sepcombRGB.c index 55f37b666e7..70fba161de9 100644 --- a/source/blender/nodes/shader/nodes/node_shader_sepcombRGB.c +++ b/source/blender/nodes/shader/nodes/node_shader_sepcombRGB.c @@ -33,11 +33,11 @@ #include "node_shader_util.h" /* **************** SEPARATE RGBA ******************** */ -static bNodeSocketTemplate sh_node_seprgb_in[]= { +static bNodeSocketTemplate sh_node_seprgb_in[] = { { SOCK_RGBA, 1, N_("Image"), 0.8f, 0.8f, 0.8f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_seprgb_out[]= { +static bNodeSocketTemplate sh_node_seprgb_out[] = { { SOCK_FLOAT, 0, N_("R")}, { SOCK_FLOAT, 0, N_("G")}, { SOCK_FLOAT, 0, N_("B")}, @@ -73,13 +73,13 @@ void register_node_type_sh_seprgb(bNodeTreeType *ttype) /* **************** COMBINE RGB ******************** */ -static bNodeSocketTemplate sh_node_combrgb_in[]= { +static bNodeSocketTemplate sh_node_combrgb_in[] = { { SOCK_FLOAT, 1, N_("R"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_UNSIGNED}, { SOCK_FLOAT, 1, N_("G"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_UNSIGNED}, { SOCK_FLOAT, 1, N_("B"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_UNSIGNED}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_combrgb_out[]= { +static bNodeSocketTemplate sh_node_combrgb_out[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/shader/nodes/node_shader_squeeze.c b/source/blender/nodes/shader/nodes/node_shader_squeeze.c index adab396be02..8073f4b01d2 100644 --- a/source/blender/nodes/shader/nodes/node_shader_squeeze.c +++ b/source/blender/nodes/shader/nodes/node_shader_squeeze.c @@ -33,20 +33,19 @@ #include "node_shader_util.h" /* **************** VALUE SQUEEZE ******************** */ -static bNodeSocketTemplate sh_node_squeeze_in[]= { - { SOCK_FLOAT, 1, N_("Value"), 0.0f, 0.0f, 0.0f, 0.0f, -100.0f, 100.0f, PROP_NONE}, - { SOCK_FLOAT, 1, N_("Width"), 1.0f, 0.0f, 0.0f, 0.0f, -100.0f, 100.0f, PROP_NONE}, - { SOCK_FLOAT, 1, N_("Center"), 0.0f, 0.0f, 0.0f, 0.0f, -100.0f, 100.0f, PROP_NONE}, - { -1, 0, "" } +static bNodeSocketTemplate sh_node_squeeze_in[] = { + { SOCK_FLOAT, 1, N_("Value"), 0.0f, 0.0f, 0.0f, 0.0f, -100.0f, 100.0f, PROP_NONE}, + { SOCK_FLOAT, 1, N_("Width"), 1.0f, 0.0f, 0.0f, 0.0f, -100.0f, 100.0f, PROP_NONE}, + { SOCK_FLOAT, 1, N_("Center"), 0.0f, 0.0f, 0.0f, 0.0f, -100.0f, 100.0f, PROP_NONE}, + { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_squeeze_out[]= { - { SOCK_FLOAT, 0, N_("Value")}, - { -1, 0, "" } +static bNodeSocketTemplate sh_node_squeeze_out[] = { + { SOCK_FLOAT, 0, N_("Value")}, + { -1, 0, "" } }; -static void node_shader_exec_squeeze(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **in, -bNodeStack **out) +static void node_shader_exec_squeeze(void *UNUSED(data), bNode *UNUSED(node), bNodeStack **in, bNodeStack **out) { float vec[3]; @@ -54,7 +53,7 @@ bNodeStack **out) nodestack_get_vec(vec+1, SOCK_FLOAT, in[1]); nodestack_get_vec(vec+2, SOCK_FLOAT, in[2]); - out[0]->vec[0] = 1.0f / (1.0f + pow(M_E, -((vec[0] - vec[2]) * vec[1]))); + out[0]->vec[0] = 1.0f / (1.0f + powf(M_E, -((vec[0] - vec[2]) * vec[1]))); } static int gpu_shader_squeeze(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out) diff --git a/source/blender/nodes/shader/nodes/node_shader_tangent.c b/source/blender/nodes/shader/nodes/node_shader_tangent.c new file mode 100644 index 00000000000..6c0d6d7cd9f --- /dev/null +++ b/source/blender/nodes/shader/nodes/node_shader_tangent.c @@ -0,0 +1,60 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2005 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include "../node_shader_util.h" + +/* **************** OUTPUT ******************** */ + +static bNodeSocketTemplate sh_node_tangent_out[] = { + { SOCK_VECTOR, 0, N_("Tangent"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, + { -1, 0, "" } +}; + +static void node_shader_init_tangent(bNodeTree *UNUSED(ntree), bNode *node, bNodeTemplate *UNUSED(ntemp)) +{ + NodeShaderTangent *attr = MEM_callocN(sizeof(NodeShaderTangent), "NodeShaderTangent"); + attr->axis = SHD_TANGENT_AXIS_Z; + node->storage = attr; +} + +/* node type definition */ +void register_node_type_sh_tangent(bNodeTreeType *ttype) +{ + static bNodeType ntype; + + node_type_base(ttype, &ntype, SH_NODE_TANGENT, "Tangent", NODE_CLASS_INPUT, NODE_OPTIONS); + node_type_compatibility(&ntype, NODE_NEW_SHADING); + node_type_socket_templates(&ntype, NULL, sh_node_tangent_out); + node_type_size(&ntype, 150, 60, 200); + node_type_init(&ntype, node_shader_init_tangent); + node_type_storage(&ntype, "NodeShaderTangent", node_free_standard_storage, node_copy_standard_storage); + node_type_exec(&ntype, NULL); + node_type_gpu(&ntype, NULL); + + nodeRegisterType(ttype, &ntype); +} + diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_brick.c b/source/blender/nodes/shader/nodes/node_shader_tex_brick.c index 11f7fb94ae0..66bf0267586 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_brick.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_brick.c @@ -29,7 +29,7 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_tex_brick_in[]= { +static bNodeSocketTemplate sh_node_tex_brick_in[] = { { SOCK_VECTOR, 1, N_("Vector"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { SOCK_RGBA, 1, N_("Color1"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, { SOCK_RGBA, 1, N_("Color2"), 0.2f, 0.2f, 0.2f, 1.0f, 0.0f, 1.0f}, @@ -42,7 +42,7 @@ static bNodeSocketTemplate sh_node_tex_brick_in[]= { { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_tex_brick_out[]= { +static bNodeSocketTemplate sh_node_tex_brick_out[] = { { SOCK_RGBA, 0, N_("Color"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Fac"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_checker.c b/source/blender/nodes/shader/nodes/node_shader_tex_checker.c index 0c1e7dcb995..8a2ae2d40dc 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_checker.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_checker.c @@ -29,7 +29,7 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_tex_checker_in[]= { +static bNodeSocketTemplate sh_node_tex_checker_in[] = { { SOCK_VECTOR, 1, N_("Vector"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { SOCK_RGBA, 1, N_("Color1"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, { SOCK_RGBA, 1, N_("Color2"), 0.2f, 0.2f, 0.2f, 1.0f, 0.0f, 1.0f}, @@ -37,7 +37,7 @@ static bNodeSocketTemplate sh_node_tex_checker_in[]= { { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_tex_checker_out[]= { +static bNodeSocketTemplate sh_node_tex_checker_out[] = { { SOCK_RGBA, 0, N_("Color"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Fac"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_coord.c b/source/blender/nodes/shader/nodes/node_shader_tex_coord.c index 62b1cabd491..dd717874951 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_coord.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_coord.c @@ -31,7 +31,7 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_tex_coord_out[]= { +static bNodeSocketTemplate sh_node_tex_coord_out[] = { { SOCK_VECTOR, 0, N_("Generated"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_VECTOR, 0, N_("Normal"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_VECTOR, 0, N_("UV"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_environment.c b/source/blender/nodes/shader/nodes/node_shader_tex_environment.c index ace0f0c8774..abe8e0190c8 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_environment.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_environment.c @@ -27,14 +27,16 @@ #include "../node_shader_util.h" +#include "IMB_colormanagement.h" + /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_tex_environment_in[]= { +static bNodeSocketTemplate sh_node_tex_environment_in[] = { { SOCK_VECTOR, 1, N_("Vector"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_tex_environment_out[]= { +static bNodeSocketTemplate sh_node_tex_environment_out[] = { { SOCK_RGBA, 0, N_("Color"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } }; @@ -59,7 +61,8 @@ static int node_shader_gpu_tex_environment(GPUMaterial *mat, bNode *node, GPUNod Image *ima= (Image*)node->id; ImageUser *iuser= NULL; NodeTexImage *tex = node->storage; - int ncd = tex->color_space == SHD_COLORSPACE_NONE; + int isdata = tex->color_space == SHD_COLORSPACE_NONE; + int ret; if (!ima) return GPU_stack_link(mat, "node_tex_environment_empty", in, out); @@ -69,10 +72,18 @@ static int node_shader_gpu_tex_environment(GPUMaterial *mat, bNode *node, GPUNod node_shader_gpu_tex_mapping(mat, node, in, out); - if (out[0].link && GPU_material_do_color_management(mat)) - GPU_link(mat, "srgb_to_linearrgb", out[0].link, &out[0].link); + ret = GPU_stack_link(mat, "node_tex_environment", in, out, GPU_image(ima, iuser, isdata)); + + if (ret) { + ImBuf *ibuf = BKE_image_get_ibuf(ima, iuser); + if (ibuf && (ibuf->colormanage_flag & IMB_COLORMANAGE_IS_DATA) == 0 && + GPU_material_do_color_management(mat)) + { + GPU_link(mat, "srgb_to_linearrgb", out[0].link, &out[0].link); + } + } - return GPU_stack_link(mat, "node_tex_environment", in, out, GPU_image(ima, iuser, ncd)); + return ret; } /* node type definition */ diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_gradient.c b/source/blender/nodes/shader/nodes/node_shader_tex_gradient.c index a7f869155fa..0802ecdea1d 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_gradient.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_gradient.c @@ -29,12 +29,12 @@ /* **************** BLEND ******************** */ -static bNodeSocketTemplate sh_node_tex_gradient_in[]= { +static bNodeSocketTemplate sh_node_tex_gradient_in[] = { { SOCK_VECTOR, 1, N_("Vector"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_tex_gradient_out[]= { +static bNodeSocketTemplate sh_node_tex_gradient_out[] = { { SOCK_RGBA, 0, N_("Color"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Fac"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_image.c b/source/blender/nodes/shader/nodes/node_shader_tex_image.c index d6c757222b9..9b17f76bd47 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_image.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_image.c @@ -27,14 +27,16 @@ #include "../node_shader_util.h" +#include "IMB_colormanagement.h" + /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_tex_image_in[]= { +static bNodeSocketTemplate sh_node_tex_image_in[] = { { SOCK_VECTOR, 1, N_("Vector"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_tex_image_out[]= { +static bNodeSocketTemplate sh_node_tex_image_out[] = { { SOCK_RGBA, 0, N_("Color"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Alpha"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } @@ -59,7 +61,8 @@ static int node_shader_gpu_tex_image(GPUMaterial *mat, bNode *node, GPUNodeStack Image *ima= (Image*)node->id; ImageUser *iuser= NULL; NodeTexImage *tex = node->storage; - int ncd = tex->color_space == SHD_COLORSPACE_NONE; + int isdata = tex->color_space == SHD_COLORSPACE_NONE; + int ret; if (!ima) return GPU_stack_link(mat, "node_tex_image_empty", in, out); @@ -69,10 +72,18 @@ static int node_shader_gpu_tex_image(GPUMaterial *mat, bNode *node, GPUNodeStack node_shader_gpu_tex_mapping(mat, node, in, out); - if (out[0].link && GPU_material_do_color_management(mat)) - GPU_link(mat, "srgb_to_linearrgb", out[0].link, &out[0].link); + ret = GPU_stack_link(mat, "node_tex_image", in, out, GPU_image(ima, iuser, isdata)); + + if (ret) { + ImBuf *ibuf = BKE_image_get_ibuf(ima, iuser); + if (ibuf && (ibuf->colormanage_flag & IMB_COLORMANAGE_IS_DATA) == 0 && + GPU_material_do_color_management(mat)) + { + GPU_link(mat, "srgb_to_linearrgb", out[0].link, &out[0].link); + } + } - return GPU_stack_link(mat, "node_tex_image", in, out, GPU_image(ima, iuser, ncd)); + return ret; } /* node type definition */ diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_magic.c b/source/blender/nodes/shader/nodes/node_shader_tex_magic.c index b9f1b5c1d21..86feabbcc2b 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_magic.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_magic.c @@ -29,14 +29,14 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_tex_magic_in[]= { +static bNodeSocketTemplate sh_node_tex_magic_in[] = { { SOCK_VECTOR, 1, N_("Vector"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { SOCK_FLOAT, 1, N_("Scale"), 5.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f}, { SOCK_FLOAT, 1, N_("Distortion"), 1.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_tex_magic_out[]= { +static bNodeSocketTemplate sh_node_tex_magic_out[] = { { SOCK_RGBA, 0, N_("Color"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Fac"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c b/source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c index 60b4f65f0b4..cd4b5743e14 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c @@ -29,7 +29,7 @@ /* **************** MUSGRAVE ******************** */ -static bNodeSocketTemplate sh_node_tex_musgrave_in[]= { +static bNodeSocketTemplate sh_node_tex_musgrave_in[] = { { SOCK_VECTOR, 1, N_("Vector"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { SOCK_FLOAT, 1, N_("Scale"), 5.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f}, { SOCK_FLOAT, 1, N_("Detail"), 2.0f, 0.0f, 0.0f, 0.0f, 0.0f, 16.0f}, @@ -40,7 +40,7 @@ static bNodeSocketTemplate sh_node_tex_musgrave_in[]= { { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_tex_musgrave_out[]= { +static bNodeSocketTemplate sh_node_tex_musgrave_out[] = { { SOCK_RGBA, 0, N_("Color"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Fac"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_noise.c b/source/blender/nodes/shader/nodes/node_shader_tex_noise.c index bd049300048..18788f9e72c 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_noise.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_noise.c @@ -29,7 +29,7 @@ /* **************** NOISE ******************** */ -static bNodeSocketTemplate sh_node_tex_noise_in[]= { +static bNodeSocketTemplate sh_node_tex_noise_in[] = { { SOCK_VECTOR, 1, N_("Vector"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { SOCK_FLOAT, 1, N_("Scale"), 5.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f}, { SOCK_FLOAT, 1, N_("Detail"), 2.0f, 0.0f, 0.0f, 0.0f, 0.0f, 16.0f}, @@ -37,7 +37,7 @@ static bNodeSocketTemplate sh_node_tex_noise_in[]= { { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_tex_noise_out[]= { +static bNodeSocketTemplate sh_node_tex_noise_out[] = { { SOCK_RGBA, 0, N_("Color"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Fac"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_sky.c b/source/blender/nodes/shader/nodes/node_shader_tex_sky.c index 977d689ace6..7a1b853a7f4 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_sky.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_sky.c @@ -29,12 +29,12 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_tex_sky_in[]= { +static bNodeSocketTemplate sh_node_tex_sky_in[] = { { SOCK_VECTOR, 1, N_("Vector"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_tex_sky_out[]= { +static bNodeSocketTemplate sh_node_tex_sky_out[] = { { SOCK_RGBA, 0, N_("Color"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } }; diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c b/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c index 22baa3853ac..d4cc24687b3 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c @@ -29,13 +29,13 @@ /* **************** VORONOI ******************** */ -static bNodeSocketTemplate sh_node_tex_voronoi_in[]= { +static bNodeSocketTemplate sh_node_tex_voronoi_in[] = { { SOCK_VECTOR, 1, N_("Vector"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { SOCK_FLOAT, 1, N_("Scale"), 5.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_tex_voronoi_out[]= { +static bNodeSocketTemplate sh_node_tex_voronoi_out[] = { { SOCK_RGBA, 0, N_("Color"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Fac"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_wave.c b/source/blender/nodes/shader/nodes/node_shader_tex_wave.c index 8a099521ee9..8b23de0310c 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_wave.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_wave.c @@ -29,7 +29,7 @@ /* **************** WAVE ******************** */ -static bNodeSocketTemplate sh_node_tex_wave_in[]= { +static bNodeSocketTemplate sh_node_tex_wave_in[] = { { SOCK_VECTOR, 1, N_("Vector"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, { SOCK_FLOAT, 1, N_("Scale"), 5.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f}, { SOCK_FLOAT, 1, N_("Distortion"), 0.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f}, @@ -38,7 +38,7 @@ static bNodeSocketTemplate sh_node_tex_wave_in[]= { { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_tex_wave_out[]= { +static bNodeSocketTemplate sh_node_tex_wave_out[] = { { SOCK_RGBA, 0, N_("Color"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 0, N_("Fac"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } diff --git a/source/blender/nodes/shader/nodes/node_shader_texture.c b/source/blender/nodes/shader/nodes/node_shader_texture.c index 73c3b846fe3..6d1b3ff6dba 100644 --- a/source/blender/nodes/shader/nodes/node_shader_texture.c +++ b/source/blender/nodes/shader/nodes/node_shader_texture.c @@ -32,14 +32,16 @@ #include "DNA_texture_types.h" +#include "IMB_colormanagement.h" + #include "node_shader_util.h" /* **************** TEXTURE ******************** */ -static bNodeSocketTemplate sh_node_texture_in[]= { +static bNodeSocketTemplate sh_node_texture_in[] = { { SOCK_VECTOR, 1, "Vector", 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE}, /* no limit */ { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_texture_out[]= { +static bNodeSocketTemplate sh_node_texture_out[] = { { SOCK_FLOAT, 0, N_("Value")}, { SOCK_RGBA, 0, N_("Color")}, { SOCK_VECTOR, 0, N_("Normal")}, @@ -52,7 +54,7 @@ static void node_shader_exec_texture(void *data, bNode *node, bNodeStack **in, b ShadeInput *shi= ((ShaderCallData *)data)->shi; TexResult texres; bNodeSocket *sock_vector= node->inputs.first; - float vec[3], nor[3]={0.0f, 0.0f, 0.0f}; + float vec[3], nor[3] = {0.0f, 0.0f, 0.0f}; int retval; short which_output = node->custom1; @@ -76,8 +78,8 @@ static void node_shader_exec_texture(void *data, bNode *node, bNodeStack **in, b float *fp= in[0]->data; float dxt[3], dyt[3]; - dxt[0]= fp[0]; dxt[1]= dxt[2]= 0.0f; - dyt[0]= fp[1]; dyt[1]= dyt[2]= 0.0f; + dxt[0] = fp[0]; dxt[1] = dxt[2] = 0.0f; + dyt[0] = fp[1]; dyt[1] = dyt[2] = 0.0f; retval= multitex_nodes((Tex *)node->id, vec, dxt, dyt, shi->osatex, &texres, thread, which_output, NULL, NULL); } else @@ -96,9 +98,9 @@ static void node_shader_exec_texture(void *data, bNode *node, bNodeStack **in, b /* intensity and color need some handling */ if (texres.talpha) - out[0]->vec[0]= texres.ta; + out[0]->vec[0] = texres.ta; else - out[0]->vec[0]= texres.tin; + out[0]->vec[0] = texres.tin; if ((retval & TEX_RGB) == 0) { copy_v3_fl(out[1]->vec, out[0]->vec[0]); @@ -122,8 +124,19 @@ static int gpu_shader_texture(GPUMaterial *mat, bNode *node, GPUNodeStack *in, G Tex *tex = (Tex*)node->id; if (tex && tex->type == TEX_IMAGE && tex->ima) { - GPUNodeLink *texlink = GPU_image(tex->ima, NULL, FALSE); - return GPU_stack_link(mat, "texture_image", in, out, texlink); + GPUNodeLink *texlink = GPU_image(tex->ima, &tex->iuser, FALSE); + int ret = GPU_stack_link(mat, "texture_image", in, out, texlink); + + if (ret) { + ImBuf *ibuf = BKE_image_get_ibuf(tex->ima, &tex->iuser); + if (ibuf && (ibuf->colormanage_flag & IMB_COLORMANAGE_IS_DATA) ==0 && + GPU_material_do_color_management(mat)) + { + GPU_link(mat, "srgb_to_linearrgb", out[1].link, &out[1].link); + } + } + + return ret; } else return 0; diff --git a/source/blender/nodes/shader/nodes/node_shader_valToRgb.c b/source/blender/nodes/shader/nodes/node_shader_valToRgb.c index d3094200f83..182487d343e 100644 --- a/source/blender/nodes/shader/nodes/node_shader_valToRgb.c +++ b/source/blender/nodes/shader/nodes/node_shader_valToRgb.c @@ -33,11 +33,11 @@ #include "node_shader_util.h" /* **************** VALTORGB ******************** */ -static bNodeSocketTemplate sh_node_valtorgb_in[]= { +static bNodeSocketTemplate sh_node_valtorgb_in[] = { { SOCK_FLOAT, 1, N_("Fac"), 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_valtorgb_out[]= { +static bNodeSocketTemplate sh_node_valtorgb_out[] = { { SOCK_RGBA, 0, N_("Color")}, { SOCK_FLOAT, 0, N_("Alpha")}, { -1, 0, "" } @@ -53,7 +53,7 @@ static void node_shader_exec_valtorgb(void *UNUSED(data), bNode *node, bNodeStac nodestack_get_vec(&fac, SOCK_FLOAT, in[0]); do_colorband(node->storage, fac, out[0]->vec); - out[1]->vec[0]= out[0]->vec[3]; + out[1]->vec[0] = out[0]->vec[3]; } } @@ -89,11 +89,11 @@ void register_node_type_sh_valtorgb(bNodeTreeType *ttype) /* **************** RGBTOBW ******************** */ -static bNodeSocketTemplate sh_node_rgbtobw_in[]= { +static bNodeSocketTemplate sh_node_rgbtobw_in[] = { { SOCK_RGBA, 1, N_("Color"), 0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_rgbtobw_out[]= { +static bNodeSocketTemplate sh_node_rgbtobw_out[] = { { SOCK_FLOAT, 0, N_("Val"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, { -1, 0, "" } }; diff --git a/source/blender/nodes/shader/nodes/node_shader_value.c b/source/blender/nodes/shader/nodes/node_shader_value.c index 8a6c3c87e0d..a3d1e5afec2 100644 --- a/source/blender/nodes/shader/nodes/node_shader_value.c +++ b/source/blender/nodes/shader/nodes/node_shader_value.c @@ -33,7 +33,7 @@ #include "node_shader_util.h" /* **************** VALUE ******************** */ -static bNodeSocketTemplate sh_node_value_out[]= { +static bNodeSocketTemplate sh_node_value_out[] = { /* XXX value nodes use the output sockets for buttons, so we need explicit limits here! */ { SOCK_FLOAT, 0, N_("Value"), 0.0f, 0.0f, 0.0f, 0.0f, -FLT_MAX, FLT_MAX}, { -1, 0, "" } @@ -54,7 +54,7 @@ static void node_shader_exec_value(void *UNUSED(data), bNode *node, bNodeStack * bNodeSocket *sock= node->outputs.first; float val= ((bNodeSocketValueFloat*)sock->default_value)->value; - out[0]->vec[0]= val; + out[0]->vec[0] = val; } static int gpu_shader_value(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out) diff --git a/source/blender/nodes/shader/nodes/node_shader_vectMath.c b/source/blender/nodes/shader/nodes/node_shader_vectMath.c index 007366c6082..3e00421ddf0 100644 --- a/source/blender/nodes/shader/nodes/node_shader_vectMath.c +++ b/source/blender/nodes/shader/nodes/node_shader_vectMath.c @@ -35,16 +35,16 @@ /* **************** VECTOR MATH ******************** */ -static bNodeSocketTemplate sh_node_vect_math_in[]= { - { SOCK_VECTOR, 1, N_("Vector"), 0.5f, 0.5f, 0.5f, 1.0f, -10000.0f, 10000.0f, PROP_NONE}, - { SOCK_VECTOR, 1, N_("Vector"), 0.5f, 0.5f, 0.5f, 1.0f, -10000.0f, 10000.0f, PROP_NONE}, - { -1, 0, "" } +static bNodeSocketTemplate sh_node_vect_math_in[] = { + { SOCK_VECTOR, 1, N_("Vector"), 0.5f, 0.5f, 0.5f, 1.0f, -10000.0f, 10000.0f, PROP_NONE}, + { SOCK_VECTOR, 1, N_("Vector"), 0.5f, 0.5f, 0.5f, 1.0f, -10000.0f, 10000.0f, PROP_NONE}, + { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_vect_math_out[]= { - { SOCK_VECTOR, 0, N_("Vector")}, +static bNodeSocketTemplate sh_node_vect_math_out[] = { + { SOCK_VECTOR, 0, N_("Vector")}, { SOCK_FLOAT, 0, N_("Value")}, - { -1, 0, "" } + { -1, 0, "" } }; static void node_shader_exec_vect_math(void *UNUSED(data), bNode *node, bNodeStack **in, bNodeStack **out) @@ -55,46 +55,46 @@ static void node_shader_exec_vect_math(void *UNUSED(data), bNode *node, bNodeSta nodestack_get_vec(vec2, SOCK_VECTOR, in[1]); if (node->custom1 == 0) { /* Add */ - out[0]->vec[0]= vec1[0] + vec2[0]; - out[0]->vec[1]= vec1[1] + vec2[1]; - out[0]->vec[2]= vec1[2] + vec2[2]; + out[0]->vec[0] = vec1[0] + vec2[0]; + out[0]->vec[1] = vec1[1] + vec2[1]; + out[0]->vec[2] = vec1[2] + vec2[2]; - out[1]->vec[0]= (fabs(out[0]->vec[0]) + fabs(out[0]->vec[0]) + fabs(out[0]->vec[0])) / 3; + out[1]->vec[0] = (fabs(out[0]->vec[0]) + fabs(out[0]->vec[0]) + fabs(out[0]->vec[0])) / 3; } else if (node->custom1 == 1) { /* Subtract */ - out[0]->vec[0]= vec1[0] - vec2[0]; - out[0]->vec[1]= vec1[1] - vec2[1]; - out[0]->vec[2]= vec1[2] - vec2[2]; + out[0]->vec[0] = vec1[0] - vec2[0]; + out[0]->vec[1] = vec1[1] - vec2[1]; + out[0]->vec[2] = vec1[2] - vec2[2]; - out[1]->vec[0]= (fabs(out[0]->vec[0]) + fabs(out[0]->vec[0]) + fabs(out[0]->vec[0])) / 3; + out[1]->vec[0] = (fabs(out[0]->vec[0]) + fabs(out[0]->vec[0]) + fabs(out[0]->vec[0])) / 3; } else if (node->custom1 == 2) { /* Average */ - out[0]->vec[0]= vec1[0] + vec2[0]; - out[0]->vec[1]= vec1[1] + vec2[1]; - out[0]->vec[2]= vec1[2] + vec2[2]; + out[0]->vec[0] = vec1[0] + vec2[0]; + out[0]->vec[1] = vec1[1] + vec2[1]; + out[0]->vec[2] = vec1[2] + vec2[2]; out[1]->vec[0] = normalize_v3(out[0]->vec ); } else if (node->custom1 == 3) { /* Dot product */ - out[1]->vec[0]= (vec1[0] * vec2[0]) + (vec1[1] * vec2[1]) + (vec1[2] * vec2[2]); + out[1]->vec[0] = (vec1[0] * vec2[0]) + (vec1[1] * vec2[1]) + (vec1[2] * vec2[2]); } else if (node->custom1 == 4) { /* Cross product */ - out[0]->vec[0]= (vec1[1] * vec2[2]) - (vec1[2] * vec2[1]); - out[0]->vec[1]= (vec1[2] * vec2[0]) - (vec1[0] * vec2[2]); - out[0]->vec[2]= (vec1[0] * vec2[1]) - (vec1[1] * vec2[0]); + out[0]->vec[0] = (vec1[1] * vec2[2]) - (vec1[2] * vec2[1]); + out[0]->vec[1] = (vec1[2] * vec2[0]) - (vec1[0] * vec2[2]); + out[0]->vec[2] = (vec1[0] * vec2[1]) - (vec1[1] * vec2[0]); out[1]->vec[0] = normalize_v3(out[0]->vec ); } else if (node->custom1 == 5) { /* Normalize */ if (in[0]->hasinput || !in[1]->hasinput) { /* This one only takes one input, so we've got to choose. */ - out[0]->vec[0]= vec1[0]; - out[0]->vec[1]= vec1[1]; - out[0]->vec[2]= vec1[2]; + out[0]->vec[0] = vec1[0]; + out[0]->vec[1] = vec1[1]; + out[0]->vec[2] = vec1[2]; } else { - out[0]->vec[0]= vec2[0]; - out[0]->vec[1]= vec2[1]; - out[0]->vec[2]= vec2[2]; + out[0]->vec[0] = vec2[0]; + out[0]->vec[1] = vec2[1]; + out[0]->vec[2] = vec2[2]; } out[1]->vec[0] = normalize_v3(out[0]->vec ); @@ -114,14 +114,23 @@ static int gpu_shader_vect_math(GPUMaterial *mat, bNode *node, GPUNodeStack *in, case 2: case 3: case 4: - GPU_stack_link(mat, names[node->custom1], NULL, out, - GPU_socket(&in[0]), GPU_socket(&in[1])); + GPU_stack_link(mat, names[node->custom1], in, out); 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])); + if (in[0].hasinput || !in[1].hasinput) { + /* use only first item and terminator */ + GPUNodeStack tmp_in[2]; + memcpy(&tmp_in[0], &in[0], sizeof(GPUNodeStack)); + memcpy(&tmp_in[1], &in[2], sizeof(GPUNodeStack)); + GPU_stack_link(mat, names[node->custom1], tmp_in, out); + } + else { + /* use only second item and terminator */ + GPUNodeStack tmp_in[2]; + memcpy(&tmp_in[0], &in[1], sizeof(GPUNodeStack)); + memcpy(&tmp_in[1], &in[2], sizeof(GPUNodeStack)); + GPU_stack_link(mat, names[node->custom1], tmp_in, out); + } break; default: return 0; diff --git a/source/blender/nodes/shader/nodes/node_shader_volume_isotropic.c b/source/blender/nodes/shader/nodes/node_shader_volume_isotropic.c index 366f50ab4fc..5451eb303cc 100644 --- a/source/blender/nodes/shader/nodes/node_shader_volume_isotropic.c +++ b/source/blender/nodes/shader/nodes/node_shader_volume_isotropic.c @@ -29,13 +29,13 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_volume_isotropic_in[]= { +static bNodeSocketTemplate sh_node_volume_isotropic_in[] = { { SOCK_RGBA, 1, N_("Color"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Density"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_volume_isotropic_out[]= { +static bNodeSocketTemplate sh_node_volume_isotropic_out[] = { { SOCK_SHADER, 0, N_("Volume")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/shader/nodes/node_shader_volume_transparent.c b/source/blender/nodes/shader/nodes/node_shader_volume_transparent.c index 9d48f613d34..ad7d7fceda3 100644 --- a/source/blender/nodes/shader/nodes/node_shader_volume_transparent.c +++ b/source/blender/nodes/shader/nodes/node_shader_volume_transparent.c @@ -29,13 +29,13 @@ /* **************** OUTPUT ******************** */ -static bNodeSocketTemplate sh_node_volume_transparent_in[]= { +static bNodeSocketTemplate sh_node_volume_transparent_in[] = { { SOCK_RGBA, 1, N_("Color"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Density"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate sh_node_volume_transparent_out[]= { +static bNodeSocketTemplate sh_node_volume_transparent_out[] = { { SOCK_SHADER, 0, N_("Volume")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/texture/node_texture_tree.c b/source/blender/nodes/texture/node_texture_tree.c index 9656d93f1b0..ba94531c259 100644 --- a/source/blender/nodes/texture/node_texture_tree.c +++ b/source/blender/nodes/texture/node_texture_tree.c @@ -4,7 +4,7 @@ * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -134,7 +134,7 @@ bNodeTreeType ntreeType_Texture = { /* update */ update, /* update_node */ NULL, /* validate_link */ NULL, - /* internal_connect */ node_internal_connect_default + /* update_internal_links */ node_update_internal_links_default }; int ntreeTexTagAnimated(bNodeTree *ntree) @@ -240,19 +240,19 @@ void ntreeTexEndExecTree(bNodeTreeExec *exec, int use_tree_data) } int ntreeTexExecTree( - bNodeTree *nodes, - TexResult *texres, - float *co, - float *dxt, float *dyt, - int osatex, - short thread, - Tex *UNUSED(tex), - short which_output, - int cfra, - int preview, - ShadeInput *shi, - MTex *mtex -) { + bNodeTree *nodes, + TexResult *texres, + float co[3], + float dxt[3], float dyt[3], + int osatex, + const short thread, + Tex *UNUSED(tex), + short which_output, + int cfra, + int preview, + ShadeInput *shi, + MTex *mtex) +{ TexCallData data; float *nor = texres->nor; int retval = TEX_INT; diff --git a/source/blender/nodes/texture/node_texture_util.c b/source/blender/nodes/texture/node_texture_util.c index 5e58b74ac3a..06473d800d0 100644 --- a/source/blender/nodes/texture/node_texture_util.c +++ b/source/blender/nodes/texture/node_texture_util.c @@ -4,7 +4,7 @@ * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -29,7 +29,7 @@ * \ingroup nodes */ - + /* * HOW TEXTURE NODES WORK * @@ -112,13 +112,13 @@ void params_from_cdata(TexParams *out, TexCallData *in) out->mtex = in->mtex; } -void tex_do_preview(bNode *node, float *co, float *col) +void tex_do_preview(bNode *node, const float coord[2], const float col[4]) { - bNodePreview *preview= node->preview; + bNodePreview *preview = node->preview; if (preview) { - int xs= ((co[0] + 1.0f)*0.5f)*preview->xsize; - int ys= ((co[1] + 1.0f)*0.5f)*preview->ysize; + int xs = ((coord[0] + 1.0f) * 0.5f) * preview->xsize; + int ys = ((coord[1] + 1.0f) * 0.5f) * preview->ysize; nodeAddToPreview(node, col, xs, ys, 0); /* 0 = no color management */ } @@ -132,19 +132,19 @@ void tex_output(bNode *node, bNodeStack **in, bNodeStack *out, TexFn texfn, TexC dg = out->data = MEM_mallocN(sizeof(TexDelegate), "tex delegate"); else dg = out->data; - - dg->cdata= cdata; + + dg->cdata = cdata; dg->fn = texfn; dg->node = node; - memcpy(dg->in, in, MAX_SOCKET * sizeof(bNodeStack*)); + memcpy(dg->in, in, MAX_SOCKET * sizeof(bNodeStack *)); dg->type = out->sockettype; } void ntreeTexCheckCyclics(struct bNodeTree *ntree) { bNode *node; - for (node= ntree->nodes.first; node; node= node->next) { - + for (node = ntree->nodes.first; node; node = node->next) { + if (node->type == TEX_NODE_TEXTURE && node->id) { /* custom2 stops the node from rendering */ if (node->custom1) { diff --git a/source/blender/nodes/texture/node_texture_util.h b/source/blender/nodes/texture/node_texture_util.h index e938e6fc419..16dbc2f7bfb 100644 --- a/source/blender/nodes/texture/node_texture_util.h +++ b/source/blender/nodes/texture/node_texture_util.h @@ -79,8 +79,10 @@ typedef struct TexCallData { TexResult *target; + /* all float[3] */ float *co; float *dxt, *dyt; + int osatex; char do_preview; short thread; @@ -94,7 +96,7 @@ typedef struct TexCallData { typedef struct TexParams { float *co; float *dxt, *dyt; - float *previewco; + const float *previewco; int cfra; int osatex; @@ -119,7 +121,7 @@ void tex_input_vec(float *out, bNodeStack *in, TexParams *params, short thread); float tex_input_value(bNodeStack *in, TexParams *params, short thread); void tex_output(bNode *node, bNodeStack **in, bNodeStack *out, TexFn texfn, TexCallData *data); -void tex_do_preview(bNode *node, float *coord, float *col); +void tex_do_preview(bNode *node, const float coord[2], const float col[4]); void params_from_cdata(TexParams *out, TexCallData *in); diff --git a/source/blender/nodes/texture/nodes/node_texture_at.c b/source/blender/nodes/texture/nodes/node_texture_at.c index 9e557705b3f..4c2d276b902 100644 --- a/source/blender/nodes/texture/nodes/node_texture_at.c +++ b/source/blender/nodes/texture/nodes/node_texture_at.c @@ -33,12 +33,12 @@ #include "node_texture_util.h" #include "NOD_texture.h" -static bNodeSocketTemplate inputs[]= { +static bNodeSocketTemplate inputs[] = { { SOCK_RGBA, 1, N_("Texture"), 0.0f, 0.0f, 0.0f, 1.0f }, { SOCK_VECTOR, 1, N_("Coordinates"), 0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 1.0f, PROP_NONE }, { -1, 0, "" } }; -static bNodeSocketTemplate outputs[]= { +static bNodeSocketTemplate outputs[] = { { SOCK_RGBA, 0, N_("Texture") }, { -1, 0, "" } }; diff --git a/source/blender/nodes/texture/nodes/node_texture_bricks.c b/source/blender/nodes/texture/nodes/node_texture_bricks.c index f6259962529..b4f81f08e43 100644 --- a/source/blender/nodes/texture/nodes/node_texture_bricks.c +++ b/source/blender/nodes/texture/nodes/node_texture_bricks.c @@ -35,7 +35,7 @@ #include <math.h> -static bNodeSocketTemplate inputs[]= { +static bNodeSocketTemplate inputs[] = { { SOCK_RGBA, 1, N_("Bricks 1"), 0.596f, 0.282f, 0.0f, 1.0f }, { SOCK_RGBA, 1, N_("Bricks 2"), 0.632f, 0.504f, 0.05f, 1.0f }, { SOCK_RGBA, 1, N_("Mortar"), 0.0f, 0.0f, 0.0f, 1.0f }, @@ -45,7 +45,7 @@ static bNodeSocketTemplate inputs[]= { { SOCK_FLOAT, 1, N_("Row Height"), 0.25f, 0.0f, 0.0f, 0.0f, 0.001f, 99.0f, PROP_UNSIGNED }, { -1, 0, "" } }; -static bNodeSocketTemplate outputs[]= { +static bNodeSocketTemplate outputs[] = { { SOCK_RGBA, 0, N_("Color")}, { -1, 0, "" } }; @@ -66,7 +66,7 @@ static float noise(int n) /* fast integer noise */ static void colorfn(float *out, TexParams *p, bNode *node, bNodeStack **in, short thread) { - float *co = p->co; + const float *co = p->co; float x = co[0]; float y = co[1]; diff --git a/source/blender/nodes/texture/nodes/node_texture_checker.c b/source/blender/nodes/texture/nodes/node_texture_checker.c index cd9c3170cf7..1f653d1f7b9 100644 --- a/source/blender/nodes/texture/nodes/node_texture_checker.c +++ b/source/blender/nodes/texture/nodes/node_texture_checker.c @@ -34,13 +34,13 @@ #include "NOD_texture.h" #include <math.h> -static bNodeSocketTemplate inputs[]= { +static bNodeSocketTemplate inputs[] = { { SOCK_RGBA, 1, N_("Color1"), 1.0f, 0.0f, 0.0f, 1.0f }, { SOCK_RGBA, 1, N_("Color2"), 1.0f, 1.0f, 1.0f, 1.0f }, { SOCK_FLOAT, 1, N_("Size"), 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 100.0f, PROP_UNSIGNED }, { -1, 0, "" } }; -static bNodeSocketTemplate outputs[]= { +static bNodeSocketTemplate outputs[] = { { SOCK_RGBA, 0, N_("Color") }, { -1, 0, "" } }; @@ -62,7 +62,7 @@ static void colorfn(float *out, TexParams *p, bNode *UNUSED(node), bNodeStack ** } else { tex_input_rgba(out, in[1], p, thread); - } + } } static void exec(void *data, bNode *node, bNodeStack **in, bNodeStack **out) diff --git a/source/blender/nodes/texture/nodes/node_texture_common.c b/source/blender/nodes/texture/nodes/node_texture_common.c index 1eaf9b2b0fe..41bfd0ae00a 100644 --- a/source/blender/nodes/texture/nodes/node_texture_common.c +++ b/source/blender/nodes/texture/nodes/node_texture_common.c @@ -148,128 +148,3 @@ void register_node_type_tex_group(bNodeTreeType *ttype) nodeRegisterType(ttype, &ntype); } - - -/**** FOR LOOP ****/ - -#if 0 /* XXX loop nodes don't work nicely with current trees */ -static void forloop_execute(void *data, int thread, struct bNode *node, void *nodedata, struct bNodeStack **in, struct bNodeStack **out) -{ - bNodeTreeExec *exec= (bNodeTreeExec*)nodedata; - bNodeThreadStack *nts; - int iterations= (int)in[0]->vec[0]; - bNodeSocket *sock; - bNodeStack *ns; - int iteration; - - /* XXX same behavior as trunk: all nodes inside group are executed. - * it's stupid, but just makes it work. compo redesign will do this better. - */ - { - bNode *inode; - for (inode=exec->nodetree->nodes.first; inode; inode=inode->next) - inode->need_exec = 1; - } - - nts = ntreeGetThreadStack(exec, thread); - - /* "Iteration" socket */ - sock = exec->nodetree->inputs.first; - ns = node_get_socket_stack(nts->stack, sock); - -// group_copy_inputs(node, in, nts->stack); - for (iteration=0; iteration < iterations; ++iteration) { - /* first input contains current iteration counter */ - ns->vec[0] = (float)iteration; - ns->vec[1]=ns->vec[2]=ns->vec[3] = 0.0f; - -// if (iteration > 0) -// loop_init_iteration(exec->nodetree, nts->stack); -// ntreeExecThreadNodes(exec, nts, data, thread); - } -// loop_copy_outputs(node, in, out, exec->stack); - - ntreeReleaseThreadStack(nts); -} - -void register_node_type_tex_forloop(bNodeTreeType *ttype) -{ - static bNodeType ntype; - - node_type_base(ttype, &ntype, NODE_FORLOOP, "For", NODE_CLASS_GROUP, NODE_OPTIONS); - node_type_socket_templates(&ntype, NULL, NULL); - node_type_size(&ntype, 120, 60, 200); - node_type_label(&ntype, node_group_label); - node_type_init(&ntype, node_forloop_init); - node_type_valid(&ntype, node_group_valid); - node_type_template(&ntype, node_forloop_template); - node_type_update(&ntype, NULL, node_group_verify); - node_type_tree(&ntype, node_forloop_init_tree, node_loop_update_tree); - node_type_group_edit(&ntype, node_group_edit_get, node_group_edit_set, node_group_edit_clear); - node_type_exec_new(&ntype, group_initexec, group_freeexec, forloop_execute); - - nodeRegisterType(ttype, &ntype); -} -#endif - -/**** WHILE LOOP ****/ - -#if 0 /* XXX loop nodes don't work nicely with current trees */ -static void whileloop_execute(void *data, int thread, struct bNode *node, void *nodedata, struct bNodeStack **in, struct bNodeStack **out) -{ - bNodeTreeExec *exec= (bNodeTreeExec*)nodedata; - bNodeThreadStack *nts; - int condition= (in[0]->vec[0] > 0.0f); - bNodeSocket *sock; - bNodeStack *ns; - int iteration; - - /* XXX same behavior as trunk: all nodes inside group are executed. - * it's stupid, but just makes it work. compo redesign will do this better. - */ - { - bNode *inode; - for (inode=exec->nodetree->nodes.first; inode; inode=inode->next) - inode->need_exec = 1; - } - - nts = ntreeGetThreadStack(exec, thread); - - /* "Condition" socket */ - sock = exec->nodetree->outputs.first; - ns = node_get_socket_stack(nts->stack, sock); - - iteration = 0; -// group_copy_inputs(node, in, nts->stack); - while (condition && iteration < node->custom1) { -// if (iteration > 0) -// loop_init_iteration(exec->nodetree, nts->stack); -// ntreeExecThreadNodes(exec, nts, data, thread); - - condition = (ns->vec[0] > 0.0f); - ++iteration; - } -// loop_copy_outputs(node, in, out, exec->stack); - - ntreeReleaseThreadStack(nts); -} - -void register_node_type_tex_whileloop(bNodeTreeType *ttype) -{ - static bNodeType ntype; - - node_type_base(ttype, &ntype, NODE_WHILELOOP, "While", NODE_CLASS_GROUP, NODE_OPTIONS); - node_type_socket_templates(&ntype, NULL, NULL); - node_type_size(&ntype, 120, 60, 200); - node_type_label(&ntype, node_group_label); - node_type_init(&ntype, node_whileloop_init); - node_type_valid(&ntype, node_group_valid); - node_type_template(&ntype, node_whileloop_template); - node_type_update(&ntype, NULL, node_group_verify); - node_type_tree(&ntype, node_whileloop_init_tree, node_loop_update_tree); - node_type_group_edit(&ntype, node_group_edit_get, node_group_edit_set, node_group_edit_clear); - node_type_exec_new(&ntype, group_initexec, group_freeexec, whileloop_execute); - - nodeRegisterType(ttype, &ntype); -} -#endif diff --git a/source/blender/nodes/texture/nodes/node_texture_compose.c b/source/blender/nodes/texture/nodes/node_texture_compose.c index 77521190590..25da4f19e52 100644 --- a/source/blender/nodes/texture/nodes/node_texture_compose.c +++ b/source/blender/nodes/texture/nodes/node_texture_compose.c @@ -33,14 +33,14 @@ #include "node_texture_util.h" #include "NOD_texture.h" -static bNodeSocketTemplate inputs[]= { +static bNodeSocketTemplate inputs[] = { { SOCK_FLOAT, 1, N_("Red"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_UNSIGNED }, { SOCK_FLOAT, 1, N_("Green"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_UNSIGNED }, { SOCK_FLOAT, 1, N_("Blue"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_UNSIGNED }, { SOCK_FLOAT, 1, N_("Alpha"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_UNSIGNED }, { -1, 0, "" } }; -static bNodeSocketTemplate outputs[]= { +static bNodeSocketTemplate outputs[] = { { SOCK_RGBA, 0, N_("Color") }, { -1, 0, "" } }; diff --git a/source/blender/nodes/texture/nodes/node_texture_coord.c b/source/blender/nodes/texture/nodes/node_texture_coord.c index 2add5c820eb..971520ebc38 100644 --- a/source/blender/nodes/texture/nodes/node_texture_coord.c +++ b/source/blender/nodes/texture/nodes/node_texture_coord.c @@ -33,7 +33,7 @@ #include "node_texture_util.h" #include "NOD_texture.h" -static bNodeSocketTemplate outputs[]= { +static bNodeSocketTemplate outputs[] = { { SOCK_VECTOR, 0, N_("Coordinates") }, { -1, 0, "" } }; diff --git a/source/blender/nodes/texture/nodes/node_texture_curves.c b/source/blender/nodes/texture/nodes/node_texture_curves.c index 6ccb5e1e83f..5980f938938 100644 --- a/source/blender/nodes/texture/nodes/node_texture_curves.c +++ b/source/blender/nodes/texture/nodes/node_texture_curves.c @@ -36,7 +36,7 @@ /* **************** CURVE Time ******************** */ /* custom1 = sfra, custom2 = efra */ -static bNodeSocketTemplate time_outputs[]= { +static bNodeSocketTemplate time_outputs[] = { { SOCK_FLOAT, 0, N_("Value") }, { -1, 0, "" } }; @@ -83,12 +83,12 @@ void register_node_type_tex_curve_time(bNodeTreeType *ttype) } /* **************** CURVE RGB ******************** */ -static bNodeSocketTemplate rgb_inputs[]= { +static bNodeSocketTemplate rgb_inputs[] = { { SOCK_RGBA, 1, N_("Color"), 0.0f, 0.0f, 0.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate rgb_outputs[]= { +static bNodeSocketTemplate rgb_outputs[] = { { SOCK_RGBA, 0, N_("Color")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/texture/nodes/node_texture_decompose.c b/source/blender/nodes/texture/nodes/node_texture_decompose.c index eae34e2ce47..a2875c31d9e 100644 --- a/source/blender/nodes/texture/nodes/node_texture_decompose.c +++ b/source/blender/nodes/texture/nodes/node_texture_decompose.c @@ -34,11 +34,11 @@ #include "NOD_texture.h" #include <math.h> -static bNodeSocketTemplate inputs[]= { +static bNodeSocketTemplate inputs[] = { { SOCK_RGBA, 1, N_("Color"), 0.0f, 0.0f, 0.0f, 1.0f }, { -1, 0, "" } }; -static bNodeSocketTemplate outputs[]= { +static bNodeSocketTemplate outputs[] = { { SOCK_FLOAT, 0, N_("Red") }, { SOCK_FLOAT, 0, N_("Green") }, { SOCK_FLOAT, 0, N_("Blue") }, diff --git a/source/blender/nodes/texture/nodes/node_texture_distance.c b/source/blender/nodes/texture/nodes/node_texture_distance.c index 29f08a0ded0..8c3b1555d5d 100644 --- a/source/blender/nodes/texture/nodes/node_texture_distance.c +++ b/source/blender/nodes/texture/nodes/node_texture_distance.c @@ -35,13 +35,13 @@ #include "node_texture_util.h" #include "NOD_texture.h" -static bNodeSocketTemplate inputs[]= { +static bNodeSocketTemplate inputs[] = { { SOCK_VECTOR, 1, N_("Coordinate 1"), 0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 1.0f, PROP_NONE }, { SOCK_VECTOR, 1, N_("Coordinate 2"), 0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 1.0f, PROP_NONE }, - { -1, 0, "" } + { -1, 0, "" } }; -static bNodeSocketTemplate outputs[]= { +static bNodeSocketTemplate outputs[] = { { SOCK_FLOAT, 0, N_("Value") }, { -1, 0, "" } }; diff --git a/source/blender/nodes/texture/nodes/node_texture_hueSatVal.c b/source/blender/nodes/texture/nodes/node_texture_hueSatVal.c index 6863eab9150..b5e9969a830 100644 --- a/source/blender/nodes/texture/nodes/node_texture_hueSatVal.c +++ b/source/blender/nodes/texture/nodes/node_texture_hueSatVal.c @@ -34,7 +34,7 @@ #include "NOD_texture.h" -static bNodeSocketTemplate inputs[]= { +static bNodeSocketTemplate inputs[] = { { SOCK_FLOAT, 1, N_("Hue"), 0.0f, 0.0f, 0.0f, 0.0f, -0.5f, 0.5f, PROP_NONE }, { SOCK_FLOAT, 1, N_("Saturation"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f, PROP_FACTOR }, { SOCK_FLOAT, 1, N_("Value"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f, PROP_FACTOR }, @@ -42,7 +42,7 @@ static bNodeSocketTemplate inputs[]= { { SOCK_RGBA, 1, N_("Color"), 0.8f, 0.8f, 0.8f, 1.0f }, { -1, 0, "" } }; -static bNodeSocketTemplate outputs[]= { +static bNodeSocketTemplate outputs[] = { { SOCK_RGBA, 0, N_("Color") }, { -1, 0, "" } }; @@ -56,14 +56,14 @@ static void do_hue_sat_fac(bNode *UNUSED(node), float *out, float hue, float sat hsv[0]+= (hue - 0.5f); if (hsv[0]>1.0f) hsv[0]-=1.0f; else if (hsv[0]<0.0f) hsv[0]+= 1.0f; hsv[1]*= sat; - if (hsv[1]>1.0f) hsv[1]= 1.0f; else if (hsv[1]<0.0f) hsv[1]= 0.0f; + if (hsv[1]>1.0f) hsv[1] = 1.0f; else if (hsv[1]<0.0f) hsv[1] = 0.0f; hsv[2]*= val; - if (hsv[2]>1.0f) hsv[2]= 1.0f; else if (hsv[2]<0.0f) hsv[2]= 0.0f; + if (hsv[2]>1.0f) hsv[2] = 1.0f; else if (hsv[2]<0.0f) hsv[2] = 0.0f; hsv_to_rgb(hsv[0], hsv[1], hsv[2], col, col+1, col+2); - out[0]= mfac*in[0] + fac*col[0]; - out[1]= mfac*in[1] + fac*col[1]; - out[2]= mfac*in[2] + fac*col[2]; + out[0] = mfac*in[0] + fac*col[0]; + out[1] = mfac*in[1] + fac*col[1]; + out[2] = mfac*in[2] + fac*col[2]; } else { copy_v4_v4(out, in); diff --git a/source/blender/nodes/texture/nodes/node_texture_image.c b/source/blender/nodes/texture/nodes/node_texture_image.c index 7ce91c37295..f3fdaf0bb64 100644 --- a/source/blender/nodes/texture/nodes/node_texture_image.c +++ b/source/blender/nodes/texture/nodes/node_texture_image.c @@ -33,7 +33,7 @@ #include "node_texture_util.h" #include "NOD_texture.h" -static bNodeSocketTemplate outputs[]= { +static bNodeSocketTemplate outputs[] = { { SOCK_RGBA, 0, N_("Image")}, { -1, 0, "" } }; diff --git a/source/blender/nodes/texture/nodes/node_texture_invert.c b/source/blender/nodes/texture/nodes/node_texture_invert.c index 0339c3f0cf2..9c2963d2dc2 100644 --- a/source/blender/nodes/texture/nodes/node_texture_invert.c +++ b/source/blender/nodes/texture/nodes/node_texture_invert.c @@ -34,14 +34,14 @@ #include "NOD_texture.h" /* **************** INVERT ******************** */ -static bNodeSocketTemplate inputs[]= { - { SOCK_RGBA, 1, N_("Color"), 0.0f, 0.0f, 0.0f, 1.0f}, - { -1, 0, "" } +static bNodeSocketTemplate inputs[] = { + { SOCK_RGBA, 1, N_("Color"), 0.0f, 0.0f, 0.0f, 1.0f}, + { -1, 0, "" } }; -static bNodeSocketTemplate outputs[]= { - { SOCK_RGBA, 0, N_("Color")}, - { -1, 0, "" } +static bNodeSocketTemplate outputs[] = { + { SOCK_RGBA, 0, N_("Color")}, + { -1, 0, "" } }; static void colorfn(float *out, TexParams *p, bNode *UNUSED(node), bNodeStack **in, short thread) diff --git a/source/blender/nodes/texture/nodes/node_texture_math.c b/source/blender/nodes/texture/nodes/node_texture_math.c index 36e9cac0827..95d70ccc7d6 100644 --- a/source/blender/nodes/texture/nodes/node_texture_math.c +++ b/source/blender/nodes/texture/nodes/node_texture_math.c @@ -35,15 +35,15 @@ /* **************** SCALAR MATH ******************** */ -static bNodeSocketTemplate inputs[]= { - { SOCK_FLOAT, 1, N_("Value"), 0.5f, 0.5f, 0.5f, 1.0f, -100.0f, 100.0f, PROP_NONE}, - { SOCK_FLOAT, 1, N_("Value"), 0.5f, 0.5f, 0.5f, 1.0f, -100.0f, 100.0f, PROP_NONE}, - { -1, 0, "" } +static bNodeSocketTemplate inputs[] = { + { SOCK_FLOAT, 1, N_("Value"), 0.5f, 0.5f, 0.5f, 1.0f, -100.0f, 100.0f, PROP_NONE}, + { SOCK_FLOAT, 1, N_("Value"), 0.5f, 0.5f, 0.5f, 1.0f, -100.0f, 100.0f, PROP_NONE}, + { -1, 0, "" } }; -static bNodeSocketTemplate outputs[]= { - { SOCK_FLOAT, 0, N_("Value")}, - { -1, 0, "" } +static bNodeSocketTemplate outputs[] = { + { SOCK_FLOAT, 0, N_("Value")}, + { -1, 0, "" } }; static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, short thread) @@ -112,7 +112,7 @@ static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor { /* Only raise negative numbers by full integers */ if ( in0 >= 0 ) { - out[0]= pow(in0, in1); + out[0] = pow(in0, in1); } else { float y_mod_1 = fmod(in1, 1); @@ -178,7 +178,7 @@ static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor fprintf(stderr, "%s:%d: unhandeld value in switch statement: %d\n", __FILE__, __LINE__, node->custom1); - } + } } static void exec(void *data, bNode *node, bNodeStack **in, bNodeStack **out) diff --git a/source/blender/nodes/texture/nodes/node_texture_mixRgb.c b/source/blender/nodes/texture/nodes/node_texture_mixRgb.c index bf6cb7a3262..fe04854c734 100644 --- a/source/blender/nodes/texture/nodes/node_texture_mixRgb.c +++ b/source/blender/nodes/texture/nodes/node_texture_mixRgb.c @@ -34,13 +34,13 @@ #include "NOD_texture.h" /* **************** MIX RGB ******************** */ -static bNodeSocketTemplate inputs[]= { +static bNodeSocketTemplate inputs[] = { { SOCK_FLOAT, 1, N_("Factor"), 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR }, { SOCK_RGBA, 1, N_("Color1"), 0.5f, 0.5f, 0.5f, 1.0f }, { SOCK_RGBA, 1, N_("Color2"), 0.5f, 0.5f, 0.5f, 1.0f }, { -1, 0, "" } }; -static bNodeSocketTemplate outputs[]= { +static bNodeSocketTemplate outputs[] = { { SOCK_RGBA, 0, N_("Color") }, { -1, 0, "" } }; diff --git a/source/blender/nodes/texture/nodes/node_texture_output.c b/source/blender/nodes/texture/nodes/node_texture_output.c index ce22bc00a55..2f5efe8c45e 100644 --- a/source/blender/nodes/texture/nodes/node_texture_output.c +++ b/source/blender/nodes/texture/nodes/node_texture_output.c @@ -34,7 +34,7 @@ #include "NOD_texture.h" /* **************** COMPOSITE ******************** */ -static bNodeSocketTemplate inputs[]= { +static bNodeSocketTemplate inputs[] = { { SOCK_RGBA, 1, N_("Color"), 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_VECTOR, 1, N_("Normal"), 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, PROP_DIRECTION}, { -1, 0, "" } @@ -65,7 +65,7 @@ static void exec(void *data, bNode *node, bNodeStack **in, bNodeStack **UNUSED(o tex_input_rgba(&target->tr, in[0], ¶ms, cdata->thread); target->tin = (target->tr + target->tg + target->tb) / 3.0f; - target->talpha = 1; + target->talpha = TRUE; if (target->nor) { if (in[1] && in[1]->hasinput) @@ -170,7 +170,7 @@ void register_node_type_tex_output(bNodeTreeType *ttype) node_type_exec(&ntype, exec); /* Do not allow muting output. */ - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } diff --git a/source/blender/nodes/texture/nodes/node_texture_proc.c b/source/blender/nodes/texture/nodes/node_texture_proc.c index 102f6e1c428..8876d98b9b2 100644 --- a/source/blender/nodes/texture/nodes/node_texture_proc.c +++ b/source/blender/nodes/texture/nodes/node_texture_proc.c @@ -40,12 +40,12 @@ */ -static bNodeSocketTemplate outputs_both[]= { +static bNodeSocketTemplate outputs_both[] = { { SOCK_RGBA, 0, N_("Color"), 1.0f, 0.0f, 0.0f, 1.0f }, { SOCK_VECTOR, 0, N_("Normal"), 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, PROP_DIRECTION }, { -1, 0, "" } }; -static bNodeSocketTemplate outputs_color_only[]= { +static bNodeSocketTemplate outputs_color_only[] = { { SOCK_RGBA, 0, N_("Color") }, { -1, 0, "" } }; @@ -57,7 +57,7 @@ static bNodeSocketTemplate outputs_color_only[]= { { SOCK_RGBA, 1, "Color 2", 1.0f, 1.0f, 1.0f, 1.0f } /* Calls multitex and copies the result to the outputs. Called by xxx_exec, which handles inputs. */ -static void do_proc(float *result, TexParams *p, float *col1, float *col2, char is_normal, Tex *tex, short thread) +static void do_proc(float *result, TexParams *p, const float col1[4], const float col2[4], char is_normal, Tex *tex, const short thread) { TexResult texres; int textype; @@ -69,7 +69,7 @@ static void do_proc(float *result, TexParams *p, float *col1, float *col2, char texres.nor = NULL; textype = multitex_nodes(tex, p->co, p->dxt, p->dyt, p->osatex, - &texres, thread, 0, p->shi, p->mtex); + &texres, thread, 0, p->shi, p->mtex); if (is_normal) return; @@ -83,7 +83,7 @@ static void do_proc(float *result, TexParams *p, float *col1, float *col2, char } } -typedef void (*MapFn) (Tex *tex, bNodeStack **in, TexParams *p, short thread); +typedef void (*MapFn) (Tex *tex, bNodeStack **in, TexParams *p, const short thread); static void texfn( float *result, @@ -138,7 +138,7 @@ static int count_outputs(bNode *node) /* --- VORONOI -- */ -static bNodeSocketTemplate voronoi_inputs[]= { +static bNodeSocketTemplate voronoi_inputs[] = { COMMON_INPUTS, { SOCK_FLOAT, 1, N_("W1"), 1.0f, 0.0f, 0.0f, 0.0f, -2.0f, 2.0f, PROP_NONE }, { SOCK_FLOAT, 1, N_("W2"), 0.0f, 0.0f, 0.0f, 0.0f, -2.0f, 2.0f, PROP_NONE }, @@ -163,7 +163,7 @@ static void voronoi_map_inputs(Tex *tex, bNodeStack **in, TexParams *p, short th ProcDef(voronoi) /* --- BLEND -- */ -static bNodeSocketTemplate blend_inputs[]= { +static bNodeSocketTemplate blend_inputs[] = { COMMON_INPUTS, { -1, 0, "" } }; @@ -171,7 +171,7 @@ ProcNoInputs(blend) ProcDef(blend) /* -- MAGIC -- */ -static bNodeSocketTemplate magic_inputs[]= { +static bNodeSocketTemplate magic_inputs[] = { COMMON_INPUTS, { SOCK_FLOAT, 1, N_("Turbulence"), 5.0f, 0.0f, 0.0f, 0.0f, 0.0f, 200.0f, PROP_UNSIGNED }, { -1, 0, "" } @@ -183,7 +183,7 @@ static void magic_map_inputs(Tex *tex, bNodeStack **in, TexParams *p, short thre ProcDef(magic) /* --- MARBLE --- */ -static bNodeSocketTemplate marble_inputs[]= { +static bNodeSocketTemplate marble_inputs[] = { COMMON_INPUTS, { SOCK_FLOAT, 1, N_("Size"), 0.25f, 0.0f, 0.0f, 0.0f, 0.0001f, 2.0f, PROP_UNSIGNED }, { SOCK_FLOAT, 1, N_("Turbulence"), 5.0f, 0.0f, 0.0f, 0.0f, 0.0f, 200.0f, PROP_UNSIGNED }, @@ -197,7 +197,7 @@ static void marble_map_inputs(Tex *tex, bNodeStack **in, TexParams *p, short thr ProcDef(marble) /* --- CLOUDS --- */ -static bNodeSocketTemplate clouds_inputs[]= { +static bNodeSocketTemplate clouds_inputs[] = { COMMON_INPUTS, { SOCK_FLOAT, 1, N_("Size"), 0.25f, 0.0f, 0.0f, 0.0f, 0.0001f, 2.0f, PROP_UNSIGNED }, { -1, 0, "" } @@ -209,7 +209,7 @@ static void clouds_map_inputs(Tex *tex, bNodeStack **in, TexParams *p, short thr ProcDef(clouds) /* --- DISTORTED NOISE --- */ -static bNodeSocketTemplate distnoise_inputs[]= { +static bNodeSocketTemplate distnoise_inputs[] = { COMMON_INPUTS, { SOCK_FLOAT, 1, N_("Size"), 0.25f, 0.0f, 0.0f, 0.0f, 0.0001f, 2.0f, PROP_UNSIGNED }, { SOCK_FLOAT, 1, N_("Distortion"), 1.00f, 0.0f, 0.0f, 0.0f, 0.0000f, 10.0f, PROP_UNSIGNED }, @@ -223,7 +223,7 @@ static void distnoise_map_inputs(Tex *tex, bNodeStack **in, TexParams *p, short ProcDef(distnoise) /* --- WOOD --- */ -static bNodeSocketTemplate wood_inputs[]= { +static bNodeSocketTemplate wood_inputs[] = { COMMON_INPUTS, { SOCK_FLOAT, 1, N_("Size"), 0.25f, 0.0f, 0.0f, 0.0f, 0.0001f, 2.0f, PROP_UNSIGNED }, { SOCK_FLOAT, 1, N_("Turbulence"), 5.0f, 0.0f, 0.0f, 0.0f, 0.0f, 200.0f, PROP_UNSIGNED }, @@ -237,7 +237,7 @@ static void wood_map_inputs(Tex *tex, bNodeStack **in, TexParams *p, short threa ProcDef(wood) /* --- MUSGRAVE --- */ -static bNodeSocketTemplate musgrave_inputs[]= { +static bNodeSocketTemplate musgrave_inputs[] = { COMMON_INPUTS, { SOCK_FLOAT, 1, N_("H"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0001f, 2.0f, PROP_UNSIGNED }, { SOCK_FLOAT, 1, N_("Lacunarity"), 2.0f, 0.0f, 0.0f, 0.0f, 0.0f, 6.0f, PROP_UNSIGNED }, @@ -258,7 +258,7 @@ static void musgrave_map_inputs(Tex *tex, bNodeStack **in, TexParams *p, short t ProcDef(musgrave) /* --- NOISE --- */ -static bNodeSocketTemplate noise_inputs[]= { +static bNodeSocketTemplate noise_inputs[] = { COMMON_INPUTS, { -1, 0, "" } }; @@ -266,7 +266,7 @@ ProcNoInputs(noise) ProcDef(noise) /* --- STUCCI --- */ -static bNodeSocketTemplate stucci_inputs[]= { +static bNodeSocketTemplate stucci_inputs[] = { COMMON_INPUTS, { SOCK_FLOAT, 1, N_("Size"), 0.25f, 0.0f, 0.0f, 0.0f, 0.0001f, 2.0f, PROP_UNSIGNED }, { SOCK_FLOAT, 1, N_("Turbulence"), 5.0f, 0.0f, 0.0f, 0.0f, 0.0f, 200.0f, PROP_UNSIGNED }, diff --git a/source/blender/nodes/texture/nodes/node_texture_rotate.c b/source/blender/nodes/texture/nodes/node_texture_rotate.c index a7832c8c180..1b1d57044a3 100644 --- a/source/blender/nodes/texture/nodes/node_texture_rotate.c +++ b/source/blender/nodes/texture/nodes/node_texture_rotate.c @@ -35,19 +35,19 @@ #include "node_texture_util.h" #include "NOD_texture.h" -static bNodeSocketTemplate inputs[]= { +static bNodeSocketTemplate inputs[] = { { SOCK_RGBA, 1, N_("Color"), 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, N_("Turns"), 0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 1.0f, PROP_NONE }, { SOCK_VECTOR, 1, N_("Axis"), 0.0f, 0.0f, 1.0f, 0.0f, -1.0f, 1.0f, PROP_DIRECTION }, - { -1, 0, "" } + { -1, 0, "" } }; -static bNodeSocketTemplate outputs[]= { - { SOCK_RGBA, 0, N_("Color")}, - { -1, 0, "" } +static bNodeSocketTemplate outputs[] = { + { SOCK_RGBA, 0, N_("Color")}, + { -1, 0, "" } }; -static void rotate(float new_co[3], float a, float ax[3], float co[3]) +static void rotate(float new_co[3], float a, float ax[3], const float co[3]) { float para[3]; float perp[3]; diff --git a/source/blender/nodes/texture/nodes/node_texture_scale.c b/source/blender/nodes/texture/nodes/node_texture_scale.c index 130a21ba84d..56562724fb9 100644 --- a/source/blender/nodes/texture/nodes/node_texture_scale.c +++ b/source/blender/nodes/texture/nodes/node_texture_scale.c @@ -33,15 +33,15 @@ #include <math.h> #include "node_texture_util.h" -static bNodeSocketTemplate inputs[]= { +static bNodeSocketTemplate inputs[] = { { SOCK_RGBA, 1, N_("Color"), 0.0f, 0.0f, 0.0f, 1.0f }, { SOCK_VECTOR, 1, N_("Scale"), 1.0f, 1.0f, 1.0f, 0.0f, -10.0f, 10.0f, PROP_XYZ }, - { -1, 0, "" } + { -1, 0, "" } }; -static bNodeSocketTemplate outputs[]= { - { SOCK_RGBA, 0, N_("Color")}, - { -1, 0, "" } +static bNodeSocketTemplate outputs[] = { + { SOCK_RGBA, 0, N_("Color")}, + { -1, 0, "" } }; static void colorfn(float *out, TexParams *p, bNode *UNUSED(node), bNodeStack **in, short thread) diff --git a/source/blender/nodes/texture/nodes/node_texture_texture.c b/source/blender/nodes/texture/nodes/node_texture_texture.c index 4832f19f2c7..cc7367a7632 100644 --- a/source/blender/nodes/texture/nodes/node_texture_texture.c +++ b/source/blender/nodes/texture/nodes/node_texture_texture.c @@ -35,13 +35,13 @@ #include "RE_shader_ext.h" -static bNodeSocketTemplate inputs[]= { +static bNodeSocketTemplate inputs[] = { { SOCK_RGBA, 1, N_("Color1"), 1.0f, 1.0f, 1.0f, 1.0f }, { SOCK_RGBA, 1, N_("Color2"), 0.0f, 0.0f, 0.0f, 1.0f }, { -1, 0, "" } }; -static bNodeSocketTemplate outputs[]= { +static bNodeSocketTemplate outputs[] = { { SOCK_RGBA, 0, N_("Color") }, { -1, 0, "" } }; diff --git a/source/blender/nodes/texture/nodes/node_texture_translate.c b/source/blender/nodes/texture/nodes/node_texture_translate.c index 85f857ca2be..a95cb00a47d 100644 --- a/source/blender/nodes/texture/nodes/node_texture_translate.c +++ b/source/blender/nodes/texture/nodes/node_texture_translate.c @@ -34,15 +34,15 @@ #include "node_texture_util.h" #include "NOD_texture.h" -static bNodeSocketTemplate inputs[]= { +static bNodeSocketTemplate inputs[] = { { SOCK_RGBA, 1, N_("Color"), 0.0f, 0.0f, 0.0f, 1.0f}, { SOCK_VECTOR, 1, N_("Offset"), 0.0f, 0.0f, 0.0f, 0.0f, -10000.0f, 10000.0f, PROP_TRANSLATION }, - { -1, 0, "" } + { -1, 0, "" } }; -static bNodeSocketTemplate outputs[]= { - { SOCK_RGBA, 0, N_("Color")}, - { -1, 0, "" } +static bNodeSocketTemplate outputs[] = { + { SOCK_RGBA, 0, N_("Color")}, + { -1, 0, "" } }; static void colorfn(float *out, TexParams *p, bNode *UNUSED(node), bNodeStack **in, short thread) diff --git a/source/blender/nodes/texture/nodes/node_texture_valToNor.c b/source/blender/nodes/texture/nodes/node_texture_valToNor.c index 2d107b87578..bbfc1fa616b 100644 --- a/source/blender/nodes/texture/nodes/node_texture_valToNor.c +++ b/source/blender/nodes/texture/nodes/node_texture_valToNor.c @@ -33,23 +33,23 @@ #include "node_texture_util.h" #include "NOD_texture.h" -static bNodeSocketTemplate inputs[]= { +static bNodeSocketTemplate inputs[] = { { SOCK_FLOAT, 1, N_("Val"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, PROP_NONE }, { SOCK_FLOAT, 1, N_("Nabla"), 0.025f, 0.0f, 0.0f, 0.0f, 0.001f, 0.1f, PROP_UNSIGNED }, - { -1, 0, "" } + { -1, 0, "" } }; -static bNodeSocketTemplate outputs[]= { - { SOCK_VECTOR, 0, N_("Normal") }, - { -1, 0, "" } +static bNodeSocketTemplate outputs[] = { + { SOCK_VECTOR, 0, N_("Normal") }, + { -1, 0, "" } }; static void normalfn(float *out, TexParams *p, bNode *UNUSED(node), bNodeStack **in, short thread) { float new_co[3]; - float *co = p->co; + const float *co = p->co; - float nabla = tex_input_value(in[1], p, thread); + float nabla = tex_input_value(in[1], p, thread); float val; float nor[3]; diff --git a/source/blender/nodes/texture/nodes/node_texture_valToRgb.c b/source/blender/nodes/texture/nodes/node_texture_valToRgb.c index 515613509f6..78635453fc1 100644 --- a/source/blender/nodes/texture/nodes/node_texture_valToRgb.c +++ b/source/blender/nodes/texture/nodes/node_texture_valToRgb.c @@ -34,11 +34,11 @@ #include "NOD_texture.h" /* **************** VALTORGB ******************** */ -static bNodeSocketTemplate valtorgb_in[]= { +static bNodeSocketTemplate valtorgb_in[] = { { SOCK_FLOAT, 1, N_("Fac"), 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR}, { -1, 0, "" } }; -static bNodeSocketTemplate valtorgb_out[]= { +static bNodeSocketTemplate valtorgb_out[] = { { SOCK_RGBA, 0, N_("Color")}, { -1, 0, "" } }; @@ -77,11 +77,11 @@ void register_node_type_tex_valtorgb(bNodeTreeType *ttype) } /* **************** RGBTOBW ******************** */ -static bNodeSocketTemplate rgbtobw_in[]= { +static bNodeSocketTemplate rgbtobw_in[] = { { SOCK_RGBA, 1, N_("Color"), 0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate rgbtobw_out[]= { +static bNodeSocketTemplate rgbtobw_out[] = { { SOCK_FLOAT, 0, N_("Val"), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, { -1, 0, "" } }; diff --git a/source/blender/nodes/texture/nodes/node_texture_viewer.c b/source/blender/nodes/texture/nodes/node_texture_viewer.c index bc31bef59d8..5cb8d8c438c 100644 --- a/source/blender/nodes/texture/nodes/node_texture_viewer.c +++ b/source/blender/nodes/texture/nodes/node_texture_viewer.c @@ -66,7 +66,7 @@ void register_node_type_tex_viewer(bNodeTreeType *ttype) node_type_exec(&ntype, exec); /* Do not allow muting viewer node. */ - node_type_internal_connect(&ntype, NULL); + node_type_internal_links(&ntype, NULL); nodeRegisterType(ttype, &ntype); } |