Blender V4.5
blender::nodes Namespace Reference

Namespaces

namespace  anonymous_attribute_lifetime
 
namespace  decl
 
namespace  derived_node_tree_types
 
namespace  enums
 
namespace  geo_eval_log
 
namespace  gizmos
 
namespace  implicit_field_inputs
 
namespace  inverse_eval
 
namespace  materialx
 
namespace  node_composite_alpha_over_cc
 
namespace  node_composite_antialiasing_cc
 
namespace  node_composite_base_cryptomatte_cc
 
namespace  node_composite_bilateralblur_cc
 
namespace  node_composite_blur_cc
 
namespace  node_composite_bokehblur_cc
 
namespace  node_composite_bokehimage_cc
 
namespace  node_composite_boxmask_cc
 
namespace  node_composite_brightness_cc
 
namespace  node_composite_channel_matte_cc
 
namespace  node_composite_chroma_matte_cc
 
namespace  node_composite_color_matte_cc
 
namespace  node_composite_color_ramp_cc
 
namespace  node_composite_color_spill_cc
 
namespace  node_composite_colorbalance_cc
 
namespace  node_composite_colorcorrection_cc
 
namespace  node_composite_combine_color_cc
 
namespace  node_composite_combine_hsva_cc
 
namespace  node_composite_combine_rgba_cc
 
namespace  node_composite_combine_xyz_cc
 
namespace  node_composite_combine_ycca_cc
 
namespace  node_composite_combine_yuva_cc
 
namespace  node_composite_composite_cc
 
namespace  node_composite_convert_color_space_cc
 
namespace  node_composite_cornerpin_cc
 
namespace  node_composite_crop_cc
 
namespace  node_composite_cryptomatte_cc
 
namespace  node_composite_defocus_cc
 
namespace  node_composite_denoise_cc
 
namespace  node_composite_despeckle_cc
 
namespace  node_composite_diff_matte_cc
 
namespace  node_composite_dilate_cc
 
namespace  node_composite_directionalblur_cc
 
namespace  node_composite_displace_cc
 
namespace  node_composite_distance_matte_cc
 
namespace  node_composite_double_edge_mask_cc
 
namespace  node_composite_ellipsemask_cc
 
namespace  node_composite_exposure_cc
 
namespace  node_composite_file_output_cc
 
namespace  node_composite_filter_cc
 
namespace  node_composite_flip_cc
 
namespace  node_composite_gamma_cc
 
namespace  node_composite_glare_cc
 
namespace  node_composite_group_input_cc
 
namespace  node_composite_hue_sat_val_cc
 
namespace  node_composite_huecorrect_cc
 
namespace  node_composite_id_mask_cc
 
namespace  node_composite_image_cc
 
namespace  node_composite_image_coordinates_cc
 
namespace  node_composite_image_info_cc
 
namespace  node_composite_inpaint_cc
 
namespace  node_composite_invert_cc
 
namespace  node_composite_keying_cc
 
namespace  node_composite_keyingscreen_cc
 
namespace  node_composite_kuwahara_cc
 
namespace  node_composite_legacy_cryptomatte_cc
 
namespace  node_composite_lensdist_cc
 
namespace  node_composite_levels_cc
 
namespace  node_composite_luma_matte_cc
 
namespace  node_composite_map_range_cc
 
namespace  node_composite_map_uv_cc
 
namespace  node_composite_map_value_cc
 
namespace  node_composite_mask_cc
 
namespace  node_composite_math_cc
 
namespace  node_composite_mixrgb_cc
 
namespace  node_composite_movieclip_cc
 
namespace  node_composite_moviedistortion_cc
 
namespace  node_composite_normal_cc
 
namespace  node_composite_normalize_cc
 
namespace  node_composite_pixelate_cc
 
namespace  node_composite_planetrackdeform_cc
 
namespace  node_composite_posterize_cc
 
namespace  node_composite_premulkey_cc
 
namespace  node_composite_relative_to_pixel_cc
 
namespace  node_composite_render_layer_cc
 
namespace  node_composite_rgb_cc
 
namespace  node_composite_rgb_curves_cc
 
namespace  node_composite_rgb_to_bw_cc
 
namespace  node_composite_rotate_cc
 
namespace  node_composite_scale_cc
 
namespace  node_composite_separate_color_cc
 
namespace  node_composite_separate_hsva_cc
 
namespace  node_composite_separate_rgba_cc
 
namespace  node_composite_separate_xyz_cc
 
namespace  node_composite_separate_ycca_cc
 
namespace  node_composite_separate_yuva_cc
 
namespace  node_composite_setalpha_cc
 
namespace  node_composite_split_cc
 
namespace  node_composite_stabilize2d_cc
 
namespace  node_composite_sunbeams_cc
 
namespace  node_composite_switch_cc
 
namespace  node_composite_switchview_cc
 
namespace  node_composite_texture_cc
 
namespace  node_composite_time_curves_cc
 
namespace  node_composite_tonemap_cc
 
namespace  node_composite_trackpos_cc
 
namespace  node_composite_transform_cc
 
namespace  node_composite_translate_cc
 
namespace  node_composite_value_cc
 
namespace  node_composite_vec_blur_cc
 
namespace  node_composite_vector_curves_cc
 
namespace  node_composite_viewer_cc
 
namespace  node_composite_zcombine_cc
 
namespace  node_fn_align_euler_to_vector_cc
 
namespace  node_fn_align_rotation_to_vector_cc
 
namespace  node_fn_axes_to_rotation_cc
 
namespace  node_fn_axis_angle_to_rotation_cc
 
namespace  node_fn_bit_math_cc
 
namespace  node_fn_boolean_math_cc
 
namespace  node_fn_combine_color_cc
 
namespace  node_fn_combine_matrix_cc
 
namespace  node_fn_combine_transform_cc
 
namespace  node_fn_compare_cc
 
namespace  node_fn_euler_to_rotation_cc
 
namespace  node_fn_find_in_string_cc
 
namespace  node_fn_float_to_int_cc
 
namespace  node_fn_format_string_cc
 
namespace  node_fn_hash_value_cc
 
namespace  node_fn_input_bool_cc
 
namespace  node_fn_input_color_cc
 
namespace  node_fn_input_int_cc
 
namespace  node_fn_input_rotation_cc
 
namespace  node_fn_input_special_characters_cc
 
namespace  node_fn_input_string_cc
 
namespace  node_fn_input_vector_cc
 
namespace  node_fn_integer_math_cc
 
namespace  node_fn_invert_matrix_cc
 
namespace  node_fn_invert_rotation_cc
 
namespace  node_fn_match_string_cc
 
namespace  node_fn_matrix_determinant_cc
 
namespace  node_fn_matrix_multiply_cc
 
namespace  node_fn_project_point_cc
 
namespace  node_fn_quaternion_to_rotation_cc
 
namespace  node_fn_random_value_cc
 
namespace  node_fn_replace_string_cc
 
namespace  node_fn_rotate_euler_cc
 
namespace  node_fn_rotate_rotation_cc
 
namespace  node_fn_rotate_vector_cc
 
namespace  node_fn_rotation_to_axis_angle_cc
 
namespace  node_fn_rotation_to_euler_cc
 
namespace  node_fn_rotation_to_quaternion_cc
 
namespace  node_fn_separate_color_cc
 
namespace  node_fn_separate_matrix_cc
 
namespace  node_fn_separate_transform_cc
 
namespace  node_fn_slice_string_cc
 
namespace  node_fn_string_length_cc
 
namespace  node_fn_transform_direction_cc
 
namespace  node_fn_transform_point_cc
 
namespace  node_fn_transpose_matrix_cc
 
namespace  node_fn_value_to_string_cc
 
namespace  node_geo_accumulate_field_cc
 
namespace  node_geo_attribute_capture_cc
 
namespace  node_geo_attribute_domain_size_cc
 
namespace  node_geo_attribute_statistic_cc
 
namespace  node_geo_bake_cc
 
namespace  node_geo_blur_attribute_cc
 
namespace  node_geo_boolean_cc
 
namespace  node_geo_bounding_box_cc
 
namespace  node_geo_camera_info_cc
 
namespace  node_geo_closure_cc
 
namespace  node_geo_collection_info_cc
 
namespace  node_geo_combine_bundle_cc
 
namespace  node_geo_convex_hull_cc
 
namespace  node_geo_curve_endpoint_selection_cc
 
namespace  node_geo_curve_fill_cc
 
namespace  node_geo_curve_fillet_cc
 
namespace  node_geo_curve_handle_type_selection_cc
 
namespace  node_geo_curve_length_cc
 
namespace  node_geo_curve_primitive_arc_cc
 
namespace  node_geo_curve_primitive_bezier_segment_cc
 
namespace  node_geo_curve_primitive_circle_cc
 
namespace  node_geo_curve_primitive_line_cc
 
namespace  node_geo_curve_primitive_quadratic_bezier_cc
 
namespace  node_geo_curve_primitive_quadrilateral_cc
 
namespace  node_geo_curve_primitive_spiral_cc
 
namespace  node_geo_curve_primitive_star_cc
 
namespace  node_geo_curve_resample_cc
 
namespace  node_geo_curve_reverse_cc
 
namespace  node_geo_curve_sample_cc
 
namespace  node_geo_curve_set_handle_type_cc
 
namespace  node_geo_curve_spline_parameter_cc
 
namespace  node_geo_curve_spline_type_cc
 
namespace  node_geo_curve_subdivide_cc
 
namespace  node_geo_curve_to_mesh_cc
 
namespace  node_geo_curve_to_points_cc
 
namespace  node_geo_curve_topology_curve_of_point_cc
 
namespace  node_geo_curve_topology_points_of_curve_cc
 
namespace  node_geo_curve_trim_cc
 
namespace  node_geo_curves_to_grease_pencil_cc
 
namespace  node_geo_deform_curves_on_surface_cc
 
namespace  node_geo_delete_geometry_cc
 
namespace  node_geo_distribute_points_in_grid_cc
 
namespace  node_geo_distribute_points_in_volume_cc
 
namespace  node_geo_distribute_points_on_faces_cc
 
namespace  node_geo_dual_mesh_cc
 
namespace  node_geo_duplicate_elements_cc
 
namespace  node_geo_edge_paths_to_curves_cc
 
namespace  node_geo_edge_paths_to_selection_cc
 
namespace  node_geo_edge_split_cc
 
namespace  node_geo_edges_to_face_groups_cc
 
namespace  node_geo_evaluate_at_index_cc
 
namespace  node_geo_evaluate_closure_cc
 
namespace  node_geo_evaluate_on_domain_cc
 
namespace  node_geo_extrude_mesh_cc
 
namespace  node_geo_field_average_cc
 
namespace  node_geo_field_min_and_max_cc
 
namespace  node_geo_field_variance_cc
 
namespace  node_geo_flip_faces_cc
 
namespace  node_geo_foreach_geometry_element_cc
 
namespace  node_geo_geometry_to_instance_cc
 
namespace  node_geo_get_named_grid_cc
 
namespace  node_geo_gizmo_dial_cc
 
namespace  node_geo_gizmo_linear_cc
 
namespace  node_geo_gizmo_transform_cc
 
namespace  node_geo_grease_pencil_set_depth_mode
 
namespace  node_geo_grease_pencil_to_curves_cc
 
namespace  node_geo_grid_info_cc
 
namespace  node_geo_grid_to_mesh_cc
 
namespace  node_geo_image_cc
 
namespace  node_geo_image_info_cc
 
namespace  node_geo_image_texture_cc
 
namespace  node_geo_import_csv
 
namespace  node_geo_import_obj
 
namespace  node_geo_import_stl
 
namespace  node_geo_import_text
 
namespace  node_geo_import_vdb
 
namespace  node_geo_index_of_nearest_cc
 
namespace  node_geo_index_switch_cc
 
namespace  node_geo_input_active_camera_cc
 
namespace  node_geo_input_collection_cc
 
namespace  node_geo_input_curve_handles_cc
 
namespace  node_geo_input_curve_tilt_cc
 
namespace  node_geo_input_edge_smooth_cc
 
namespace  node_geo_input_face_smooth_cc
 
namespace  node_geo_input_id_cc
 
namespace  node_geo_input_index_cc
 
namespace  node_geo_input_instance_bounds_cc
 
namespace  node_geo_input_instance_rotation_cc
 
namespace  node_geo_input_instance_scale_cc
 
namespace  node_geo_input_instance_transform_cc
 
namespace  node_geo_input_material_cc
 
namespace  node_geo_input_material_index_cc
 
namespace  node_geo_input_mesh_edge_angle_cc
 
namespace  node_geo_input_mesh_edge_neighbors_cc
 
namespace  node_geo_input_mesh_edge_vertices_cc
 
namespace  node_geo_input_mesh_face_area_cc
 
namespace  node_geo_input_mesh_face_is_planar_cc
 
namespace  node_geo_input_mesh_face_neighbors_cc
 
namespace  node_geo_input_mesh_island_cc
 
namespace  node_geo_input_mesh_vertex_neighbors_cc
 
namespace  node_geo_input_named_attribute_cc
 
namespace  node_geo_input_named_layer_selection__cc
 
namespace  node_geo_input_normal_cc
 
