diff options
Diffstat (limited to 'source/blender/makesrna/intern/rna_nodetree.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_nodetree.c | 278 |
1 files changed, 156 insertions, 122 deletions
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index b28403bf28c..ba238402450 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -99,45 +99,94 @@ static const EnumPropertyItem node_chunksize_items[] = { }; #endif +const EnumPropertyItem rna_enum_mapping_type_items[] = { + {NODE_MAPPING_TYPE_POINT, "POINT", 0, "Point", "Transform a point"}, + {NODE_MAPPING_TYPE_TEXTURE, + "TEXTURE", + 0, + "Texture", + "Transform a texture by inverse mapping the texture coordinate"}, + {NODE_MAPPING_TYPE_VECTOR, + "VECTOR", + 0, + "Vector", + "Transform a direction vector. Location is ignored"}, + {NODE_MAPPING_TYPE_NORMAL, + "NORMAL", + 0, + "Normal", + "Transform a unit normal vector. Location is ignored"}, + {0, NULL, 0, NULL, NULL}, +}; + const EnumPropertyItem rna_enum_node_math_items[] = { - {NODE_MATH_ADD, "ADD", 0, "Add", ""}, - {NODE_MATH_SUB, "SUBTRACT", 0, "Subtract", ""}, - {NODE_MATH_MUL, "MULTIPLY", 0, "Multiply", ""}, - {NODE_MATH_DIVIDE, "DIVIDE", 0, "Divide", ""}, + {NODE_MATH_ADD, "ADD", 0, "Add", "A + B"}, + {NODE_MATH_SUBTRACT, "SUBTRACT", 0, "Subtract", "A - B"}, + {NODE_MATH_MULTIPLY, "MULTIPLY", 0, "Multiply", "A * B"}, + {NODE_MATH_DIVIDE, "DIVIDE", 0, "Divide", "A / B"}, {0, "", ICON_NONE, NULL, NULL}, - {NODE_MATH_POW, "POWER", 0, "Power", ""}, - {NODE_MATH_LOG, "LOGARITHM", 0, "Logarithm", ""}, - {NODE_MATH_SQRT, "SQRT", 0, "Square Root", ""}, - {NODE_MATH_ABS, "ABSOLUTE", 0, "Absolute", ""}, + {NODE_MATH_POWER, "POWER", 0, "Power", "A ^ B"}, + {NODE_MATH_LOGARITHM, "LOGARITHM", 0, "Logarithm", "log(A) base B"}, + {NODE_MATH_SQRT, "SQRT", 0, "Square Root", "sqrt(A)"}, + {NODE_MATH_ABSOLUTE, "ABSOLUTE", 0, "Absolute", "abs(A)"}, {0, "", ICON_NONE, NULL, NULL}, - {NODE_MATH_MIN, "MINIMUM", 0, "Minimum", ""}, - {NODE_MATH_MAX, "MAXIMUM", 0, "Maximum", ""}, - {NODE_MATH_LESS, "LESS_THAN", 0, "Less Than", ""}, - {NODE_MATH_GREATER, "GREATER_THAN", 0, "Greater Than", ""}, + {NODE_MATH_MINIMUM, "MINIMUM", 0, "Minimum", "min(A, B)"}, + {NODE_MATH_MAXIMUM, "MAXIMUM", 0, "Maximum", "max(A, B)"}, + {NODE_MATH_LESS_THAN, "LESS_THAN", 0, "Less Than", "1 if A < B else 0"}, + {NODE_MATH_GREATER_THAN, "GREATER_THAN", 0, "Greater Than", "1 if A > B else 0"}, {0, "", ICON_NONE, NULL, NULL}, - {NODE_MATH_ROUND, "ROUND", 0, "Round", ""}, - {NODE_MATH_FLOOR, "FLOOR", 0, "Floor", ""}, - {NODE_MATH_CEIL, "CEIL", 0, "Ceil", ""}, - {NODE_MATH_FRACT, "FRACT", 0, "Fract", ""}, - {NODE_MATH_MOD, "MODULO", 0, "Modulo", ""}, + {NODE_MATH_ROUND, + "ROUND", + 0, + "Round", + "Round A to the nearest integer. Round upward if the fraction part is 0.5"}, + {NODE_MATH_FLOOR, "FLOOR", 0, "Floor", "floor(A)"}, + {NODE_MATH_CEIL, "CEIL", 0, "Ceil", "ceil(A)"}, + {NODE_MATH_FRACTION, "FRACT", 0, "Fraction", "The fraction part of A"}, + {NODE_MATH_MODULO, "MODULO", 0, "Modulo", "A mod B"}, {0, "", ICON_NONE, NULL, NULL}, - {NODE_MATH_SIN, "SINE", 0, "Sine", ""}, - {NODE_MATH_COS, "COSINE", 0, "Cosine", ""}, - {NODE_MATH_TAN, "TANGENT", 0, "Tangent", ""}, - {NODE_MATH_ASIN, "ARCSINE", 0, "Arcsine", ""}, - {NODE_MATH_ACOS, "ARCCOSINE", 0, "Arccosine", ""}, - {NODE_MATH_ATAN, "ARCTANGENT", 0, "Arctangent", ""}, - {NODE_MATH_ATAN2, "ARCTAN2", 0, "Arctan2", ""}, + {NODE_MATH_SINE, "SINE", 0, "Sine", "sin(A)"}, + {NODE_MATH_COSINE, "COSINE", 0, "Cosine", "cos(A)"}, + {NODE_MATH_TANGENT, "TANGENT", 0, "Tangent", "tan(A)"}, + {NODE_MATH_ARCSINE, "ARCSINE", 0, "Arcsine", "arcsin(A)"}, + {NODE_MATH_ARCCOSINE, "ARCCOSINE", 0, "Arccosine", "arccos(A)"}, + {NODE_MATH_ARCTANGENT, "ARCTANGENT", 0, "Arctangent", "arctan(A)"}, + {NODE_MATH_ARCTAN2, "ARCTAN2", 0, "Arctan2", "arctan2(A, B)"}, {0, NULL, 0, NULL, NULL}, }; const EnumPropertyItem rna_enum_node_vec_math_items[] = { - {0, "ADD", 0, "Add", ""}, - {1, "SUBTRACT", 0, "Subtract", ""}, - {2, "AVERAGE", 0, "Average", ""}, - {3, "DOT_PRODUCT", 0, "Dot Product", ""}, - {4, "CROSS_PRODUCT", 0, "Cross Product", ""}, - {5, "NORMALIZE", 0, "Normalize", ""}, + {NODE_VECTOR_MATH_ADD, "ADD", 0, "Add", "A + B"}, + {NODE_VECTOR_MATH_SUBTRACT, "SUBTRACT", 0, "Subtract", "A - B"}, + {NODE_VECTOR_MATH_MULTIPLY, "MULTIPLY", 0, "Multiply", "Entrywise multiply."}, + {NODE_VECTOR_MATH_DIVIDE, "DIVIDE", 0, "Divide", "Entrywise divide"}, + {0, "", ICON_NONE, NULL, NULL}, + {NODE_VECTOR_MATH_CROSS_PRODUCT, "CROSS_PRODUCT", 0, "Cross Product", "A x B"}, + {NODE_VECTOR_MATH_PROJECT, "PROJECT", 0, "Project", "Project A onto B"}, + {NODE_VECTOR_MATH_REFLECT, "REFLECT", 0, "Reflect", "Reflect A around the normal B"}, + {NODE_VECTOR_MATH_DOT_PRODUCT, "DOT_PRODUCT", 0, "Dot Product", "A . B"}, + {0, "", ICON_NONE, NULL, NULL}, + {NODE_VECTOR_MATH_DISTANCE, "DISTANCE", 0, "Distance", "Distance between A and B"}, + {NODE_VECTOR_MATH_LENGTH, "LENGTH", 0, "Length", "Length of A"}, + {NODE_VECTOR_MATH_SCALE, "SCALE", 0, "Scale", "Multiply A by Scale"}, + {NODE_VECTOR_MATH_NORMALIZE, "NORMALIZE", 0, "Normalize", "Normalize A"}, + {0, "", ICON_NONE, NULL, NULL}, + {NODE_VECTOR_MATH_SNAP, "SNAP", 0, "Snap", "Round A to the nearest integer multiple of B"}, + {NODE_VECTOR_MATH_FLOOR, "FLOOR", 0, "Floor", "Entrywise floor"}, + {NODE_VECTOR_MATH_CEIL, "CEIL", 0, "Ceil", "Entrywise ceil"}, + {NODE_VECTOR_MATH_MODULO, "MODULO", 0, "Modulo", "Entrywise modulo"}, + {NODE_VECTOR_MATH_FRACTION, "FRACTION", 0, "Fraction", "The fraction part of A entrywise"}, + {NODE_VECTOR_MATH_ABSOLUTE, "ABSOLUTE", 0, "Absolute", "Entrywise absolute"}, + {NODE_VECTOR_MATH_MINIMUM, "MINIMUM", 0, "Minimum", "Entrywise minimum"}, + {NODE_VECTOR_MATH_MAXIMUM, "MAXIMUM", 0, "Maximum", "Entrywise maximum"}, + {0, NULL, 0, NULL, NULL}, +}; + +const EnumPropertyItem rna_enum_node_tex_dimensions_items[] = { + {1, "1D", 0, "1D", ""}, + {2, "2D", 0, "2D", ""}, + {3, "3D", 0, "3D", ""}, + {4, "4D", 0, "4D", ""}, {0, NULL, 0, NULL, NULL}, }; @@ -3173,13 +3222,6 @@ static void rna_Image_Node_update_id(Main *UNUSED(bmain), Scene *UNUSED(scene), nodeUpdate(ntree, node); /* to update image node sockets */ } -static void rna_Mapping_Node_update(Main *bmain, Scene *scene, PointerRNA *ptr) -{ - bNode *node = ptr->data; - BKE_texture_mapping_init(node->storage); - rna_Node_update(bmain, scene, ptr); -} - static void rna_NodeOutputFile_slots_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) { bNode *node = ptr->data; @@ -3842,12 +3884,7 @@ static void def_math(StructRNA *srna) RNA_def_property_enum_sdna(prop, NULL, "custom1"); RNA_def_property_enum_items(prop, rna_enum_node_math_items); RNA_def_property_ui_text(prop, "Operation", ""); - RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update"); - - prop = RNA_def_property(srna, "use_clamp", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "custom2", SHD_MATH_CLAMP); - RNA_def_property_ui_text(prop, "Clamp", "Clamp result of the node to 0..1 range"); - RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update"); + RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_ShaderNode_socket_update"); } static void def_vector_math(StructRNA *srna) @@ -3858,7 +3895,7 @@ static void def_vector_math(StructRNA *srna) RNA_def_property_enum_sdna(prop, NULL, "custom1"); RNA_def_property_enum_items(prop, rna_enum_node_vec_math_items); RNA_def_property_ui_text(prop, "Operation", ""); - RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update"); + RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_ShaderNode_socket_update"); } static void def_rgb_curve(StructRNA *srna) @@ -3982,68 +4019,13 @@ static void def_sh_output_linestyle(StructRNA *srna) static void def_sh_mapping(StructRNA *srna) { - static const EnumPropertyItem prop_vect_type_items[] = { - {TEXMAP_TYPE_TEXTURE, - "TEXTURE", - 0, - "Texture", - "Transform a texture by inverse mapping the texture coordinate"}, - {TEXMAP_TYPE_POINT, "POINT", 0, "Point", "Transform a point"}, - {TEXMAP_TYPE_VECTOR, "VECTOR", 0, "Vector", "Transform a direction vector"}, - {TEXMAP_TYPE_NORMAL, "NORMAL", 0, "Normal", "Transform a normal vector with unit length"}, - {0, NULL, 0, NULL, NULL}, - }; - - static float default_1[3] = {1.f, 1.f, 1.f}; - PropertyRNA *prop; - RNA_def_struct_sdna_from(srna, "TexMapping", "storage"); - prop = RNA_def_property(srna, "vector_type", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "type"); - RNA_def_property_enum_items(prop, prop_vect_type_items); + RNA_def_property_enum_sdna(prop, NULL, "custom1"); + RNA_def_property_enum_items(prop, rna_enum_mapping_type_items); RNA_def_property_ui_text(prop, "Type", "Type of vector that the mapping transforms"); - RNA_def_property_update(prop, 0, "rna_Mapping_Node_update"); - - prop = RNA_def_property(srna, "translation", PROP_FLOAT, PROP_TRANSLATION); - RNA_def_property_float_sdna(prop, NULL, "loc"); - RNA_def_property_ui_text(prop, "Location", ""); - RNA_def_property_update(prop, 0, "rna_Mapping_Node_update"); - - /* Not PROP_XYZ, this is now in radians, no more degrees */ - prop = RNA_def_property(srna, "rotation", PROP_FLOAT, PROP_EULER); - RNA_def_property_float_sdna(prop, NULL, "rot"); - RNA_def_property_ui_text(prop, "Rotation", ""); - RNA_def_property_update(prop, 0, "rna_Mapping_Node_update"); - - prop = RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ); - RNA_def_property_float_sdna(prop, NULL, "size"); - RNA_def_property_float_array_default(prop, default_1); - RNA_def_property_flag(prop, PROP_PROPORTIONAL); - RNA_def_property_ui_text(prop, "Scale", ""); - RNA_def_property_update(prop, 0, "rna_Mapping_Node_update"); - - prop = RNA_def_property(srna, "min", PROP_FLOAT, PROP_XYZ); - RNA_def_property_float_sdna(prop, NULL, "min"); - RNA_def_property_ui_text(prop, "Minimum", "Minimum value for clipping"); - RNA_def_property_update(prop, 0, "rna_Mapping_Node_update"); - - prop = RNA_def_property(srna, "max", PROP_FLOAT, PROP_XYZ); - RNA_def_property_float_sdna(prop, NULL, "max"); - RNA_def_property_float_array_default(prop, default_1); - RNA_def_property_ui_text(prop, "Maximum", "Maximum value for clipping"); - RNA_def_property_update(prop, 0, "rna_Mapping_Node_update"); - - prop = RNA_def_property(srna, "use_min", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MIN); - RNA_def_property_ui_text(prop, "Has Minimum", "Whether to use minimum clipping value"); - RNA_def_property_update(prop, 0, "rna_Mapping_Node_update"); - - prop = RNA_def_property(srna, "use_max", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MAX); - RNA_def_property_ui_text(prop, "Has Maximum", "Whether to use maximum clipping value"); - RNA_def_property_update(prop, 0, "rna_Mapping_Node_update"); + RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_ShaderNode_socket_update"); } static void def_sh_attribute(StructRNA *srna) @@ -4292,8 +4274,16 @@ static void def_sh_tex_gradient(StructRNA *srna) static void def_sh_tex_noise(StructRNA *srna) { + PropertyRNA *prop; + RNA_def_struct_sdna_from(srna, "NodeTexNoise", "storage"); def_sh_tex(srna); + + prop = RNA_def_property(srna, "dimensions", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "dimensions"); + RNA_def_property_enum_items(prop, rna_enum_node_tex_dimensions_items); + RNA_def_property_ui_text(prop, "Dimensions", ""); + RNA_def_property_update(prop, 0, "rna_ShaderNode_socket_update"); } static void def_sh_tex_checker(StructRNA *srna) @@ -4368,34 +4358,54 @@ static void def_sh_tex_musgrave(StructRNA *srna) RNA_def_struct_sdna_from(srna, "NodeTexMusgrave", "storage"); def_sh_tex(srna); + prop = RNA_def_property(srna, "dimensions", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "dimensions"); + RNA_def_property_enum_items(prop, rna_enum_node_tex_dimensions_items); + RNA_def_property_ui_text(prop, "Dimensions", ""); + RNA_def_property_update(prop, 0, "rna_ShaderNode_socket_update"); + prop = RNA_def_property(srna, "musgrave_type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "musgrave_type"); RNA_def_property_enum_items(prop, prop_musgrave_type); RNA_def_property_ui_text(prop, "Type", ""); - RNA_def_property_update(prop, 0, "rna_Node_update"); + RNA_def_property_update(prop, 0, "rna_ShaderNode_socket_update"); } static void def_sh_tex_voronoi(StructRNA *srna) { - static const EnumPropertyItem prop_coloring_items[] = { - {SHD_VORONOI_INTENSITY, "INTENSITY", 0, "Intensity", "Only calculate intensity"}, - {SHD_VORONOI_CELLS, "CELLS", 0, "Cells", "Color cells by position"}, - {0, NULL, 0, NULL, NULL}, - }; - static EnumPropertyItem prop_distance_items[] = { - {SHD_VORONOI_DISTANCE, "DISTANCE", 0, "Distance", "Distance"}, - {SHD_VORONOI_MANHATTAN, "MANHATTAN", 0, "Manhattan", "Manhattan (city block) distance"}, + {SHD_VORONOI_EUCLIDEAN, "EUCLIDEAN", 0, "Euclidean", "Euclidean distance"}, + {SHD_VORONOI_MANHATTAN, "MANHATTAN", 0, "Manhattan", "Manhattan distance"}, {SHD_VORONOI_CHEBYCHEV, "CHEBYCHEV", 0, "Chebychev", "Chebychev distance"}, {SHD_VORONOI_MINKOWSKI, "MINKOWSKI", 0, "Minkowski", "Minkowski distance"}, {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem prop_feature_items[] = { - {SHD_VORONOI_F1, "F1", 0, "Closest", "Closest point"}, - {SHD_VORONOI_F2, "F2", 0, "2nd Closest", "2nd closest point"}, - {SHD_VORONOI_F3, "F3", 0, "3rd Closest", "3rd closest point"}, - {SHD_VORONOI_F4, "F4", 0, "4th Closest", "4th closest point"}, - {SHD_VORONOI_F2F1, "F2F1", 0, "Crackle", "Difference between 2nd and 1st closest point"}, + {SHD_VORONOI_F1, + "F1", + 0, + "F1", + "Computes the distance to the closest point as well as its position and color"}, + {SHD_VORONOI_SMOOTH_F1, + "SMOOTH_F1", + 0, + "Smooth F1", + "Smoothed version of F1. Weighted sum of neighbour voronoi cells"}, + {SHD_VORONOI_F2, + "F2", + 0, + "F2", + "Computes the distance to the second closest point as well as its position and color"}, + {SHD_VORONOI_DISTANCE_TO_EDGE, + "DISTANCE_TO_EDGE", + 0, + "Distance To Edge", + "Computes the distance to the edge of the vornoi cell"}, + {SHD_VORONOI_N_SPHERE_RADIUS, + "N_SPHERE_RADIUS", + 0, + "N-Sphere Radius", + "Computes the radius of the n-sphere inscribed in the voronoi cell"}, {0, NULL, 0, NULL, NULL}}; PropertyRNA *prop; @@ -4403,11 +4413,11 @@ static void def_sh_tex_voronoi(StructRNA *srna) RNA_def_struct_sdna_from(srna, "NodeTexVoronoi", "storage"); def_sh_tex(srna); - prop = RNA_def_property(srna, "coloring", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "coloring"); - RNA_def_property_enum_items(prop, prop_coloring_items); - RNA_def_property_ui_text(prop, "Coloring", ""); - RNA_def_property_update(prop, 0, "rna_Node_update"); + prop = RNA_def_property(srna, "dimensions", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "dimensions"); + RNA_def_property_enum_items(prop, rna_enum_node_tex_dimensions_items); + RNA_def_property_ui_text(prop, "Dimensions", ""); + RNA_def_property_update(prop, 0, "rna_ShaderNode_socket_update"); prop = RNA_def_property(srna, "distance", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "distance"); @@ -4419,7 +4429,7 @@ static void def_sh_tex_voronoi(StructRNA *srna) RNA_def_property_enum_sdna(prop, NULL, "feature"); RNA_def_property_enum_items(prop, prop_feature_items); RNA_def_property_ui_text(prop, "Feature Output", ""); - RNA_def_property_update(prop, 0, "rna_Node_update"); + RNA_def_property_update(prop, 0, "rna_ShaderNode_socket_update"); } static void def_sh_tex_wave(StructRNA *srna) @@ -4454,6 +4464,17 @@ static void def_sh_tex_wave(StructRNA *srna) RNA_def_property_update(prop, 0, "rna_Node_update"); } +static void def_sh_tex_white_noise(StructRNA *srna) +{ + PropertyRNA *prop; + + prop = RNA_def_property(srna, "dimensions", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "custom1"); + RNA_def_property_enum_items(prop, rna_enum_node_tex_dimensions_items); + RNA_def_property_ui_text(prop, "Dimensions", ""); + RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_ShaderNode_socket_update"); +} + static void def_sh_tex_coord(StructRNA *srna) { PropertyRNA *prop; @@ -4812,6 +4833,19 @@ static void def_sh_uvmap(StructRNA *srna) RNA_def_struct_sdna_from(srna, "bNode", NULL); } +static void def_sh_vertex_color(StructRNA *srna) +{ + PropertyRNA *prop; + + RNA_def_struct_sdna_from(srna, "NodeShaderVertexColor", "storage"); + + prop = RNA_def_property(srna, "layer_name", PROP_STRING, PROP_NONE); + RNA_def_property_ui_text(prop, "Vertex Color", "Vertex Color"); + RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update"); + + RNA_def_struct_sdna_from(srna, "bNode", NULL); +} + static void def_sh_uvalongstroke(StructRNA *srna) { PropertyRNA *prop; |