namespace  node_geo_input_object_cc
 
namespace  node_geo_input_position_cc
 
namespace  node_geo_input_radius_cc
 
namespace  node_geo_input_scene_time_cc
 
namespace  node_geo_input_shortest_edge_paths_cc
 
namespace  node_geo_input_spline_cyclic_cc
 
namespace  node_geo_input_spline_length_cc
 
namespace  node_geo_input_spline_resolution_cc
 
namespace  node_geo_input_tangent_cc
 
namespace  node_geo_instance_on_points_cc
 
namespace  node_geo_instances_to_points_cc
 
namespace  node_geo_interpolate_curves_cc
 
namespace  node_geo_is_viewport_cc
 
namespace  node_geo_join_geometry_cc
 
namespace  node_geo_material_replace_cc
 
namespace  node_geo_material_selection_cc
 
namespace  node_geo_menu_switch_cc
 
namespace  node_geo_merge_by_distance_cc
 
namespace  node_geo_merge_layers_cc
 
namespace  node_geo_mesh_face_group_boundaries_cc
 
namespace  node_geo_mesh_primitive_circle_cc
 
namespace  node_geo_mesh_primitive_cone_cc
 
namespace  node_geo_mesh_primitive_cube_cc
 
namespace  node_geo_mesh_primitive_cylinder_cc
 
namespace  node_geo_mesh_primitive_grid_cc
 
namespace  node_geo_mesh_primitive_ico_sphere_cc
 
namespace  node_geo_mesh_primitive_line_cc
 
namespace  node_geo_mesh_primitive_uv_sphere_cc
 
namespace  node_geo_mesh_subdivide_cc
 
namespace  node_geo_mesh_to_curve_cc
 
namespace  node_geo_mesh_to_density_grid_cc
 
namespace  node_geo_mesh_to_points_cc
 
namespace  node_geo_mesh_to_sdf_grid_cc
 
namespace  node_geo_mesh_to_volume_cc
 
namespace  node_geo_mesh_topology_corners_of_edge_cc
 
namespace  node_geo_mesh_topology_corners_of_face_cc
 
namespace  node_geo_mesh_topology_corners_of_vertex_cc
 
namespace  node_geo_mesh_topology_edges_of_corner_cc
 
namespace  node_geo_mesh_topology_edges_of_vertex_cc
 
namespace  node_geo_mesh_topology_face_of_corner_cc
 
namespace  node_geo_mesh_topology_offset_corner_in_face_cc
 
namespace  node_geo_mesh_topology_vertex_of_corner_cc
 
namespace  node_geo_mouse_position_cc
 
namespace  node_geo_object_info_cc
 
namespace  node_geo_offset_point_in_curve_cc
 
namespace  node_geo_points_cc
 
namespace  node_geo_points_to_curves_cc
 
namespace  node_geo_points_to_sdf_grid_cc
 
namespace  node_geo_points_to_vertices_cc
 
namespace  node_geo_points_to_volume_cc
 
namespace  node_geo_proximity_cc
 
namespace  node_geo_raycast_cc
 
namespace  node_geo_realize_instances_cc
 
namespace  node_geo_remove_attribute_cc
 
namespace  node_geo_repeat_cc
 
namespace  node_geo_rotate_instances_cc
 
namespace  node_geo_sample_grid_cc
 
namespace  node_geo_sample_grid_index_cc
 
namespace  node_geo_sample_index_cc
 
namespace  node_geo_sample_nearest_cc
 
namespace  node_geo_sample_nearest_surface_cc
 
namespace  node_geo_sample_uv_surface_cc
 
namespace  node_geo_scale_elements_cc
 
namespace  node_geo_scale_instances_cc
 
namespace  node_geo_sdf_grid_boolean_cc
 
namespace  node_geo_self_object_cc
 
namespace  node_geo_separate_bundle_cc
 
namespace  node_geo_separate_components_cc
 
namespace  node_geo_separate_geometry_cc
 
namespace  node_geo_set_curve_handles_cc
 
namespace  node_geo_set_curve_normal_cc
 
namespace  node_geo_set_curve_radius_cc
 
namespace  node_geo_set_curve_tilt_cc
 
namespace  node_geo_set_geometry_name
 
namespace  node_geo_set_grease_pencil_color_cc
 
namespace  node_geo_set_grease_pencil_softness_cc
 
namespace  node_geo_set_id_cc
 
namespace  node_geo_set_instance_transform_cc
 
namespace  node_geo_set_material_cc
 
namespace  node_geo_set_material_index_cc
 
namespace  node_geo_set_mesh_normal_cc
 
namespace  node_geo_set_point_radius_cc
 
namespace  node_geo_set_position_cc
 
namespace  node_geo_set_shade_smooth_cc
 
namespace  node_geo_set_spline_cyclic_cc
 
namespace  node_geo_set_spline_resolution_cc
 
namespace  node_geo_simulation_cc
 
namespace  node_geo_sort_elements_cc
 
namespace  node_geo_split_to_instances_cc
 
namespace  node_geo_store_named_attribute_cc
 
namespace  node_geo_store_named_grid_cc
 
namespace  node_geo_string_join_cc
 
namespace  node_geo_string_to_curves_cc
 
namespace  node_geo_subdivision_surface_cc
 
namespace  node_geo_switch_cc
 
namespace  node_geo_tool_3d_cursor_cc
 
namespace  node_geo_tool_active_element_cc
 
namespace  node_geo_tool_face_set_cc
 
namespace  node_geo_tool_selection_cc
 
namespace  node_geo_tool_set_face_set_cc
 
namespace  node_geo_tool_set_selection_cc
 
namespace  node_geo_transform_geometry_cc
 
namespace  node_geo_translate_instances_cc
 
namespace  node_geo_triangulate_cc
 
namespace  node_geo_uv_pack_islands_cc
 
namespace  node_geo_uv_unwrap_cc
 
namespace  node_geo_viewer_cc
 
namespace  node_geo_viewport_transform_cc
 
namespace  node_geo_volume_cube_cc
 
namespace  node_geo_volume_to_mesh_cc
 
namespace  node_geo_warning_cc
 
namespace  node_sh_mix_cc
 
namespace  node_shader_add_shader_cc
 
namespace  node_shader_ambient_occlusion_cc
 
namespace  node_shader_attribute_cc
 
namespace  node_shader_background_cc
 
namespace  node_shader_bevel_cc
 
namespace  node_shader_blackbody_cc
 
namespace  node_shader_brightness_cc
 
namespace  node_shader_bsdf_diffuse_cc
 
namespace  node_shader_bsdf_glass_cc
 
namespace  node_shader_bsdf_glossy_cc
 
namespace  node_shader_bsdf_hair_cc
 
namespace  node_shader_bsdf_hair_principled_cc
 
namespace  node_shader_bsdf_metallic_cc
 
namespace  node_shader_bsdf_principled_cc
 
namespace  node_shader_bsdf_ray_portal_cc
 
namespace  node_shader_bsdf_refraction_cc
 
namespace  node_shader_bsdf_sheen_cc
 
namespace  node_shader_bsdf_toon_cc
 
namespace  node_shader_bsdf_translucent_cc
 
namespace  node_shader_bsdf_transparent_cc
 
namespace  node_shader_bump_cc
 
namespace  node_shader_camera_cc
 
namespace  node_shader_clamp_cc
 
namespace  node_shader_color_ramp_cc
 
namespace  node_shader_combine_color_cc
 
namespace  node_shader_curves_cc
 
namespace  node_shader_displacement_cc
 
namespace  node_shader_eevee_specular_cc
 
namespace  node_shader_emission_cc
 
namespace  node_shader_fresnel_cc
 
namespace  node_shader_gamma_cc
 
namespace  node_shader_geometry_cc
 
namespace  node_shader_hair_info_cc
 
namespace  node_shader_holdout_cc
 
namespace  node_shader_hueSatVal_cc
 
namespace  node_shader_ies_light_cc
 
namespace  node_shader_invert_cc
 
namespace  node_shader_layer_weight_cc
 
namespace  node_shader_light_falloff_cc
 
namespace  node_shader_light_path_cc
 
namespace  node_shader_map_range_cc
 
namespace  node_shader_mapping_cc
 
namespace  node_shader_math_cc
 
namespace  node_shader_mix_rgb_cc
 
namespace  node_shader_mix_shader_cc
 
namespace  node_shader_normal_cc
 
namespace  node_shader_normal_map_cc
 
namespace  node_shader_object_info_cc
 
namespace  node_shader_output_aov_cc
 
namespace  node_shader_output_light_cc
 
namespace  node_shader_output_linestyle_cc
 
namespace  node_shader_output_material_cc
 
namespace  node_shader_output_world_cc
 
namespace  node_shader_particle_info_cc
 
namespace  node_shader_point_info_cc
 
namespace  node_shader_rgb_cc
 
namespace  node_shader_rgb_to_bw_cc
 
namespace  node_shader_script_cc
 
namespace  node_shader_separate_color_cc
 
namespace  node_shader_sepcomb_hsv_cc
 
namespace  node_shader_sepcomb_rgb_cc
 
namespace  node_shader_sepcomb_xyz_cc
 
namespace  node_shader_shader_to_rgb_cc
 
namespace  node_shader_squeeze_cc
 
namespace  node_shader_subsurface_scattering_cc
 
namespace  node_shader_tangent_cc
 
namespace  node_shader_tex_brick_cc
 
namespace  node_shader_tex_checker_cc
 
namespace  node_shader_tex_coord_cc
 
namespace  node_shader_tex_environment_cc
 
namespace  node_shader_tex_gabor_cc
 
namespace  node_shader_tex_gradient_cc
 
namespace  node_shader_tex_image_cc
 
namespace  node_shader_tex_magic_cc
 
namespace  node_shader_tex_noise_cc
 
namespace  node_shader_tex_pointdensity_cc
 
namespace  node_shader_tex_sky_cc
 
namespace  node_shader_tex_voronoi_cc
 
namespace  node_shader_tex_wave_cc
 
namespace  node_shader_tex_white_noise_cc
 
namespace  node_shader_uv_along_stroke_cc
 
namespace  node_shader_uvmap_cc
 
namespace  node_shader_value_cc
 
namespace  node_shader_vector_displacement_cc
 
namespace  node_shader_vector_math_cc
 
namespace  node_shader_vector_rotate_cc
 
namespace  node_shader_vector_transform_cc
 
namespace  node_shader_vertex_color_cc
 
namespace  node_shader_volume_absorption_cc
 
namespace  node_shader_volume_coefficients_cc
 
namespace  node_shader_volume_info_cc
 
namespace  node_shader_volume_principled_cc
 
namespace  node_shader_volume_scatter_cc
 
namespace  node_shader_wavelength_cc
 
namespace  node_shader_wireframe_cc
 
namespace  nodes_geo_import_ply
 
namespace  partial_eval
 
namespace  sim_input
 
namespace  sim_output
 
namespace  socket_items
 
namespace  socket_usage_inference
 
namespace  tests
 
namespace  value_elem
 

Classes

struct  BakeDrawContext
 
struct  BakeItemsAccessor
 
struct  BakeNodeBehavior
 
class  BaseSocketDeclarationBuilder
 
struct  BooleanRNAAccessors
 
struct  BuildGraphParams
 
class  Bundle
 
struct  CaptureAttributeItemsAccessor
 
class  ClampWrapperFunction
 
class  Closure
 
struct  ClosureEagerEvalParams
 
struct  ClosureEvalLocation
 
struct  ClosureEvalLog
 
struct  ClosureFunctionIndices
 
struct  ClosureInputItemsAccessor
 
class  ClosureIntermediateGraphSideEffectProvider
 
struct  ClosureOutputItemsAccessor
 
class  ClosureSignature
 
struct  ClosureSourceLocation
 
struct  CombineBundleItemsAccessor
 
struct  CustomSocketDrawParams
 
class  DeclarationListBuilder
 
class  DerivedNodeTree
 
class  DInputSocket
 
class  DNode
 
class  DOutputSocket
 
class  DSocket
 
class  DTreeContext
 
struct  EnumRNAAccessors
 
struct  EvaluateClosureEvalStorage
 
struct  EvaluateClosureFunction
 
struct  EvaluateClosureFunctionIndices
 
struct  EvaluateClosureInputItemsAccessor
 
struct  EvaluateClosureOutputItemsAccessor
 
struct  FieldInferencingInterface
 
struct  FloatMathOperationInfo
 
struct  ForeachElementComponent
 
struct  ForeachElementComponentID
 
struct  ForeachGeometryElementEvalStorage
 
struct  ForeachGeometryElementGenerationItemsAccessor
 
struct  ForeachGeometryElementInputItemsAccessor
 
struct  ForeachGeometryElementMainItemsAccessor
 
class  ForeachGeometryElementNodeExecuteWrapper
 
class  ForeachGeometryElementZoneSideEffectProvider
 
struct  FormatStringItemsAccessor
 
struct  FoundNestedNodeID
 
class  GatherLinkSearchOpParams
 
struct  GeometryNodeLazyFunctionGraphMapping
 
struct  GeometryNodesEvalDependencies
 
struct  GeometryNodesGroupFunction
 
struct  GeometryNodesLazyFunctionBuilder
 
struct  GeometryNodesLazyFunctionGraphInfo
 
class  GeometryNodesLazyFunctionLogger
 
class  GeometryNodesLazyFunctionSideEffectProvider
 
class  GeoNodeExecParams
 
class  GeoNodesBakeParams
 
struct  GeoNodesCallData
 
struct  GeoNodesLocalUserData
 
struct  GeoNodesModifierData
 
struct  GeoNodesOperatorData
 
struct  GeoNodesOperatorDepsgraphs
 
struct  GeoNodesSideEffectNodes
 
class  GeoNodesSimulationParams
 
struct  GeoNodesUserData
 
struct  IDPropNameGetter
 
struct  IndexSwitchItemsAccessor
 
struct  InputUsageHint
 
class  ItemDeclaration
 
class  LayoutDeclaration
 
class  LazyFunctionForBakeInputsUsage
 
class  LazyFunctionForClosureZone
 
class  LazyFunctionForEvaluateClosureNode
 
class  LazyFunctionForExtractingReferenceSet
 
class  LazyFunctionForForeachGeometryElementZone
 
class  LazyFunctionForGeometryNode
 
class  LazyFunctionForGizmoInputsUsage
 
class  LazyFunctionForGizmoNode
 
class  LazyFunctionForGroupNode
 
class  LazyFunctionForImplicitConversion
 
class  LazyFunctionForImplicitInput
 
class  LazyFunctionForIndexSwitchSocketUsage
 
class  LazyFunctionForJoinReferenceSets
 
class  LazyFunctionForLogicalOr
 
class  LazyFunctionForMultiFunctionNode
 
class  LazyFunctionForMultiInput
 
class  LazyFunctionForMutedNode
 
struct  LazyFunctionForReduceForeachGeometryElement
 
class  LazyFunctionForRepeatZone
 
class  LazyFunctionForRerouteNode
 
class  LazyFunctionForSimulationInputsUsage
 
class  LazyFunctionForSimulationZone
 
class  LazyFunctionForSwitchSocketUsage
 
class  LazyFunctionForUndefinedNode
 
class  LazyFunctionForViewerInputUsage
 
class  LazyFunctionForViewerNode
 
class  LinkSearchOpParams
 
struct  MenuSwitchItemsAccessor
 
class  NodeAttributeFilter
 
class  NodeDeclaration
 
class  NodeDeclarationBuilder
 
struct  NodeExtraInfoParams
 
struct  NodeExtraInfoRow
 
struct  NodeInContext
 
class  NodeMultiFunctionBuilder
 
class  NodeMultiFunctions
 
struct  OutputAttributeInfo
 
struct  OutputAttributeToStore
 
class  OutputFieldDependency
 
class  PanelDeclaration
 
class  PanelDeclarationBuilder
 
class  RepeatBodyNodeExecuteWrapper
 
struct  RepeatEvalStorage
 
struct  RepeatItemsAccessor
 
class  RepeatZoneSideEffectProvider
 
class  SceneTimeOperation
 
class  ScopedComputeContextTimer
 
class  ScopedNodeTimer
 
struct  SeparateBundleItemsAccessor
 
class  SeparatorDeclaration
 
struct  SimulationItemsAccessor
 
struct  SimulationZoneBehavior
 
class  SocketDeclaration
 
class  SocketDeclarationBuilder
 
struct  SocketInContext
 
class  SocketInterfaceKey
 
struct  SocketLinkOperation
 
struct  SocketNameRNA
 
struct  StructureTypeInterface
 
struct  ZoneBodyFunction
 
struct  ZoneBuildInfo
 
struct  ZoneFunctionIndices
 

Typedefs

using JoinReferenceSetsCache = Map<Vector<lf::OutputSocket *>, lf::OutputSocket *>
 
using BundlePtr = ImplicitSharingPtr<Bundle>
 
using ClosurePtr = ImplicitSharingPtr<Closure>
 
using PropertiesVectorSet = CustomIDVectorSet<IDProperty *, IDPropNameGetter, 16>
 
using ReferenceSetIndex = int
 
using ItemDeclarationPtr = std::unique_ptr<ItemDeclaration>
 
using CustomSocketDrawFn = std::function<void(CustomSocketDrawParams &params)>
 
using SocketDeclarationPtr = std::unique_ptr<SocketDeclaration>
 
using DrawNodeLayoutFn = void(uiLayout *, bContext *, PointerRNA *)
 
using PanelDeclarationPtr = std::unique_ptr<PanelDeclaration>
 
using ImplicitInputValueFn = std::function<void(const bNode &node, void *r_value)>
 

Enumerations

enum class  InputUsageHintType { Never , DependsOnOutput , DynamicSocket }
 
enum class  NodeWarningType { Error = 0 , Warning = 1 , Info = 2 }
 
enum class  InputSocketFieldType : int8_t { None , IsSupported , Implicit }
 
enum class  OutputSocketFieldType : int8_t { None , FieldSource , DependentField , PartiallyDependent }
 
enum class  CompositorInputRealizationMode : int8_t { None , Transforms , OperationDomain }
 

Functions

compositor::NodeOperationget_group_input_compositor_operation (compositor::Context &context, DNode node)
 
static void cmp_node_scene_time_declare (NodeDeclarationBuilder &b)
 
static NodeOperationget_compositor_operation (Context &context, DNode node)
 
bool get_bake_draw_context (const bContext *C, const bNode &node, BakeDrawContext &r_ctx)
 
std::string get_baked_string (const BakeDrawContext &ctx)
 
std::optional< std::string > get_bake_state_string (const BakeDrawContext &ctx)
 
void draw_common_bake_settings (bContext *C, BakeDrawContext &ctx, uiLayout *layout)
 
void draw_bake_button_row (const BakeDrawContext &ctx, uiLayout *layout, bool is_in_sidebar=false)
 
bool socket_type_supported_in_bundle (const eNodeSocketDatatype socket_type)
 
bool socket_type_supported_in_closure (const eNodeSocketDatatype socket_type)
 
const bNodeSocketevaluate_closure_node_internally_linked_input (const bNodeSocket &output_socket)
 
bool check_tool_context_and_error (GeoNodeExecParams &params)
 
void search_link_ops_for_tool_node (GatherLinkSearchOpParams &params)
 
void search_link_ops_for_volume_grid_node (GatherLinkSearchOpParams &params)
 
const EnumPropertyItemgrid_data_type_socket_items_filter_fn (bContext *, PointerRNA *, PropertyRNA *, bool *r_free)
 
const EnumPropertyItemgrid_socket_type_items_filter_fn (bContext *, PointerRNA *, PropertyRNA *, bool *r_free)
 
void node_geo_exec_with_missing_openvdb (GeoNodeExecParams &params)
 
void get_closest_in_bvhtree (bke::BVHTreeFromMesh &tree_data, const VArray< float3 > &positions, const IndexMask &mask, MutableSpan< int > r_indices, MutableSpan< float > r_distances_sq, MutableSpan< float3 > r_positions)
 
void mix_baked_data_item (eNodeSocketDatatype socket_type, void *prev, const void *next, const float factor)
 
void draw_data_blocks (const bContext *C, uiLayout *layout, PointerRNA &bake_rna)
 
static void draw_bake_data_block_list_item (uiList *, const bContext *, uiLayout *layout, PointerRNA *, PointerRNA *itemptr, int, PointerRNA *, const char *, int, int)
 
std::unique_ptr< LazyFunctionget_bake_lazy_function (const bNode &node, GeometryNodesLazyFunctionGraphInfo &lf_graph_info)
 
static void register_node_type_geo_group ()
 
std::unique_ptr< LazyFunctionget_index_switch_node_lazy_function (const bNode &node, GeometryNodesLazyFunctionGraphInfo &lf_graph_info)
 
std::unique_ptr< LazyFunctionget_menu_switch_node_lazy_function (const bNode &node, GeometryNodesLazyFunctionGraphInfo &lf_graph_info)
 
std::unique_ptr< LazyFunctionget_menu_switch_node_socket_usage_lazy_function (const bNode &node)
 
std::unique_ptr< LazyFunctionget_simulation_input_lazy_function (const bNodeTree &node_tree, const bNode &node, GeometryNodesLazyFunctionGraphInfo &own_lf_graph_info)
 
std::unique_ptr< LazyFunctionget_simulation_output_lazy_function (const bNode &node, GeometryNodesLazyFunctionGraphInfo &own_lf_graph_info)
 
std::unique_ptr< LazyFunctionget_switch_node_lazy_function (const bNode &node)
 
std::unique_ptr< LazyFunctionget_warning_node_lazy_function (const bNode &node)
 
static const DTreeContextfind_active_context_recursive (const DTreeContext *context)
 
static dot_export::Clusterget_dot_cluster_for_context (dot_export::DirectedGraph &digraph, const DTreeContext *context, Map< const DTreeContext *, dot_export::Cluster * > &dot_clusters)
 
static geo_log::GeoTreeLogget_root_tree_log (const NodesModifierData &nmd)
 
static NodesModifierDataget_modifier_data (Main &bmain, const wmWindowManager &wm, const ModifierSearchData &data)
 
static void layer_name_search_update_fn (const bContext *C, void *arg, const char *str, uiSearchItems *items, const bool is_first)
 
static void layer_name_search_exec_fn (bContext *C, void *data_v, void *item_v)
 
static void add_layer_name_search_button (DrawGroupInputsContext &ctx, uiLayout *layout, const bNodeTreeInterfaceSocket &socket)
 
static void attribute_search_update_fn (const bContext *C, void *arg, const char *str, uiSearchItems *items, const bool is_first)
 
static void attribute_search_exec_fn (bContext *C, void *data_v, void *item_v)
 
static void add_attribute_search_button (DrawGroupInputsContext &ctx, uiLayout *layout, const StringRefNull rna_path_attribute_name, const bNodeTreeInterfaceSocket &socket)
 
static void add_attribute_search_or_value_buttons (DrawGroupInputsContext &ctx, uiLayout *layout, const StringRefNull rna_path, const bNodeTreeInterfaceSocket &socket, const std::optional< StringRefNull > use_name=std::nullopt)
 
static NodesModifierPanelfind_panel_by_id (NodesModifierData &nmd, const int id)
 
static void draw_property_for_socket (DrawGroupInputsContext &ctx, uiLayout *layout, const bNodeTreeInterfaceSocket &socket, const std::optional< StringRefNull > parent_name=std::nullopt)
 
static bool interface_panel_has_socket (DrawGroupInputsContext &ctx, const bNodeTreeInterfacePanel &interface_panel)
 
static bool interface_panel_affects_output (DrawGroupInputsContext &ctx, const bNodeTreeInterfacePanel &panel)
 
static void draw_interface_panel_content (DrawGroupInputsContext &ctx, uiLayout *layout, const bNodeTreeInterfacePanel &interface_panel, const bool skip_first=false, const std::optional< StringRefNull > parent_name=std::nullopt)
 
static void draw_warnings (const bContext *C, const NodesModifierData &nmd, uiLayout *layout, PointerRNA *md_ptr)
 
static bool has_output_attribute (const bNodeTree *tree)
 
static void draw_property_for_output_socket (DrawGroupInputsContext &ctx, uiLayout *layout, const bNodeTreeInterfaceSocket &socket)
 
static void draw_output_attributes_panel (DrawGroupInputsContext &ctx, uiLayout *layout)
 
static void draw_bake_panel (uiLayout *layout, PointerRNA *modifier_ptr)
 
static void draw_named_attributes_panel (uiLayout *layout, NodesModifierData &nmd)
 
static void draw_manage_panel (const bContext *C, uiLayout *layout, PointerRNA *modifier_ptr, NodesModifierData &nmd)
 
void draw_geometry_nodes_modifier_ui (const bContext &C, PointerRNA *modifier_ptr, uiLayout &layout)
 
void draw_geometry_nodes_operator_redo_ui (const bContext &C, wmOperator &op, bNodeTree &tree, geo_eval_log::GeoTreeLog *tree_log)
 
void evaluate_closure_eagerly (const Closure &closure, ClosureEagerEvalParams &params)
 
LazyFunctionbuild_closure_zone_lazy_function (ResourceScope &scope, const bNodeTree &btree, const bke::bNodeTreeZone &zone, ZoneBuildInfo &zone_info, const ZoneBodyFunction &body_fn)
 
EvaluateClosureFunction build_evaluate_closure_node_lazy_function (ResourceScope &scope, const bNode &bnode)
 
static void add_eval_dependencies_from_socket (const bNodeSocket &socket, GeometryNodesEvalDependencies &deps)
 
static void add_eval_dependencies_from_node_data (const bNodeTree &tree, GeometryNodesEvalDependencies &deps)
 
static bool has_enabled_nodes_of_type (const bNodeTree &tree, const blender::StringRefNull type_idname)
 
static void add_own_transform_dependencies (const bNodeTree &tree, GeometryNodesEvalDependencies &deps)
 
static bool needs_scene_render_params (const bNodeTree &ntree)
 
static void gather_geometry_nodes_eval_dependencies (const bNodeTree &ntree, GeometryNodesEvalDependencies &deps, FunctionRef< const GeometryNodesEvalDependencies *(const bNodeTree &group)> get_group_deps)
 
GeometryNodesEvalDependencies gather_geometry_nodes_eval_dependencies_with_cache (const bNodeTree &ntree)
 
static void gather_geometry_nodes_eval_dependencies_recursive_impl (const bNodeTree &ntree, Map< const bNodeTree *, GeometryNodesEvalDependencies > &deps_by_tree)
 
GeometryNodesEvalDependencies gather_geometry_nodes_eval_dependencies_recursive (const bNodeTree &ntree)
 
bool socket_type_has_attribute_toggle (const eNodeSocketDatatype type)
 
bool input_has_attribute_toggle (const bNodeTree &node_tree, const int socket_index)
 
static void id_property_int_update_enum_items (const bNodeSocketValueMenu *value, IDPropertyUIDataInt *ui_data)
 
static std::unique_ptr< IDProperty, bke::idprop::IDPropertyDeleterid_name_or_value_prop (const StringRefNull identifier, ID *id, const ID_Type id_type, const bool use_name_for_ids)
 
std::unique_ptr< IDProperty, bke::idprop::IDPropertyDeleterid_property_create_from_socket (const bNodeTreeInterfaceSocket &socket, const nodes::StructureType structure_type, const bool use_name_for_ids)
 
static bool old_id_property_type_matches_socket_convert_to_new_int (const IDProperty &old_property, IDProperty *new_property)
 
static bool old_id_property_type_matches_socket_convert_to_new_float_vec (const IDProperty &old_property, IDProperty *new_property, const int len)
 
static bool old_id_property_type_matches_socket_convert_to_new_string (const IDProperty &old_property, IDProperty *new_property)
 
static bool old_id_property_type_matches_socket_convert_to_new (const bNodeTreeInterfaceSocket &socket, const IDProperty &old_property, IDProperty *new_property, const bool use_name_for_ids)
 
bool id_property_type_matches_socket (const bNodeTreeInterfaceSocket &socket, const IDProperty &property, const bool use_name_for_ids)
 
PropertiesVectorSet build_properties_vector_set (const IDProperty *properties)
 
static void init_socket_cpp_value_from_property (const IDProperty &property, const eNodeSocketDatatype socket_value_type, void *r_value)
 
std::optional< StringRefinput_attribute_name_get (const PropertiesVectorSet &properties, const bNodeTreeInterfaceSocket &io_input)
 
static void initialize_group_input (const bNodeTree &tree, const PropertiesVectorSet &properties, const int input_index, void *r_value)
 
static MultiValueMap< bke::AttrDomain, OutputAttributeInfofind_output_attributes_to_store (const bNodeTree &tree, const PropertiesVectorSet &properties, Span< GMutablePointer > output_values)
 
static Vector< OutputAttributeToStorecompute_attributes_to_store (const bke::GeometrySet &geometry, const MultiValueMap< bke::AttrDomain, OutputAttributeInfo > &outputs_by_domain, const bool do_instances)
 
static void store_computed_output_attributes (bke::GeometrySet &geometry, const Span< OutputAttributeToStore > attributes_to_store)
 
static void store_output_attributes (bke::GeometrySet &geometry, const bNodeTree &tree, const PropertiesVectorSet &properties, Span< GMutablePointer > output_values)
 
bke::GeometrySet execute_geometry_nodes_on_geometry (const bNodeTree &btree, const PropertiesVectorSet &properties_set, const ComputeContext &base_compute_context, GeoNodesCallData &call_data, bke::GeometrySet input_geometry)
 
void update_input_properties_from_node_tree (const bNodeTree &tree, const IDProperty *old_properties, IDProperty &properties, const bool use_name_for_ids)
 
void update_output_properties_from_node_tree (const bNodeTree &tree, const IDProperty *old_properties, IDProperty &properties)
 
void get_geometry_nodes_input_base_values (const bNodeTree &btree, const PropertiesVectorSet &properties, ResourceScope &scope, MutableSpan< GPointer > r_values)
 
static std::optional< AttrDomain > get_foreach_attribute_propagation_target_domain (const GeometryComponent::Type component_type)
 
LazyFunctionbuild_foreach_geometry_element_zone_lazy_function (ResourceScope &scope, const bNodeTree &btree, const bke::bNodeTreeZone &zone, ZoneBuildInfo &zone_info, const ZoneBodyFunction &body_fn)
 
static const CPPTypeget_socket_cpp_type (const bke::bNodeSocketType &typeinfo)
 
static const CPPTypeget_socket_cpp_type (const bNodeSocket &socket)
 
static const CPPTypeget_vector_type (const CPPType &type)
 
static void lazy_function_interface_from_node (const bNode &node, Vector< lf::Input > &r_inputs, Vector< lf::Output > &r_outputs, MutableSpan< int > r_lf_index_by_bsocket)
 
void construct_socket_default_value (const bke::bNodeSocketType &stype, void *r_value)
 
void set_default_value_for_output_socket (lf::Params &params, const int lf_index, const bNodeSocket &bsocket)
 
void set_default_remaining_node_outputs (lf::Params &params, const bNode &node)
 
std::string make_anonymous_attribute_socket_inspection_string (const bNodeSocket &socket)
 
std::string make_anonymous_attribute_socket_inspection_string (StringRef node_name, StringRef socket_name)
 
static void execute_multi_function_on_value_variant__single (const MultiFunction &fn, const Span< SocketValueVariant * > input_values, const Span< SocketValueVariant * > output_values, GeoNodesUserData *user_data)
 
static void execute_multi_function_on_value_variant__field (const MultiFunction &fn, const std::shared_ptr< MultiFunction > &owned_fn, const Span< SocketValueVariant * > input_values, const Span< SocketValueVariant * > output_values)
 
static bool execute_multi_function_on_value_variant (const MultiFunction &fn, const std::shared_ptr< MultiFunction > &owned_fn, const Span< SocketValueVariant * > input_values, const Span< SocketValueVariant * > output_values, GeoNodesUserData *user_data, std::string &r_error_message)
 
bool implicitly_convert_socket_value (const bke::bNodeSocketType &from_type, const void *from_value, const bke::bNodeSocketType &to_type, void *r_to_value)
 
const LazyFunctionbuild_implicit_conversion_lazy_function (const bke::bNodeSocketType &from_type, const bke::bNodeSocketType &to_type, ResourceScope &scope)
 
static bool gizmo_is_used (const GeoNodesUserData &user_data, const lf::FunctionNode &lf_gizmo_node)
 
bool should_log_socket_values_for_context (const GeoNodesUserData &user_data, const ComputeContextHash hash)
 
static GMutablePointer get_socket_default_value (LinearAllocator<> &allocator, const bNodeSocket &bsocket)
 
void report_from_multi_function (const mf::Context &context, NodeWarningType type, std::string message)
 
static bool ignore_zone_bsocket (const bNodeSocket &bsocket)
 
void initialize_zone_wrapper (const bNodeTreeZone &zone, ZoneBuildInfo &zone_info, const ZoneBodyFunction &body_fn, const bool expose_all_reference_sets, Vector< lf::Input > &r_inputs, Vector< lf::Output > &r_outputs)
 
std::string zone_wrapper_input_name (const ZoneBuildInfo &zone_info, const bNodeTreeZone &zone, const Span< lf::Input > inputs, const int lf_socket_i)
 
std::string zone_wrapper_output_name (const ZoneBuildInfo &zone_info, const bNodeTreeZone &zone, const Span< lf::Output > outputs, const int lf_socket_i)
 
const GeometryNodesLazyFunctionGraphInfoensure_geometry_nodes_lazy_function_graph (const bNodeTree &btree)
 
std::optional< FoundNestedNodeIDfind_nested_node_id (const GeoNodesUserData &user_data, const int node_id)
 
static const IDget_only_evaluated_id (const Depsgraph &depsgraph, const ID &id_orig)
 
LazyFunctionbuild_repeat_zone_lazy_function (ResourceScope &scope, const bNodeTree &btree, const bke::bNodeTreeZone &zone, ZoneBuildInfo &zone_info, const ZoneBodyFunction &body_fn)
 
int node_warning_type_icon (const NodeWarningType type)
 
int node_warning_type_severity (const NodeWarningType type)
 
static const mf::MultiFunctionget_base_multi_function (const bNode &node)
 
void node_math_build_multi_function (NodeMultiFunctionBuilder &builder)
 
const FloatMathOperationInfoget_float_math_operation_info (const int operation)
 
const FloatMathOperationInfoget_float_compare_operation_info (const int operation)
 
const FloatMathOperationInfoget_float3_math_operation_info (const int operation)
 
static std::function< ID *(const bNode &node)> get_default_id_getter (const bNodeTreeInterface &tree_interface, const bNodeTreeInterfaceSocket &io_socket)
 
static std::function< void(bNode &node, bNodeSocket &socket, const char *data_path)> get_init_socket_fn (const bNodeTreeInterface &interface, const bNodeTreeInterfaceSocket &io_socket)
 
static BaseSocketDeclarationBuilderbuild_interface_socket_declaration (const bNodeTree &tree, const bNodeTreeInterfaceSocket &io_socket, const std::optional< StructureType > structure_type, const eNodeSocketInOut in_out, DeclarationListBuilder &b)
 
static void node_group_declare_panel_recursive (DeclarationListBuilder &b, const bNode &node, const bNodeTree &group, const Map< const bNodeTreeInterfaceSocket *, StructureType > &structure_type_by_socket, const bNodeTreeInterfacePanel &io_parent_panel, const bool is_root)
 
void node_group_declare (NodeDeclarationBuilder &b)
 
static void group_input_declare (NodeDeclarationBuilder &b)
 
static void group_output_declare (NodeDeclarationBuilder &b)
 
static bool group_input_insert_link (bNodeTree *ntree, bNode *node, bNodeLink *link)
 
static bool group_output_insert_link (bNodeTree *ntree, bNode *node, bNodeLink *link)
 
static void reset_declaration (NodeDeclaration &declaration)
 
void build_node_declaration (const bke::bNodeType &typeinfo, NodeDeclaration &r_declaration, const bNodeTree *ntree, const bNode *node)
 
static void assert_valid_panels_recursive (const NodeDeclaration &node_decl, const Span< const ItemDeclaration * > items, Vector< const SocketDeclaration * > &r_flat_inputs, Vector< const SocketDeclaration * > &r_flat_outputs)
 
template<typename Fn >
static bool socket_type_to_static_decl_type (const eNodeSocketDatatype socket_type, Fn &&fn)
 
std::unique_ptr< SocketDeclarationmake_declaration_for_socket_type (const eNodeSocketDatatype socket_type)
 
std::optional< ImplicitInputValueFnget_implicit_input_value_fn (const NodeDefaultInputType type)
 
bool socket_type_supports_default_input_type (const bke::bNodeSocketType &socket_type, const NodeDefaultInputType input_type)
 
const EnumPropertyItemenum_items_filter (const EnumPropertyItem *original_item_array, FunctionRef< bool(const EnumPropertyItem &item)> fn)
 
PropertyRNARNA_def_node_enum (StructRNA *srna, const char *identifier, const char *ui_name, const char *ui_description, const EnumPropertyItem *static_items, const EnumRNAAccessors accessors, std::optional< int > default_value, const EnumPropertyItemFunc item_func, const bool allow_animation)
 
PropertyRNARNA_def_node_boolean (StructRNA *srna, const char *identifier, const char *ui_name, const char *ui_description, const BooleanRNAAccessors accessors, std::optional< bool > default_value, bool allow_animation)
 
static void refresh_node_socket (bNodeTree &ntree, bNode &node, const SocketDeclaration &socket_decl, Vector< bNodeSocket * > &old_sockets, VectorSet< bNodeSocket * > &new_sockets, const bool hide_new_sockets)
 
static void refresh_node_panel (const PanelDeclaration &panel_decl, Vector< bNodePanelState > &old_panels, bNodePanelState &new_panel)
 
static const char * get_identifier_from_decl (const char *identifier_prefix, const bNodeSocket &socket, const Span< const SocketDeclaration * > socket_decls)
 
static const char * get_identifier_from_decl (const Span< const char * > identifier_prefixes, const bNodeSocket &socket, const Span< const SocketDeclaration * > socket_decls)
 
static const char * get_current_socket_identifier_for_future_socket (const bNode &node, const bNodeSocket &socket, const Span< const SocketDeclaration * > socket_decls)
 
static void do_forward_compat_versioning (bNode &node, const NodeDeclaration &node_decl)
 
static bool hide_new_group_input_sockets (const bNode &node)
 
static void refresh_node_sockets_and_panels (bNodeTree &ntree, bNode &node, const NodeDeclaration &node_decl, const bool do_id_user)
 
static void refresh_node (bNodeTree &ntree, bNode &node, blender::nodes::NodeDeclaration &node_decl, bool do_id_user)
 
void update_node_declaration_and_sockets (bNodeTree &ntree, bNode &node)
 
bool socket_type_supports_fields (const eNodeSocketDatatype socket_type)
 
bool socket_type_supports_grids (const eNodeSocketDatatype socket_type)
 
void search_link_ops_for_declarations (GatherLinkSearchOpParams &params, Span< SocketDeclaration * > declarations)
 
void search_link_ops_for_basic_node (GatherLinkSearchOpParams &params)
 
bool execute_multi_function_on_value_variant__volume_grid (const mf::MultiFunction &, const Span< bke::SocketValueVariant * >, const Span< bke::SocketValueVariant * >, std::string &r_error_message)
 
template<typename Callback >
bool try_dispatch_float_math_fl_to_fl (const int operation, Callback &&callback)
 
template<typename Callback >
bool try_dispatch_float_math_fl_fl_to_fl (const int operation, Callback &&callback)
 
template<typename Callback >
bool try_dispatch_float_math_fl_fl_fl_to_fl (const int operation, Callback &&callback)
 
template<typename Callback >
bool try_dispatch_float_math_fl3_fl3_to_fl3 (const NodeVectorMathOperation operation, Callback &&callback)
 
template<typename Callback >
bool try_dispatch_float_math_fl3_fl3_to_fl (const NodeVectorMathOperation operation, Callback &&callback)
 
template<typename Callback >
bool try_dispatch_float_math_fl3_fl3_fl3_to_fl3 (const NodeVectorMathOperation operation, Callback &&callback)
 
template<typename Callback >
bool try_dispatch_float_math_fl3_fl3_fl_to_fl3 (const NodeVectorMathOperation operation, Callback &&callback)
 
template<typename Callback >
bool try_dispatch_float_math_fl3_to_fl (const NodeVectorMathOperation operation, Callback &&callback)
 
template<typename Callback >
bool try_dispatch_float_math_fl3_fl_to_fl3 (const NodeVectorMathOperation operation, Callback &&callback)
 
template<typename Callback >
bool try_dispatch_float_math_fl3_to_fl3 (const NodeVectorMathOperation operation, Callback &&callback)
 

Variables

constexpr StringRef input_use_attribute_suffix = "_use_attribute"
 
constexpr StringRef input_attribute_name_suffix = "_attribute_name"
 

Typedef Documentation

◆ BundlePtr

◆ ClosurePtr

◆ CustomSocketDrawFn

Definition at line 192 of file NOD_node_declaration.hh.

◆ DrawNodeLayoutFn

Definition at line 470 of file NOD_node_declaration.hh.

◆ ImplicitInputValueFn

using blender::nodes::ImplicitInputValueFn = std::function<void(const bNode &node, void *r_value)>

Definition at line 692 of file NOD_node_declaration.hh.

◆ ItemDeclarationPtr

Definition at line 175 of file NOD_node_declaration.hh.

◆ JoinReferenceSetsCache

◆ PanelDeclarationPtr

Definition at line 581 of file NOD_node_declaration.hh.

◆ PropertiesVectorSet

Use a #VectorSet to store properties for constant time lookup, to avoid slowdown with many inputs.

Definition at line 45 of file NOD_geometry_nodes_execute.hh.

◆ ReferenceSetIndex

◆ SocketDeclarationPtr

Definition at line 468 of file NOD_node_declaration.hh.

Enumeration Type Documentation

◆ CompositorInputRealizationMode

An enum that maps to the compositor::InputRealizationMode.

Enumerator
None 
Transforms 
OperationDomain 

Definition at line 55 of file NOD_node_declaration.hh.

◆ InputSocketFieldType

Enumerator
None 

The input is required to be a single value.

IsSupported 

The input can be a field.

Implicit 

The input can be a field and is a field implicitly if nothing is connected.

Definition at line 31 of file NOD_node_declaration.hh.

◆ InputUsageHintType

In the general case, this is DynamicSocket. That means that to determine if a node group will use a particular input, it has to be partially executed.

In other cases, it's not necessary to look into the node group to determine if an input is necessary.

Enumerator
Never 

The input socket is never used.

DependsOnOutput 

The input socket is used when a subset of the outputs is used.

DynamicSocket 

Can't determine statically if the input is used, check the corresponding output socket.

Definition at line 317 of file NOD_geometry_nodes_lazy_function.hh.

◆ NodeWarningType

These values are also written to .blend files, so don't change them lightly.

Enumerator
Error 
Warning 
Info 

Definition at line 10 of file NOD_geometry_nodes_warning.hh.

◆ OutputSocketFieldType

Enumerator
None 

The output is always a single value.

FieldSource 

The output is always a field, independent of the inputs.

DependentField 

If any input is a field, this output will be a field as well.

PartiallyDependent 

If any of a subset of inputs is a field, this out will be a field as well. The subset is defined by the vector of indices.

Definition at line 40 of file NOD_node_declaration.hh.

Function Documentation

◆ add_attribute_search_button()

◆ add_attribute_search_or_value_buttons()

◆ add_eval_dependencies_from_node_data()

static void blender::nodes::add_eval_dependencies_from_node_data ( const bNodeTree & tree,
GeometryNodesEvalDependencies & deps )
static

◆ add_eval_dependencies_from_socket()

◆ add_layer_name_search_button()

◆ add_own_transform_dependencies()

◆ assert_valid_panels_recursive()

static void blender::nodes::assert_valid_panels_recursive ( const NodeDeclaration & node_decl,
const Span< const ItemDeclaration * > items,
Vector< const SocketDeclaration * > & r_flat_inputs,
Vector< const SocketDeclaration * > & r_flat_outputs )
static

◆ attribute_search_exec_fn()

static void blender::nodes::attribute_search_exec_fn ( bContext * C,
void * data_v,
void * item_v )
static

◆ attribute_search_update_fn()

◆ build_closure_zone_lazy_function()

LazyFunction & blender::nodes::build_closure_zone_lazy_function ( ResourceScope & scope,
const bNodeTree & btree,
const bke::bNodeTreeZone & zone,
ZoneBuildInfo & zone_info,
const ZoneBodyFunction & body_fn )

◆ build_evaluate_closure_node_lazy_function()

◆ build_foreach_geometry_element_zone_lazy_function()

LazyFunction & blender::nodes::build_foreach_geometry_element_zone_lazy_function ( ResourceScope & scope,
const bNodeTree & btree,
const bke::bNodeTreeZone & zone,
ZoneBuildInfo & zone_info,
const ZoneBodyFunction & body_fn )

◆ build_implicit_conversion_lazy_function()

◆ build_interface_socket_declaration()

static BaseSocketDeclarationBuilder & blender::nodes::build_interface_socket_declaration ( const bNodeTree & tree,
const bNodeTreeInterfaceSocket & io_socket,
const std::optional< StructureType > structure_type,
const eNodeSocketInOut in_out,
DeclarationListBuilder & b )
static

◆ build_node_declaration()

void blender::nodes::build_node_declaration ( const bke::bNodeType & typeinfo,
NodeDeclaration & r_declaration,
const bNodeTree * ntree,
const bNode * node )

◆ build_properties_vector_set()

◆ build_repeat_zone_lazy_function()

LazyFunction & blender::nodes::build_repeat_zone_lazy_function ( ResourceScope & scope,
const bNodeTree & btree,
const bke::bNodeTreeZone & zone,
ZoneBuildInfo & zone_info,
const ZoneBodyFunction & body_fn )

◆ check_tool_context_and_error()

◆ cmp_node_scene_time_declare()

static void blender::nodes::cmp_node_scene_time_declare ( NodeDeclarationBuilder & b)
static

Definition at line 14 of file node_composite_scene_time.cc.

References b.

Referenced by register_node_type_cmp_scene_time().

◆ compute_attributes_to_store()

◆ construct_socket_default_value()

◆ do_forward_compat_versioning()

static void blender::nodes::do_forward_compat_versioning ( bNode & node,
const NodeDeclaration & node_decl )
static

Try to update identifiers of sockets created in the future to match identifiers that exist now.

Definition at line 377 of file node_socket.cc.

References get_current_socket_identifier_for_future_socket(), blender::nodes::NodeDeclaration::inputs, LISTBASE_FOREACH, node, blender::nodes::NodeDeclaration::outputs, and STRNCPY().

Referenced by refresh_node_sockets_and_panels().

◆ draw_bake_button_row()

◆ draw_bake_data_block_list_item()

static void blender::nodes::draw_bake_data_block_list_item ( uiList * ,
const bContext * ,
uiLayout * layout,
PointerRNA * ,
PointerRNA * itemptr,
int ,
PointerRNA * ,
const char * ,
int ,
int  )
static

◆ draw_bake_panel()

static void blender::nodes::draw_bake_panel ( uiLayout * layout,
PointerRNA * modifier_ptr )
static

◆ draw_common_bake_settings()

◆ draw_data_blocks()

◆ draw_geometry_nodes_modifier_ui()

◆ draw_geometry_nodes_operator_redo_ui()

◆ draw_interface_panel_content()

◆ draw_manage_panel()

static void blender::nodes::draw_manage_panel ( const bContext * C,
uiLayout * layout,
PointerRNA * modifier_ptr,
NodesModifierData & nmd )
static

◆ draw_named_attributes_panel()

◆ draw_output_attributes_panel()

static void blender::nodes::draw_output_attributes_panel ( DrawGroupInputsContext & ctx,
uiLayout * layout )
static

◆ draw_property_for_output_socket()

◆ draw_property_for_socket()

◆ draw_warnings()

◆ ensure_geometry_nodes_lazy_function_graph()

const GeometryNodesLazyFunctionGraphInfo * blender::nodes::ensure_geometry_nodes_lazy_function_graph ( const bNodeTree & btree)

◆ enum_items_filter()

◆ evaluate_closure_eagerly()

void blender::nodes::evaluate_closure_eagerly ( const Closure & closure,
ClosureEagerEvalParams & params )

Set output data reference sets.

Set main outputs.

Definition at line 721 of file geometry_nodes_closure_zone.cc.

References blender::LinearAllocator< Allocator >::allocate(), blender::ResourceScope::allocator(), blender::LinearAllocator< Allocator >::construct(), blender::ResourceScope::construct(), construct_socket_default_value(), blender::CPPType::copy_construct(), blender::nodes::Closure::default_input_value(), blender::fn::lazy_function::LazyFunction::destruct_storage(), evaluate_closure_eagerly(), blender::fn::lazy_function::LazyFunction::execute(), blender::nodes::ClosureSignature::find_input_index(), blender::nodes::ClosureSignature::find_output_index(), blender::nodes::Closure::function(), blender::bke::bNodeSocketType::geometry_nodes_cpp_type, implicitly_convert_socket_value(), blender::Array< T, InlineBufferCapacity, Allocator >::index_range(), blender::nodes::Closure::indices(), indices, blender::fn::lazy_function::LazyFunction::init_storage(), blender::fn::lazy_function::LazyFunction::inputs(), blender::nodes::ClosureSignature::inputs, blender::CPPType::move_construct(), blender::fn::lazy_function::LazyFunction::outputs(), blender::nodes::ClosureSignature::outputs, params, blender::nodes::Closure::signature(), blender::nodes::ClosureEagerEvalParams::InputItem::type, blender::nodes::ClosureEagerEvalParams::OutputItem::type, blender::nodes::ClosureEagerEvalParams::InputItem::value, blender::nodes::ClosureEagerEvalParams::OutputItem::value, and value.

Referenced by evaluate_closure_eagerly().

◆ evaluate_closure_node_internally_linked_input()

◆ execute_geometry_nodes_on_geometry()

bke::GeometrySet blender::nodes::execute_geometry_nodes_on_geometry ( const bNodeTree & btree,
const PropertiesVectorSet & properties_set,
const ComputeContext & base_compute_context,
GeoNodesCallData & call_data,
bke::GeometrySet input_geometry )

Definition at line 863 of file geometry_nodes_execute.cc.

References blender::LinearAllocator< Allocator >::allocate(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::Array< T, InlineBufferCapacity, Allocator >::as_mutable_span(), BLI_assert, blender::nodes::GeoNodesUserData::call_data, blender::nodes::GeoNodesUserData::compute_context, blender::fn::lazy_function::LazyFunction::destruct_storage(), ensure_geometry_nodes_lazy_function_graph(), blender::fn::lazy_function::LazyFunction::execute(), blender::nodes::GeometryNodesGroupFunction::function, blender::nodes::GeometryNodesLazyFunctionGraphInfo::function, blender::bke::bNodeSocketType::geometry_nodes_cpp_type, blender::nodes::GeometryNodesGroupFunction::geometry_outputs, blender::Array< T, InlineBufferCapacity, Allocator >::index_range(), blender::fn::lazy_function::LazyFunction::init_storage(), initialize_group_input(), blender::nodes::GeometryNodesGroupFunction::input_usages, blender::fn::lazy_function::LazyFunction::inputs(), blender::nodes::GeometryNodesGroupFunction::inputs, blender::nodes::GeometryNodesGroupFunction::main, blender::nodes::GeometryNodesGroupFunction::output_usages, blender::fn::lazy_function::LazyFunction::outputs(), blender::nodes::GeometryNodesGroupFunction::outputs, ptr, blender::nodes::GeometryNodesGroupFunction::range, blender::nodes::GeometryNodesGroupFunction::references_to_propagate, blender::nodes::GeoNodesCallData::root_ntree, blender::Vector< T, InlineBufferCapacity, Allocator >::size(), SOCK_CUSTOM, SOCK_GEOMETRY, blender::fn::lazy_function::Context::storage, store_output_attributes(), timer, blender::bke::bNodeSocketType::type, blender::fn::lazy_function::Output::type, and value.

Referenced by blender::ed::geometry::run_node_group_exec().

◆ execute_multi_function_on_value_variant()

static bool blender::nodes::execute_multi_function_on_value_variant ( const MultiFunction & fn,
const std::shared_ptr< MultiFunction > & owned_fn,
const Span< SocketValueVariant * > input_values,
const Span< SocketValueVariant * > output_values,
GeoNodesUserData * user_data,
std::string & r_error_message )
staticnodiscard

◆ execute_multi_function_on_value_variant__field()

static void blender::nodes::execute_multi_function_on_value_variant__field ( const MultiFunction & fn,
const std::shared_ptr< MultiFunction > & owned_fn,
const Span< SocketValueVariant * > input_values,
const Span< SocketValueVariant * > output_values )
static

◆ execute_multi_function_on_value_variant__single()

◆ execute_multi_function_on_value_variant__volume_grid()

bool blender::nodes::execute_multi_function_on_value_variant__volume_grid ( const mf::MultiFunction & fn,
const Span< SocketValueVariant * > input_values,
const Span< SocketValueVariant * > output_values,
std::string & r_error_message )
nodiscard

Execute the multi-function with the given parameters. It is assumed that at least one of the inputs is a grid. Otherwise the topology of the output grids is not known.

Parameters
fnThe multi-function to call.
input_valuesAll input values which may be grids, fields or single values.
output_valuesWhere the output grids will be stored.
r_error_messageAn error message that is set if false is returned.
Returns
False if an error occurred. In this case the output values should not be used.

Definition at line 722 of file volume_grid_function_eval.cc.

References execute_multi_function_on_value_variant__volume_grid(), and TIP_.

Referenced by execute_multi_function_on_value_variant(), and execute_multi_function_on_value_variant__volume_grid().

◆ find_active_context_recursive()

static const DTreeContext * blender::nodes::find_active_context_recursive ( const DTreeContext * context)
static

◆ find_nested_node_id()

◆ find_output_attributes_to_store()

static MultiValueMap< bke::AttrDomain, OutputAttributeInfo > blender::nodes::find_output_attributes_to_store ( const bNodeTree & tree,
const PropertiesVectorSet & properties,
Span< GMutablePointer > output_values )
static

◆ find_panel_by_id()

static NodesModifierPanel * blender::nodes::find_panel_by_id ( NodesModifierData & nmd,
const int id )
static

◆ gather_geometry_nodes_eval_dependencies()

◆ gather_geometry_nodes_eval_dependencies_recursive()

GeometryNodesEvalDependencies blender::nodes::gather_geometry_nodes_eval_dependencies_recursive ( const bNodeTree & ntree)

Finds all evaluation dependencies for the given node. This does not include dependencies that are passed into the node group. It also may not contain all data-blocks referenced by the node tree if some of them can statically be detected to not be used by the evaluation.

Definition at line 236 of file geometry_nodes_dependencies.cc.

References gather_geometry_nodes_eval_dependencies_recursive_impl(), and blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup().

◆ gather_geometry_nodes_eval_dependencies_recursive_impl()

◆ gather_geometry_nodes_eval_dependencies_with_cache()

GeometryNodesEvalDependencies blender::nodes::gather_geometry_nodes_eval_dependencies_with_cache ( const bNodeTree & ntree)

Same as above, but assumes that dependencies are already cached on the referenced node groups.

Definition at line 212 of file geometry_nodes_dependencies.cc.

References gather_geometry_nodes_eval_dependencies(), and bNodeTree::runtime.

◆ get_bake_draw_context()

bool blender::nodes::get_bake_draw_context ( const bContext * C,
const bNode & node,
BakeDrawContext & r_ctx )
nodiscard

Definition at line 626 of file node_geo_bake.cc.

References blender::bke::bake::BakeNodeCache::bake, blender::bke::bake::SimulationNodeCache::bake, blender::nodes::BakeDrawContext::bake, blender::bke::bake::ModifierCache::bake_cache_by_id, NodesModifierBake::bake_mode, blender::nodes::BakeDrawContext::bake_rna, blender::nodes::BakeDrawContext::bake_still, blender::nodes::BakeDrawContext::bake_target, blender::bke::bake::Baked, blender::nodes::BakeDrawContext::baked_range, NodesModifierData::bakes, NodesModifierData::bakes_num, BLI_assert, blender::bke::bake::SimulationNodeCache::cache_status, CTX_data_scene(), CTX_wm_space_node(), ELEM, blender::ed::space_node::find_nested_node_id_in_root(), blender::nodes::BakeDrawContext::frame_range, blender::bke::bake::NodeBakeCache::frames, GEO_NODE_BAKE, GEO_NODE_SIMULATION_OUTPUT, blender::ed::space_node::get_modifier_for_node_editor(), blender::bke::bake::get_node_bake_frame_range(), blender::bke::bake::get_node_bake_target(), NodesModifierBake::id, Object::id, blender::nodes::BakeDrawContext::is_bakeable_in_current_context, blender::nodes::BakeDrawContext::is_baked, lock, blender::bke::bake::ModifierCache::mutex, blender::nodes::BakeDrawContext::nmd, blender::nodes::BakeDrawContext::node, node, NODES_MODIFIER_BAKE_MODE_STILL, blender::nodes::BakeDrawContext::object, RNA_pointer_create_discrete(), NodesModifierData::runtime, scene, blender::bke::bake::ModifierCache::simulation_cache_by_id, and blender::nodes::BakeDrawContext::snode.

Referenced by blender::nodes::node_geo_bake_cc::node_extra_info(), blender::nodes::node_geo_simulation_cc::sim_output_node::node_extra_info(), blender::nodes::node_geo_bake_cc::node_layout(), blender::nodes::node_geo_bake_cc::node_layout_ex(), and blender::nodes::node_geo_simulation_cc::node_layout_ex().

◆ get_bake_lazy_function()

std::unique_ptr< LazyFunction > blender::nodes::get_bake_lazy_function ( const bNode & node,
GeometryNodesLazyFunctionGraphInfo & lf_graph_info )

Definition at line 911 of file node_geo_bake.cc.

References BLI_assert, GEO_NODE_BAKE, and node.

◆ get_bake_state_string()

◆ get_baked_string()

◆ get_base_multi_function()

static const mf::MultiFunction * blender::nodes::get_base_multi_function ( const bNode & node)
static

◆ get_closest_in_bvhtree()

◆ get_compositor_operation()

static NodeOperation * blender::nodes::get_compositor_operation ( Context & context,
DNode node )
static

Definition at line 55 of file node_composite_scene_time.cc.

References node.

Referenced by register_node_type_cmp_scene_time().

◆ get_current_socket_identifier_for_future_socket()

static const char * blender::nodes::get_current_socket_identifier_for_future_socket ( const bNode & node,
const bNodeSocket & socket,
const Span< const SocketDeclaration * > socket_decls )
static

Currently, nodes that support different socket types have sockets for all supported types with different identifiers (e.g. Attribute, Attribute_001, Attribute_002, ...). In the future, we will hopefully have a better way to handle this that does not require all the sockets of different types to exist at the same time. Instead we want that there is only a single socket that can change its type while the identifier stays the same.

This function prepares us for that future. It returns the identifier that we use for a socket now based on the "base socket name" (e.g. Attribute) and its socket type. It allows us to change the socket identifiers in the future without breaking forward compatibility for the nodes handled here.

Definition at line 326 of file node_socket.cc.

References FN_NODE_COMPARE, FN_NODE_RANDOM_VALUE, get_identifier_from_decl(), bNodeSocket::identifier, node, SH_NODE_MAP_RANGE, SH_NODE_MIX, SOCK_VECTOR, STREQ, and bNodeSocket::type.

Referenced by do_forward_compat_versioning().

◆ get_default_id_getter()

static std::function< ID *(const bNode &node)> blender::nodes::get_default_id_getter ( const bNodeTreeInterface & tree_interface,
const bNodeTreeInterfaceSocket & io_socket )
static

◆ get_dot_cluster_for_context()

◆ get_float3_math_operation_info()

◆ get_float_compare_operation_info()

const FloatMathOperationInfo * blender::nodes::get_float_compare_operation_info ( const int operation)

◆ get_float_math_operation_info()

◆ get_foreach_attribute_propagation_target_domain()

static std::optional< AttrDomain > blender::nodes::get_foreach_attribute_propagation_target_domain ( const GeometryComponent::Type component_type)
static

◆ get_geometry_nodes_input_base_values()

void blender::nodes::get_geometry_nodes_input_base_values ( const bNodeTree & btree,
const PropertiesVectorSet & properties,
ResourceScope & scope,
MutableSpan< GPointer > r_values )

Get the "base" input values that are passed into geometry nodes. In this context, "base" means that the retrieved input types are #bNodeSocketType::base_cpp_type (e.g. float for float sockets). If the input value can't be represented as base value, null is returned instead (e.g. for attribute inputs).

Definition at line 1088 of file geometry_nodes_execute.cc.

References blender::ResourceScope::allocate_owned(), blender::bke::bNodeSocketType::base_cpp_type, BLI_assert, blender::MutableSpan< T >::fill(), blender::bke::bNodeSocketType::geometry_nodes_cpp_type, blender::CPPType::get(), blender::bke::SocketValueVariant::get_single_ptr(), id_property_type_matches_socket(), bNodeTreeInterfaceSocket::identifier, init_socket_cpp_value_from_property(), input_attribute_name_get(), is_layer_selection_field(), blender::bke::SocketValueVariant::is_single(), properties, blender::bke::bNodeSocketType::type, and blender::GPointer::type().

◆ get_group_input_compositor_operation()

compositor::NodeOperation * blender::nodes::get_group_input_compositor_operation ( compositor::Context & context,
DNode node )

Definition at line 132 of file node_composite_group_input.cc.

References node.

Referenced by register_node_type_group_input().

◆ get_identifier_from_decl() [1/2]

static const char * blender::nodes::get_identifier_from_decl ( const char * identifier_prefix,
const bNodeSocket & socket,
const Span< const SocketDeclaration * > socket_decls )
static

◆ get_identifier_from_decl() [2/2]

static const char * blender::nodes::get_identifier_from_decl ( const Span< const char * > identifier_prefixes,
const bNodeSocket & socket,
const Span< const SocketDeclaration * > socket_decls )
static

Definition at line 301 of file node_socket.cc.

References get_identifier_from_decl().

◆ get_implicit_input_value_fn()

◆ get_index_switch_node_lazy_function()

std::unique_ptr< LazyFunction > blender::nodes::get_index_switch_node_lazy_function ( const bNode & node,
GeometryNodesLazyFunctionGraphInfo & lf_graph_info )

Definition at line 431 of file node_geo_index_switch.cc.

References BLI_assert, GEO_NODE_INDEX_SWITCH, and node.

◆ get_init_socket_fn()

◆ get_menu_switch_node_lazy_function()

std::unique_ptr< LazyFunction > blender::nodes::get_menu_switch_node_lazy_function ( const bNode & node,
GeometryNodesLazyFunctionGraphInfo & lf_graph_info )

Definition at line 467 of file node_geo_menu_switch.cc.

References BLI_assert, GEO_NODE_MENU_SWITCH, and node.

◆ get_menu_switch_node_socket_usage_lazy_function()

std::unique_ptr< LazyFunction > blender::nodes::get_menu_switch_node_socket_usage_lazy_function ( const bNode & node)

Definition at line 475 of file node_geo_menu_switch.cc.

References BLI_assert, GEO_NODE_MENU_SWITCH, and node.

◆ get_modifier_data()

static NodesModifierData * blender::nodes::get_modifier_data ( Main & bmain,
const wmWindowManager & wm,
const ModifierSearchData & data )
static

◆ get_only_evaluated_id()

static const ID * blender::nodes::get_only_evaluated_id ( const Depsgraph & depsgraph,
const ID & id_orig )
static

◆ get_root_tree_log()

static geo_log::GeoTreeLog * blender::nodes::get_root_tree_log ( const NodesModifierData & nmd)
static

◆ get_simulation_input_lazy_function()

std::unique_ptr< LazyFunction > blender::nodes::get_simulation_input_lazy_function ( const bNodeTree & node_tree,
const bNode & node,
GeometryNodesLazyFunctionGraphInfo & own_lf_graph_info )

Definition at line 958 of file node_geo_simulation.cc.

References BLI_assert, GEO_NODE_SIMULATION_INPUT, and node.

◆ get_simulation_output_lazy_function()

std::unique_ptr< LazyFunction > blender::nodes::get_simulation_output_lazy_function ( const bNode & node,
GeometryNodesLazyFunctionGraphInfo & own_lf_graph_info )

Definition at line 969 of file node_geo_simulation.cc.

References BLI_assert, GEO_NODE_SIMULATION_OUTPUT, and node.

◆ get_socket_cpp_type() [1/2]

◆ get_socket_cpp_type() [2/2]

static const CPPType * blender::nodes::get_socket_cpp_type ( const bNodeSocket & socket)
static

Definition at line 81 of file geometry_nodes_lazy_function.cc.

References get_socket_cpp_type(), and bNodeSocket::typeinfo.

◆ get_socket_default_value()

◆ get_switch_node_lazy_function()

std::unique_ptr< LazyFunction > blender::nodes::get_switch_node_lazy_function ( const bNode & node)

Definition at line 289 of file node_geo_switch.cc.

References BLI_assert, GEO_NODE_SWITCH, and node.

◆ get_vector_type()

◆ get_warning_node_lazy_function()

std::unique_ptr< LazyFunction > blender::nodes::get_warning_node_lazy_function ( const bNode & node)

Definition at line 124 of file node_geo_warning.cc.

References BLI_assert, GEO_NODE_WARNING, and node.

◆ gizmo_is_used()

◆ grid_data_type_socket_items_filter_fn()

const EnumPropertyItem * blender::nodes::grid_data_type_socket_items_filter_fn ( bContext * ,
PointerRNA * ,
PropertyRNA * ,
bool * r_free )

◆ grid_socket_type_items_filter_fn()

◆ group_input_declare()

static void blender::nodes::group_input_declare ( NodeDeclarationBuilder & b)
static

◆ group_input_insert_link()

◆ group_output_declare()

static void blender::nodes::group_output_declare ( NodeDeclarationBuilder & b)
static

◆ group_output_insert_link()

◆ has_enabled_nodes_of_type()

static bool blender::nodes::has_enabled_nodes_of_type ( const bNodeTree & tree,
const blender::StringRefNull type_idname )
static

◆ has_output_attribute()

static bool blender::nodes::has_output_attribute ( const bNodeTree * tree)
static

◆ hide_new_group_input_sockets()

static bool blender::nodes::hide_new_group_input_sockets ( const bNode & node)
static

When the extension socket on group input nodes is hidden, we consider the socket visibility fixed and don't want to add newly created group inputs.

Definition at line 403 of file node_socket.cc.

References BLI_assert, and node.

Referenced by refresh_node_sockets_and_panels().

◆ id_name_or_value_prop()

static std::unique_ptr< IDProperty, bke::idprop::IDPropertyDeleter > blender::nodes::id_name_or_value_prop ( const StringRefNull identifier,
ID * id,
const ID_Type id_type,
const bool use_name_for_ids )
static

◆ id_property_create_from_socket()

std::unique_ptr< IDProperty, bke::idprop::IDPropertyDeleter > blender::nodes::id_property_create_from_socket ( const bNodeTreeInterfaceSocket & socket,
const nodes::StructureType structure_type,
const bool use_name_for_ids )

◆ id_property_int_update_enum_items()

◆ id_property_type_matches_socket()

bool blender::nodes::id_property_type_matches_socket ( const bNodeTreeInterfaceSocket & socket,
const IDProperty & property,
const bool use_name_for_ids )

◆ ignore_zone_bsocket()

static bool blender::nodes::ignore_zone_bsocket ( const bNodeSocket & bsocket)
static

◆ implicitly_convert_socket_value()

◆ init_socket_cpp_value_from_property()

◆ initialize_group_input()

◆ initialize_zone_wrapper()

void blender::nodes::initialize_zone_wrapper ( const bNodeTreeZone & zone,
ZoneBuildInfo & zone_info,
const ZoneBodyFunction & body_fn,
const bool expose_all_reference_sets,
Vector< lf::Input > & r_inputs,
Vector< lf::Output > & r_outputs )

◆ input_attribute_name_get()

◆ input_has_attribute_toggle()

bool blender::nodes::input_has_attribute_toggle ( const bNodeTree & node_tree,
const int socket_index )
Returns
Whether using an attribute to input values of this type is supported, and the node group's input for this socket accepts a field rather than just single values.

Definition at line 42 of file geometry_nodes_execute.cc.

References BLI_assert, ELEM, blender::nodes::FieldInferencingInterface::inputs, None, bNodeTree::runtime, SOCK_MENU, and blender::bke::bNodeSocketType::type.

Referenced by draw_property_for_socket(), and initialize_group_input().

◆ interface_panel_affects_output()

static bool blender::nodes::interface_panel_affects_output ( DrawGroupInputsContext & ctx,
const bNodeTreeInterfacePanel & panel )
static

◆ interface_panel_has_socket()

static bool blender::nodes::interface_panel_has_socket ( DrawGroupInputsContext & ctx,
const bNodeTreeInterfacePanel & interface_panel )
static

◆ layer_name_search_exec_fn()

static void blender::nodes::layer_name_search_exec_fn ( bContext * C,
void * data_v,
void * item_v )
static

◆ layer_name_search_update_fn()

◆ lazy_function_interface_from_node()

◆ make_anonymous_attribute_socket_inspection_string() [1/2]

◆ make_anonymous_attribute_socket_inspection_string() [2/2]

std::string blender::nodes::make_anonymous_attribute_socket_inspection_string ( StringRef node_name,
StringRef socket_name )

Definition at line 463 of file geometry_nodes_lazy_function.cc.

References TIP_.

◆ make_declaration_for_socket_type()

std::unique_ptr< SocketDeclaration > blender::nodes::make_declaration_for_socket_type ( const eNodeSocketDatatype socket_type)

Definition at line 376 of file node_declaration.cc.

References socket_type_to_static_decl_type().

◆ mix_baked_data_item()

◆ needs_scene_render_params()

static bool blender::nodes::needs_scene_render_params ( const bNodeTree & ntree)
static

Definition at line 170 of file geometry_nodes_dependencies.cc.

References node.

Referenced by gather_geometry_nodes_eval_dependencies().

◆ node_geo_exec_with_missing_openvdb()

◆ node_group_declare()

◆ node_group_declare_panel_recursive()

◆ node_math_build_multi_function()

◆ node_warning_type_icon()

int blender::nodes::node_warning_type_icon ( const NodeWarningType type)

◆ node_warning_type_severity()

int blender::nodes::node_warning_type_severity ( const NodeWarningType type)

Definition at line 24 of file geometry_nodes_warning.cc.

References BLI_assert_unreachable, Error, Info, and Warning.

◆ old_id_property_type_matches_socket_convert_to_new()

static bool blender::nodes::old_id_property_type_matches_socket_convert_to_new ( const bNodeTreeInterfaceSocket & socket,
const IDProperty & old_property,
IDProperty * new_property,
const bool use_name_for_ids )
static

◆ old_id_property_type_matches_socket_convert_to_new_float_vec()

static bool blender::nodes::old_id_property_type_matches_socket_convert_to_new_float_vec ( const IDProperty & old_property,
IDProperty * new_property,
const int len )
static

◆ old_id_property_type_matches_socket_convert_to_new_int()

static bool blender::nodes::old_id_property_type_matches_socket_convert_to_new_int ( const IDProperty & old_property,
IDProperty * new_property )
static

◆ old_id_property_type_matches_socket_convert_to_new_string()

static bool blender::nodes::old_id_property_type_matches_socket_convert_to_new_string ( const IDProperty & old_property,
IDProperty * new_property )
static

◆ refresh_node()

◆ refresh_node_panel()

◆ refresh_node_socket()

◆ refresh_node_sockets_and_panels()

◆ register_node_type_geo_group()

◆ report_from_multi_function()

void blender::nodes::report_from_multi_function ( const mf::Context & context,
NodeWarningType type,
std::string message )

Report an error from a multi-function evaluation within a Geometry Nodes evaluation.

NOTE: Currently, this the error is only actually reported under limited circumstances. It's still safe to call this function from any multi-function though.

Definition at line 1609 of file geometry_nodes_lazy_function.cc.

References blender::nodes::geo_eval_log::GeoTreeLogger::allocator, log, blender::bke::NodeComputeContext::node_id(), blender::nodes::geo_eval_log::GeoTreeLogger::node_warnings, blender::ComputeContext::parent(), and report_from_multi_function().

Referenced by blender::nodes::node_fn_format_string_cc::FormatStringMultiFunction::call(), and report_from_multi_function().

◆ reset_declaration()

static void blender::nodes::reset_declaration ( NodeDeclaration & declaration)
static

Definition at line 21 of file node_declaration.cc.

Referenced by build_node_declaration().

◆ RNA_def_node_boolean()

◆ RNA_def_node_enum()

PropertyRNA * blender::nodes::RNA_def_node_enum ( StructRNA * srna,
const char * identifier,
const char * ui_name,
const char * ui_description,
const EnumPropertyItem * static_items,
const EnumRNAAccessors accessors,
std::optional< int > default_value,
const EnumPropertyItemFunc item_func,
const bool allow_animation )

Definition at line 25 of file node_rna_define.cc.

References blender::nodes::EnumRNAAccessors::getter, NA_EDITED, NC_NODE, PROP_ANIMATABLE, PROP_ENUM, PROP_NONE, RNA_def_property(), RNA_def_property_clear_flag(), RNA_def_property_enum_default(), RNA_def_property_enum_funcs_runtime(), RNA_def_property_enum_items(), RNA_def_property_ui_text(), RNA_def_property_update_notifier(), RNA_def_property_update_runtime(), rna_Node_socket_update(), rna_Node_update(), and blender::nodes::EnumRNAAccessors::setter.

Referenced by blender::nodes::node_composite_relative_to_pixel_cc::node_rna(), blender::nodes::node_fn_align_euler_to_vector_cc::node_rna(), blender::nodes::node_fn_align_rotation_to_vector_cc::node_rna(), blender::nodes::node_fn_axes_to_rotation_cc::node_rna(), blender::nodes::node_fn_bit_math_cc::node_rna(), blender::nodes::node_fn_boolean_math_cc::node_rna(), blender::nodes::node_fn_combine_color_cc::node_rna(), blender::nodes::node_fn_compare_cc::node_rna(), blender::nodes::node_fn_hash_value_cc::node_rna(), blender::nodes::node_fn_integer_math_cc::node_rna(), blender::nodes::node_fn_match_string_cc::node_rna(), blender::nodes::node_fn_rotate_rotation_cc::node_rna(), blender::nodes::node_fn_separate_color_cc::node_rna(), blender::nodes::node_fn_value_to_string_cc::node_rna(), blender::nodes::node_geo_accumulate_field_cc::node_rna(), blender::nodes::node_geo_attribute_domain_size_cc::node_rna(), blender::nodes::node_geo_attribute_statistic_cc::node_rna(), blender::nodes::node_geo_blur_attribute_cc::node_rna(), blender::nodes::node_geo_boolean_cc::node_rna(), blender::nodes::node_geo_collection_info_cc::node_rna(), blender::nodes::node_geo_curve_fill_cc::node_rna(), blender::nodes::node_geo_curve_fillet_cc::node_rna(), blender::nodes::node_geo_curve_primitive_arc_cc::node_rna(), blender::nodes::node_geo_curve_primitive_bezier_segment_cc::node_rna(), blender::nodes::node_geo_curve_primitive_circle_cc::node_rna(), blender::nodes::node_geo_curve_primitive_line_cc::node_rna(), blender::nodes::node_geo_curve_primitive_quadrilateral_cc::node_rna(), blender::nodes::node_geo_curve_resample_cc::node_rna(), blender::nodes::node_geo_curve_spline_type_cc::node_rna(), blender::nodes::node_geo_curve_to_points_cc::node_rna(), blender::nodes::node_geo_curve_trim_cc::node_rna(), blender::nodes::node_geo_delete_geometry_cc::node_rna(), blender::nodes::node_geo_distribute_points_in_grid_cc::node_rna(), blender::nodes::node_geo_distribute_points_in_volume_cc::node_rna(), blender::nodes::node_geo_duplicate_elements_cc::node_rna(), blender::nodes::node_geo_evaluate_at_index_cc::node_rna(), blender::nodes::node_geo_evaluate_on_domain_cc::node_rna(), blender::nodes::node_geo_extrude_mesh_cc::node_rna(), blender::nodes::node_geo_field_average_cc::node_rna(), blender::nodes::node_geo_field_min_and_max_cc::node_rna(), blender::nodes::node_geo_field_variance_cc::node_rna(), blender::nodes::node_geo_get_named_grid_cc::node_rna(), blender::nodes::node_geo_gizmo_dial_cc::node_rna(), blender::nodes::node_geo_gizmo_linear_cc::node_rna(), blender::nodes::node_geo_grease_pencil_set_depth_mode::node_rna(), blender::nodes::node_geo_grid_info_cc::node_rna(), blender::nodes::node_geo_index_switch_cc::node_rna(), blender::nodes::node_geo_input_named_attribute_cc::node_rna(), blender::nodes::node_geo_menu_switch_cc::node_rna(), blender::nodes::node_geo_merge_by_distance_cc::node_rna(), blender::nodes::node_geo_merge_layers_cc::node_rna(), blender::nodes::node_geo_mesh_primitive_circle_cc::node_rna(), blender::nodes::node_geo_mesh_primitive_cone_cc::node_rna(), blender::nodes::node_geo_mesh_primitive_cylinder_cc::node_rna(), blender::nodes::node_geo_mesh_primitive_line_cc::node_rna(), blender::nodes::node_geo_mesh_to_curve_cc::node_rna(), blender::nodes::node_geo_mesh_to_points_cc::node_rna(), blender::nodes::node_geo_mesh_to_volume_cc::node_rna(), blender::nodes::node_geo_object_info_cc::node_rna(), blender::nodes::node_geo_points_to_volume_cc::node_rna(), blender::nodes::node_geo_proximity_cc::node_rna(), blender::nodes::node_geo_raycast_cc::node_rna(), blender::nodes::node_geo_remove_attribute_cc::node_rna(), blender::nodes::node_geo_sample_grid_cc::node_rna(), blender::nodes::node_geo_sample_grid_index_cc::node_rna(), blender::nodes::node_geo_sample_nearest_cc::node_rna(), blender::nodes::node_geo_sample_nearest_surface_cc::node_rna(), blender::nodes::node_geo_sample_uv_surface_cc::node_rna(), blender::nodes::node_geo_scale_elements_cc::node_rna(), blender::nodes::node_geo_sdf_grid_boolean_cc::node_rna(), blender::nodes::node_geo_separate_geometry_cc::node_rna(), blender::nodes::node_geo_set_curve_handles_cc::node_rna(), blender::nodes::node_geo_set_curve_normal_cc::node_rna(), blender::nodes::node_geo_set_grease_pencil_color_cc::node_rna(), blender::nodes::node_geo_set_mesh_normal_cc::node_rna(), blender::nodes::node_geo_set_shade_smooth_cc::node_rna(), blender::nodes::node_geo_sort_elements_cc::node_rna(), blender::nodes::node_geo_split_to_instances_cc::node_rna(), blender::nodes::node_geo_store_named_attribute_cc::node_rna(), blender::nodes::node_geo_store_named_grid_cc::node_rna(), blender::nodes::node_geo_subdivision_surface_cc::node_rna(), blender::nodes::node_geo_switch_cc::node_rna(), blender::nodes::node_geo_tool_active_element_cc::node_rna(), blender::nodes::node_geo_tool_set_selection_cc::node_rna(), blender::nodes::node_geo_transform_geometry_cc::node_rna(), blender::nodes::node_geo_triangulate_cc::node_rna(), blender::nodes::node_geo_uv_unwrap_cc::node_rna(), blender::nodes::node_geo_viewer_cc::node_rna(), blender::nodes::node_geo_volume_to_mesh_cc::node_rna(), and blender::nodes::node_geo_warning_cc::node_rna().

◆ search_link_ops_for_basic_node()

void blender::nodes::search_link_ops_for_basic_node ( GatherLinkSearchOpParams & params)

This callback can be used for a node type when a few things are true about its inputs. To avoid creating more boilerplate, it is the default callback for node types.

  • Either all declared sockets are visible in the default state of the node, OR the node's type's declaration has been extended with #make_available functions for those sockets.

If a node type does not meet these criteria, the function will do nothing in a release build. In a debug build, an assert will most likely be hit.

Note
For nodes with the deprecated blender::bke::bNodeSocketTemplate instead of a declaration, these criteria do not apply and the function just tries its best without asserting.

Definition at line 152 of file socket_search_link.cc.

References params, search_link_ops_for_declarations(), blender::nodes::NodeDeclaration::sockets(), and blender::bke::bNodeType::static_declaration.

Referenced by cmp_node_type_base(), common_node_type_base(), fn_node_type_base(), geo_node_type_base(), search_link_ops_for_tool_node(), search_link_ops_for_volume_grid_node(), and sh_node_type_base().

◆ search_link_ops_for_declarations()

void blender::nodes::search_link_ops_for_declarations ( GatherLinkSearchOpParams & params,
Span< SocketDeclaration * > declarations )

Definition at line 107 of file socket_search_link.cc.

References blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::nodes::SocketDeclaration::can_connect(), IFACE_, blender::Span< T >::index_range(), blender::Vector< T, InlineBufferCapacity, Allocator >::index_range(), blender::nodes::SocketDeclaration::is_default_link_socket, blender::nodes::SocketDeclaration::name, and params.

Referenced by blender::nodes::node_fn_random_value_cc::node_gather_link_search_ops(), blender::nodes::node_geo_accumulate_field_cc::node_gather_link_searches(), blender::nodes::node_geo_attribute_statistic_cc::node_gather_link_searches(), blender::nodes::node_geo_blur_attribute_cc::node_gather_link_searches(), blender::nodes::node_geo_curve_primitive_quadrilateral_cc::node_gather_link_searches(), blender::nodes::node_geo_curve_sample_cc::node_gather_link_searches(), blender::nodes::node_geo_curve_trim_cc::node_gather_link_searches(), blender::nodes::node_geo_field_average_cc::node_gather_link_searches(), blender::nodes::node_geo_field_min_and_max_cc::node_gather_link_searches(), blender::nodes::node_geo_field_variance_cc::node_gather_link_searches(), blender::nodes::node_geo_input_named_attribute_cc::node_gather_link_searches(), blender::nodes::node_geo_mesh_primitive_line_cc::node_gather_link_searches(), blender::nodes::node_geo_raycast_cc::node_gather_link_searches(), blender::nodes::node_geo_sample_index_cc::node_gather_link_searches(), blender::nodes::node_geo_sample_nearest_surface_cc::node_gather_link_searches(), blender::nodes::node_geo_sample_uv_surface_cc::node_gather_link_searches(), blender::nodes::node_geo_store_named_attribute_cc::node_gather_link_searches(), blender::nodes::node_shader_tex_sky_cc::node_gather_link_searches(), and search_link_ops_for_basic_node().

◆ search_link_ops_for_tool_node()

◆ search_link_ops_for_volume_grid_node()

◆ set_default_remaining_node_outputs()

◆ set_default_value_for_output_socket()

◆ should_log_socket_values_for_context()

◆ socket_type_has_attribute_toggle()

bool blender::nodes::socket_type_has_attribute_toggle ( eNodeSocketDatatype type)
Returns
Whether using an attribute to input values of this type is supported.

Definition at line 37 of file geometry_nodes_execute.cc.

References socket_type_supports_fields().

Referenced by draw_output_attributes_panel(), find_output_attributes_to_store(), has_output_attribute(), update_input_properties_from_node_tree(), and update_output_properties_from_node_tree().

◆ socket_type_supported_in_bundle()

◆ socket_type_supported_in_closure()

◆ socket_type_supports_default_input_type()

◆ socket_type_supports_fields()

bool blender::nodes::socket_type_supports_fields ( const eNodeSocketDatatype socket_type)

◆ socket_type_supports_grids()

bool blender::nodes::socket_type_supports_grids ( const eNodeSocketDatatype socket_type)

◆ socket_type_to_static_decl_type()

◆ store_computed_output_attributes()

◆ store_output_attributes()

◆ try_dispatch_float_math_fl3_fl3_fl3_to_fl3()

template<typename Callback >
bool blender::nodes::try_dispatch_float_math_fl3_fl3_fl3_to_fl3 ( const NodeVectorMathOperation operation,
Callback && callback )
inline

This is similar to try_dispatch_float_math_fl_to_fl, just with a different callback signature.

Definition at line 307 of file NOD_math_functions.hh.

References b, callback, faceforward, get_float3_math_operation_info(), info, NODE_VECTOR_MATH_FACEFORWARD, NODE_VECTOR_MATH_MULTIPLY_ADD, NODE_VECTOR_MATH_WRAP, and wrapf().

Referenced by blender::nodes::node_shader_vector_math_cc::get_multi_function().

◆ try_dispatch_float_math_fl3_fl3_fl_to_fl3()

template<typename Callback >
bool blender::nodes::try_dispatch_float_math_fl3_fl3_fl_to_fl3 ( const NodeVectorMathOperation operation,
Callback && callback )
inline

This is similar to try_dispatch_float_math_fl_to_fl, just with a different callback signature.

Definition at line 346 of file NOD_math_functions.hh.

References b, callback, get_float3_math_operation_info(), info, NODE_VECTOR_MATH_REFRACT, normalize, and refract().

Referenced by blender::nodes::node_shader_vector_math_cc::get_multi_function().

◆ try_dispatch_float_math_fl3_fl3_to_fl()

template<typename Callback >
bool blender::nodes::try_dispatch_float_math_fl3_fl3_to_fl ( const NodeVectorMathOperation operation,
Callback && callback )
inline

This is similar to try_dispatch_float_math_fl_to_fl, just with a different callback signature.

Definition at line 274 of file NOD_math_functions.hh.

References b, callback, distance(), dot(), get_float3_math_operation_info(), info, NODE_VECTOR_MATH_DISTANCE, and NODE_VECTOR_MATH_DOT_PRODUCT.

Referenced by blender::nodes::node_shader_vector_math_cc::get_multi_function().

◆ try_dispatch_float_math_fl3_fl3_to_fl3()

template<typename Callback >
bool blender::nodes::try_dispatch_float_math_fl3_fl3_to_fl3 ( const NodeVectorMathOperation operation,
Callback && callback )
inline

◆ try_dispatch_float_math_fl3_fl_to_fl3()

template<typename Callback >
bool blender::nodes::try_dispatch_float_math_fl3_fl_to_fl3 ( const NodeVectorMathOperation operation,
Callback && callback )
inline

This is similar to try_dispatch_float_math_fl_to_fl, just with a different callback signature.

Definition at line 409 of file NOD_math_functions.hh.

References b, callback, get_float3_math_operation_info(), info, and NODE_VECTOR_MATH_SCALE.

Referenced by blender::nodes::node_shader_vector_math_cc::get_multi_function().

◆ try_dispatch_float_math_fl3_to_fl()

template<typename Callback >
bool blender::nodes::try_dispatch_float_math_fl3_to_fl ( const NodeVectorMathOperation operation,
Callback && callback )
inline

This is similar to try_dispatch_float_math_fl_to_fl, just with a different callback signature.

Definition at line 378 of file NOD_math_functions.hh.

References callback, get_float3_math_operation_info(), in, info, length(), and NODE_VECTOR_MATH_LENGTH.

Referenced by blender::nodes::node_shader_vector_math_cc::get_multi_function().

◆ try_dispatch_float_math_fl3_to_fl3()

template<typename Callback >
bool blender::nodes::try_dispatch_float_math_fl3_to_fl3 ( const NodeVectorMathOperation operation,
Callback && callback )
inline

◆ try_dispatch_float_math_fl_fl_fl_to_fl()

template<typename Callback >
bool blender::nodes::try_dispatch_float_math_fl_fl_fl_to_fl ( const int operation,
Callback && callback )
inline

This is similar to try_dispatch_float_math_fl_to_fl, just with a different callback signature.

Definition at line 176 of file NOD_math_functions.hh.

References b, callback, fabsf, fmaxf, get_float_math_operation_info(), info, NODE_MATH_COMPARE, NODE_MATH_MULTIPLY_ADD, NODE_MATH_SMOOTH_MAX, NODE_MATH_SMOOTH_MIN, NODE_MATH_WRAP, smoothminf(), and wrapf().

Referenced by get_base_multi_function().

◆ try_dispatch_float_math_fl_fl_to_fl()

template<typename Callback >
bool blender::nodes::try_dispatch_float_math_fl_fl_to_fl ( const int operation,
Callback && callback )
inline

◆ try_dispatch_float_math_fl_to_fl()

template<typename Callback >
bool blender::nodes::try_dispatch_float_math_fl_to_fl ( const int operation,
Callback && callback )
inline

This calls the callback with two arguments:

  1. The math function that takes a float as input and outputs a new float.
  2. A #FloatMathOperationInfo struct reference. Returns true when the callback has been called, otherwise false.

The math function that is passed to the callback is actually a lambda function that is different for every operation. Therefore, if the callback is templated on the math function, it will get instantiated for every operation separately. This has two benefits:

  • The compiler can optimize the callback for every operation separately.
  • A static variable declared in the callback will be generated for every operation separately.

If separate instantiations are not desired, the callback can also take a function pointer with the following signature as input instead: float (*math_function)(float a).

Definition at line 53 of file NOD_math_functions.hh.

References atanf, callback, ceilf, compatible_signf(), cosf, coshf, DEG2RAD, expf, fabs(), floorf, get_float_math_operation_info(), info, NODE_MATH_ABSOLUTE, NODE_MATH_ARCCOSINE, NODE_MATH_ARCSINE, NODE_MATH_ARCTANGENT, NODE_MATH_CEIL, NODE_MATH_COSH, NODE_MATH_COSINE, NODE_MATH_DEGREES, NODE_MATH_EXPONENT, NODE_MATH_FLOOR, NODE_MATH_FRACTION, NODE_MATH_INV_SQRT, NODE_MATH_RADIANS, NODE_MATH_ROUND, NODE_MATH_SIGN, NODE_MATH_SINE, NODE_MATH_SINH, NODE_MATH_SQRT, NODE_MATH_TANGENT, NODE_MATH_TANH, NODE_MATH_TRUNC, RAD2DEG, safe_acosf(), safe_asinf(), safe_inverse_sqrtf(), safe_sqrtf(), sinf, sinhf, tanf, and tanhf.

Referenced by get_base_multi_function().

◆ update_input_properties_from_node_tree()

◆ update_node_declaration_and_sockets()

◆ update_output_properties_from_node_tree()

◆ zone_wrapper_input_name()

◆ zone_wrapper_output_name()

Variable Documentation

◆ input_attribute_name_suffix

◆ input_use_attribute_suffix

StringRef blender::nodes::input_use_attribute_suffix = "_use_attribute"
constexpr