Blender
V3.3
|
#include <stdio.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "DNA_node_types.h"
#include "BLI_ghash.h"
#include "BLI_listbase.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "GPU_texture.h"
#include "GPU_vertex_format.h"
#include "gpu_material_library.h"
#include "gpu_node_graph.h"
Go to the source code of this file.
Intermediate node graph for generating GLSL shaders.
Definition in file gpu_node_graph.c.
|
static |
Definition at line 349 of file gpu_node_graph.c.
References attr_prefix_get(), CD_ORCO, GPU_MAX_SAFE_ATTR_NAME, GPU_vertformat_safe_attr_name(), GPUMaterialAttribute::input_name, GPUMaterialAttribute::name, STRNCPY, and GPUMaterialAttribute::type.
Referenced by gpu_node_graph_add_attribute().
|
static |
Definition at line 331 of file gpu_node_graph.c.
References BLI_assert_msg, CD_AUTO_FROM_NAME, CD_HAIRLENGTH, CD_TANGENT, GPUMaterialAttribute::is_default_color, and GPUMaterialAttribute::type.
Referenced by attr_input_name().
GPUNodeLink* GPU_attribute | ( | GPUMaterial * | mat, |
const eCustomDataType | type, | ||
const char * | name | ||
) |
Definition at line 475 of file gpu_node_graph.c.
References GPUNodeLink::attr, CD_ORCO, GPU_constant(), GPU_material_flag_set(), gpu_material_node_graph(), GPU_MATFLAG_OBJECT_INFO, GPU_MAX_CONSTANT_DATA, gpu_node_graph_add_attribute(), GPU_NODE_LINK_ATTR, gpu_node_link_create(), graph, GPUNodeLink::link_type, NULL, and type.
Referenced by GPU_attribute_with_default(), blender::nodes::node_shader_normal_map_cc::gpu_shader_normal_map(), blender::nodes::node_shader_vector_displacement_cc::gpu_shader_vector_displacement(), blender::nodes::node_shader_attribute_cc::node_shader_gpu_attribute(), blender::nodes::node_shader_bsdf_principled_cc::node_shader_gpu_bsdf_principled(), node_shader_gpu_default_tex_coord(), blender::nodes::node_shader_geometry_cc::node_shader_gpu_geometry(), blender::nodes::node_shader_hair_info_cc::node_shader_gpu_hair_info(), blender::nodes::node_shader_tangent_cc::node_shader_gpu_tangent(), blender::nodes::node_shader_tex_coord_cc::node_shader_gpu_tex_coord(), blender::nodes::node_shader_tex_image_cc::node_shader_gpu_tex_image(), blender::nodes::node_shader_uvmap_cc::node_shader_gpu_uvmap(), blender::nodes::node_shader_vertex_color_cc::node_shader_gpu_vertex_color(), blender::nodes::node_shader_volume_info_cc::node_shader_gpu_volume_info(), and blender::nodes::node_shader_volume_principled_cc::node_shader_gpu_volume_principled().
GPUNodeLink* GPU_attribute_default_color | ( | GPUMaterial * | mat | ) |
Add a GPU attribute that refers to the default color attribute on a geometry. The name, type, and domain are unknown and do not depend on the material.
Definition at line 497 of file gpu_node_graph.c.
References GPUNodeLink::attr, CD_AUTO_FROM_NAME, GPU_constant(), gpu_material_node_graph(), GPU_MAX_CONSTANT_DATA, gpu_node_graph_add_attribute(), GPU_NODE_LINK_ATTR, gpu_node_link_create(), graph, GPUMaterialAttribute::is_default_color, GPUNodeLink::link_type, and NULL.
Referenced by blender::nodes::node_shader_vertex_color_cc::node_shader_gpu_vertex_color().
GPUNodeLink* GPU_attribute_with_default | ( | GPUMaterial * | mat, |
const eCustomDataType | type, | ||
const char * | name, | ||
eGPUDefaultValue | default_value | ||
) |
Definition at line 512 of file gpu_node_graph.c.
References GPUNodeLink::attr, GPUMaterialAttribute::default_value, GPU_attribute(), GPU_NODE_LINK_ATTR, GPUNodeLink::link_type, and type.
Referenced by blender::nodes::node_shader_volume_principled_cc::node_shader_gpu_volume_principled().
GPUNodeLink* GPU_color_band | ( | GPUMaterial * | mat, |
int | size, | ||
float * | pixels, | ||
float * | row | ||
) |
Definition at line 601 of file gpu_node_graph.c.
References gpu_material_node_graph(), gpu_material_ramp_texture_row_set(), gpu_node_graph_add_texture(), GPU_NODE_LINK_COLORBAND, gpu_node_link_create(), GPU_SAMPLER_MAX, graph, GPUNodeLink::link_type, MEM_freeN, NULL, size(), and GPUNodeLink::texture.
Referenced by blender::nodes::node_shader_curves_cc::gpu_shader_curve_float(), blender::nodes::node_shader_curves_cc::gpu_shader_curve_rgb(), blender::nodes::node_shader_curves_cc::gpu_shader_curve_vec(), blender::nodes::node_shader_color_ramp_cc::gpu_shader_valtorgb(), blender::nodes::node_shader_blackbody_cc::node_shader_gpu_blackbody(), blender::nodes::node_shader_volume_principled_cc::node_shader_gpu_volume_principled(), and blender::nodes::node_shader_wavelength_cc::node_shader_gpu_wavelength().
GPUNodeLink* GPU_constant | ( | const float * | num | ) |
Definition at line 541 of file gpu_node_graph.c.
References GPUNodeLink::data, GPU_NODE_LINK_CONSTANT, gpu_node_link_create(), and GPUNodeLink::link_type.
Referenced by GPU_attribute(), GPU_attribute_default_color(), gpu_node_input_socket(), blender::nodes::node_shader_bump_cc::gpu_shader_bump(), blender::nodes::node_shader_curves_cc::gpu_shader_curve_float(), blender::nodes::node_shader_curves_cc::gpu_shader_curve_rgb(), blender::nodes::node_shader_curves_cc::gpu_shader_curve_vec(), blender::nodes::node_shader_map_range_cc::gpu_shader_map_range(), blender::nodes::node_shader_math_cc::gpu_shader_math(), blender::nodes::node_shader_mix_rgb_cc::gpu_shader_mix_rgb(), blender::nodes::node_shader_normal_map_cc::gpu_shader_normal_map(), blender::nodes::node_shader_color_ramp_cc::gpu_shader_valtorgb(), blender::nodes::node_shader_vector_transform_cc::gpu_shader_vect_transform(), blender::nodes::node_shader_vector_rotate_cc::gpu_shader_vector_rotate(), GPU_uniform_attribute(), blender::nodes::node_shader_ambient_occlusion_cc::node_shader_gpu_ambient_occlusion(), blender::nodes::node_shader_blackbody_cc::node_shader_gpu_blackbody(), blender::nodes::node_shader_bsdf_anisotropic_cc::node_shader_gpu_bsdf_anisotropic(), blender::nodes::node_shader_bsdf_glass_cc::node_shader_gpu_bsdf_glass(), blender::nodes::node_shader_bsdf_glossy_cc::node_shader_gpu_bsdf_glossy(), blender::nodes::node_shader_bsdf_principled_cc::node_shader_gpu_bsdf_principled(), blender::nodes::node_shader_eevee_specular_cc::node_shader_gpu_eevee_specular(), blender::nodes::node_shader_geometry_cc::node_shader_gpu_geometry(), blender::nodes::node_shader_hair_info_cc::node_shader_gpu_hair_info(), blender::nodes::node_shader_object_info_cc::node_shader_gpu_object_info(), blender::nodes::node_shader_output_aov_cc::node_shader_gpu_output_aov(), blender::nodes::node_shader_tex_brick_cc::node_shader_gpu_tex_brick(), blender::nodes::node_shader_tex_coord_cc::node_shader_gpu_tex_coord(), blender::nodes::node_shader_tex_gradient_cc::node_shader_gpu_tex_gradient(), blender::nodes::node_shader_tex_magic_cc::node_shader_gpu_tex_magic(), blender::nodes::node_shader_tex_voronoi_cc::node_shader_gpu_tex_voronoi(), blender::nodes::node_shader_tex_wave_cc::node_shader_gpu_tex_wave(), blender::nodes::node_shader_volume_principled_cc::node_shader_gpu_volume_principled(), and blender::nodes::node_shader_wavelength_cc::node_shader_gpu_wavelength().
GPUNodeLink* GPU_differentiate_float_function | ( | const char * | function_name | ) |
Create an implementation defined differential calculation of a float function. The given function should return a float. The result will be a vec2 containing dFdx and dFdy result of that function.
Definition at line 557 of file gpu_node_graph.c.
References GPUNodeLink::function_name, gpu_node_link_create(), GPU_NODE_LINK_DIFFERENTIATE_FLOAT_FN, and GPUNodeLink::link_type.
Referenced by blender::nodes::node_shader_bump_cc::gpu_shader_bump().
GPUNodeLink* GPU_image | ( | GPUMaterial * | mat, |
Image * | ima, | ||
ImageUser * | iuser, | ||
eGPUSamplerState | sampler_state | ||
) |
Definition at line 565 of file gpu_node_graph.c.
References gpu_material_node_graph(), gpu_node_graph_add_texture(), gpu_node_link_create(), GPU_NODE_LINK_IMAGE, graph, GPUNodeLink::link_type, NULL, and GPUNodeLink::texture.
Referenced by blender::nodes::node_shader_tex_environment_cc::node_shader_gpu_tex_environment(), and blender::nodes::node_shader_tex_image_cc::node_shader_gpu_tex_image().
GPUNodeLink* GPU_image_tiled | ( | GPUMaterial * | mat, |
Image * | ima, | ||
ImageUser * | iuser, | ||
eGPUSamplerState | sampler_state | ||
) |
Definition at line 578 of file gpu_node_graph.c.
References gpu_material_node_graph(), gpu_node_graph_add_texture(), gpu_node_link_create(), GPU_NODE_LINK_IMAGE_TILED, graph, GPUNodeLink::link_type, NULL, and GPUNodeLink::texture.
Referenced by blender::nodes::node_shader_tex_image_cc::node_shader_gpu_tex_image().
GPUNodeLink* GPU_image_tiled_mapping | ( | GPUMaterial * | mat, |
Image * | ima, | ||
ImageUser * | iuser | ||
) |
Definition at line 591 of file gpu_node_graph.c.
References gpu_material_node_graph(), gpu_node_graph_add_texture(), gpu_node_link_create(), GPU_NODE_LINK_IMAGE_TILED_MAPPING, GPU_SAMPLER_MAX, graph, GPUNodeLink::link_type, NULL, and GPUNodeLink::texture.
Referenced by blender::nodes::node_shader_tex_image_cc::node_shader_gpu_tex_image().
Definition at line 748 of file gpu_node_graph.c.
References BLI_freelistN(), ELEM, gpu_node_link_free(), GPU_SOURCE_ATTR, GPU_SOURCE_TEX, GPU_SOURCE_TEX_TILED_MAPPING, GPU_SOURCE_UNIFORM_ATTR, input, and inputs.
Referenced by gpu_node_free().
bool GPU_link | ( | GPUMaterial * | mat, |
const char * | name, | ||
... | |||
) |
Definition at line 616 of file gpu_node_graph.c.
References BLI_addtail(), FUNCTION_QUAL_OUT, gpu_material_library_use_function(), gpu_material_node_graph(), gpu_node_create(), gpu_node_input_link(), gpu_node_output(), graph, node, and params.
Referenced by blender::nodes::node_shader_volume_principled_cc::attribute_post_process(), GPU_material_split_sub_function(), blender::nodes::node_shader_bevel_cc::gpu_shader_bevel(), blender::nodes::node_shader_bump_cc::gpu_shader_bump(), blender::nodes::node_shader_displacement_cc::gpu_shader_displacement(), blender::nodes::node_shader_map_range_cc::gpu_shader_map_range(), blender::nodes::node_shader_math_cc::gpu_shader_math(), blender::nodes::node_shader_mix_rgb_cc::gpu_shader_mix_rgb(), blender::nodes::node_shader_normal_map_cc::gpu_shader_normal_map(), blender::nodes::node_shader_vector_transform_cc::gpu_shader_vect_transform(), gpu_uniformbuffer_link(), blender::nodes::node_shader_ambient_occlusion_cc::node_shader_gpu_ambient_occlusion(), blender::nodes::node_shader_attribute_cc::node_shader_gpu_attribute(), blender::nodes::node_shader_bsdf_anisotropic_cc::node_shader_gpu_bsdf_anisotropic(), blender::nodes::node_shader_bsdf_diffuse_cc::node_shader_gpu_bsdf_diffuse(), blender::nodes::node_shader_bsdf_glass_cc::node_shader_gpu_bsdf_glass(), blender::nodes::node_shader_bsdf_glossy_cc::node_shader_gpu_bsdf_glossy(), blender::nodes::node_shader_bsdf_principled_cc::node_shader_gpu_bsdf_principled(), blender::nodes::node_shader_bsdf_refraction_cc::node_shader_gpu_bsdf_refraction(), blender::nodes::node_shader_bsdf_toon_cc::node_shader_gpu_bsdf_toon(), blender::nodes::node_shader_bsdf_translucent_cc::node_shader_gpu_bsdf_translucent(), blender::nodes::node_shader_bsdf_velvet_cc::node_shader_gpu_bsdf_velvet(), node_shader_gpu_bump_tex_coord(), blender::nodes::node_shader_eevee_specular_cc::node_shader_gpu_eevee_specular(), blender::nodes::node_shader_fresnel_cc::node_shader_gpu_fresnel(), blender::nodes::node_shader_geometry_cc::node_shader_gpu_geometry(), blender::nodes::node_shader_layer_weight_cc::node_shader_gpu_layer_weight(), blender::nodes::node_shader_output_light_cc::node_shader_gpu_output_light(), blender::nodes::node_shader_output_material_cc::node_shader_gpu_output_material(), blender::nodes::node_shader_output_world_cc::node_shader_gpu_output_world(), blender::nodes::node_shader_subsurface_scattering_cc::node_shader_gpu_subsurface_scattering(), blender::nodes::node_shader_tangent_cc::node_shader_gpu_tangent(), blender::nodes::node_shader_tex_coord_cc::node_shader_gpu_tex_coord(), blender::nodes::node_shader_tex_environment_cc::node_shader_gpu_tex_environment(), blender::nodes::node_shader_tex_image_cc::node_shader_gpu_tex_image(), node_shader_gpu_tex_mapping(), and blender::nodes::node_shader_volume_info_cc::node_shader_gpu_volume_info().
|
static |
Definition at line 56 of file gpu_node_graph.c.
References MEM_callocN, and node.
Referenced by GPU_link(), and gpu_stack_link_v().
Definition at line 771 of file gpu_node_graph.c.
References BLI_freelistN(), gpu_inputs_free(), gpu_node_link_free(), MEM_freeN, node, NULL, and output.
Referenced by gpu_node_graph_free_nodes(), and gpu_node_graph_prune_unused().
|
static |
Add a new varying attribute of given type and name. Returns NULL if out of slots.
Definition at line 367 of file gpu_node_graph.c.
References attr_input_name(), BLI_addtail(), graph, GPUMaterialAttribute::id, GPUMaterialAttribute::is_default_color, MEM_callocN, GPUMaterialAttribute::name, GPUMaterialAttribute::next, NULL, STREQ, STRNCPY, type, GPUMaterialAttribute::type, and GPUMaterialAttribute::users.
Referenced by GPU_attribute(), and GPU_attribute_default_color().
|
static |
Definition at line 433 of file gpu_node_graph.c.
References BLI_addtail(), BLI_snprintf(), ELEM, GPU_NODE_LINK_IMAGE_TILED, GPU_NODE_LINK_IMAGE_TILED_MAPPING, graph, Tex::ima, Tex::iuser, MEM_callocN, NULL, and tex.
Referenced by GPU_color_band(), GPU_image(), GPU_image_tiled(), and GPU_image_tiled_mapping().
|
static |
Add a new uniform attribute of given type and name. Returns NULL if out of slots.
Definition at line 402 of file gpu_node_graph.c.
References BLI_addtail(), GPUUniformAttrList::count, ListBase::first, GPU_MAX_UNIFORM_ATTR, graph, GPUUniformAttr::id, GPUUniformAttrList::list, MEM_callocN, GPUUniformAttr::name, GPUUniformAttr::next, NULL, STREQ, STRNCPY, GPUUniformAttr::use_dupli, and GPUUniformAttr::users.
Referenced by GPU_uniform_attribute().
void gpu_node_graph_finalize_uniform_attrs | ( | GPUNodeGraph * | graph | ) |
Definition at line 306 of file gpu_node_graph.c.
References BLI_assert, BLI_ghashutil_strhash_p(), BLI_ghashutil_uinthash(), BLI_listbase_count(), BLI_listbase_sort(), GPUUniformAttrList::count, graph, GPUUniformAttrList::hash_code, GPUUniformAttrList::list, LISTBASE_FOREACH, blender::threading::enumerable_thread_specific_utils::next_id, and uniform_attr_sort_cmp().
Referenced by GPU_generate_pass().
void gpu_node_graph_free | ( | GPUNodeGraph * | graph | ) |
Free both node graph and requested attributes and textures.
Definition at line 802 of file gpu_node_graph.c.
References BLI_freelistN(), BLI_gset_free(), gpu_node_graph_free_nodes(), GPU_uniform_attr_list_free(), graph, and NULL.
Referenced by GPU_material_compile(), gpu_material_free_single(), and GPU_material_from_nodetree().
void gpu_node_graph_free_nodes | ( | GPUNodeGraph * | graph | ) |
Free intermediate node graph.
Definition at line 788 of file gpu_node_graph.c.
References BLI_pophead(), gpu_node_free(), graph, node, and NULL.
Referenced by GPU_material_compile(), GPU_material_from_nodetree(), and gpu_node_graph_free().
void gpu_node_graph_prune_unused | ( | GPUNodeGraph * | graph | ) |
Definition at line 841 of file gpu_node_graph.c.
References BLI_freelinkN(), BLI_remlink(), GPUUniformAttrList::count, gpu_node_free(), GPU_NODE_TAG_AOV, GPU_NODE_TAG_DISPLACEMENT, GPU_NODE_TAG_FUNCTION, GPU_NODE_TAG_NONE, GPU_NODE_TAG_SURFACE, GPU_NODE_TAG_THICKNESS, GPU_NODE_TAG_VOLUME, gpu_nodes_tag(), graph, GPUUniformAttrList::list, LISTBASE_FOREACH, LISTBASE_FOREACH_MUTABLE, next, node, NULL, and tex.
Referenced by GPU_generate_pass().
|
static |
Definition at line 65 of file gpu_node_graph.c.
References GPUNodeLink::attr, BLI_addtail(), CLAMP_MIN, GPUNodeLink::data, ELEM, ListBase::first, GPUNodeLink::function_name, GPU_CLOSURE, GPU_NODE_LINK_ATTR, GPU_NODE_LINK_COLORBAND, GPU_NODE_LINK_CONSTANT, GPU_NODE_LINK_DIFFERENTIATE_FLOAT_FN, GPU_NODE_LINK_IMAGE, GPU_NODE_LINK_IMAGE_TILED, GPU_NODE_LINK_IMAGE_TILED_MAPPING, GPU_NODE_LINK_OUTPUT, GPU_NODE_LINK_UNIFORM, GPU_NODE_LINK_UNIFORM_ATTR, GPU_SOURCE_ATTR, GPU_SOURCE_CONSTANT, GPU_SOURCE_FUNCTION_CALL, GPU_SOURCE_OUTPUT, GPU_SOURCE_STRUCT, GPU_SOURCE_TEX, GPU_SOURCE_TEX_TILED_MAPPING, GPU_SOURCE_UNIFORM, GPU_SOURCE_UNIFORM_ATTR, input, GPUNode::inputs, GPUNodeLink::link_type, MEM_callocN, MEM_dupallocN, MEM_freeN, GPUNode::name, node, GPUOutput::node, GPUNodeLink::output, SNPRINTF, STR_ELEM, GPUNodeLink::texture, type, GPUNodeLink::uniform_attr, and GPUNodeLink::users.
Referenced by GPU_link(), gpu_node_input_socket(), and gpu_stack_link_v().
|
static |
Definition at line 213 of file gpu_node_graph.c.
References GPU_constant(), gpu_node_input_link(), gpu_uniformbuffer_link(), GPUNodeStack::link, material, node, NULL, SOCK_IN, GPUNodeStack::type, and GPUNodeStack::vec.
Referenced by gpu_stack_link_v().
|
static |
Definition at line 30 of file gpu_node_graph.c.
References MEM_callocN, and GPUNodeLink::users.
Referenced by GPU_attribute(), GPU_attribute_default_color(), GPU_color_band(), GPU_constant(), GPU_differentiate_float_function(), GPU_image(), GPU_image_tiled(), GPU_image_tiled_mapping(), gpu_node_output(), GPU_uniform(), and GPU_uniform_attribute().
|
static |
Definition at line 38 of file gpu_node_graph.c.
References GPUOutput::link, MEM_freeN, NULL, GPUNodeLink::output, and GPUNodeLink::users.
Referenced by gpu_inputs_free(), and gpu_node_free().
|
static |
Definition at line 228 of file gpu_node_graph.c.
References BLI_addtail(), gpu_node_link_create(), GPU_NODE_LINK_OUTPUT, MEM_callocN, node, output, and type.
Referenced by GPU_link(), and gpu_stack_link_v().
|
static |
Definition at line 820 of file gpu_node_graph.c.
References input, LISTBASE_FOREACH, node, GPUOutput::node, and GPUNodeLink::output.
Referenced by gpu_node_graph_prune_unused().
bool GPU_stack_link | ( | GPUMaterial * | material, |
bNode * | bnode, | ||
const char * | name, | ||
GPUNodeStack * | in, | ||
GPUNodeStack * | out, | ||
... | |||
) |
Definition at line 723 of file gpu_node_graph.c.
References gpu_stack_link_v(), material, usdtokens::out(), and params.
Referenced by blender::nodes::node_shader_bevel_cc::gpu_shader_bevel(), blender::nodes::node_shader_brightness_cc::gpu_shader_brightcontrast(), blender::nodes::node_shader_bump_cc::gpu_shader_bump(), blender::nodes::node_shader_camera_cc::gpu_shader_camera(), blender::nodes::node_shader_clamp_cc::gpu_shader_clamp(), blender::nodes::node_shader_combine_color_cc::gpu_shader_combcolor(), blender::nodes::node_shader_sepcomb_hsv_cc::gpu_shader_combhsv(), blender::nodes::node_shader_sepcomb_rgb_cc::gpu_shader_combrgb(), blender::nodes::node_shader_sepcomb_xyz_cc::gpu_shader_combxyz(), blender::nodes::node_shader_curves_cc::gpu_shader_curve_float(), blender::nodes::node_shader_curves_cc::gpu_shader_curve_rgb(), blender::nodes::node_shader_curves_cc::gpu_shader_curve_vec(), blender::nodes::node_shader_displacement_cc::gpu_shader_displacement(), blender::nodes::node_shader_hueSatVal_cc::gpu_shader_hue_sat(), blender::nodes::node_shader_invert_cc::gpu_shader_invert(), blender::nodes::node_shader_map_range_cc::gpu_shader_map_range(), blender::nodes::node_shader_mapping_cc::gpu_shader_mapping(), blender::nodes::node_shader_math_cc::gpu_shader_math(), blender::nodes::node_shader_mix_rgb_cc::gpu_shader_mix_rgb(), blender::nodes::node_shader_normal_cc::gpu_shader_normal(), blender::nodes::node_shader_particle_info_cc::gpu_shader_particle_info(), blender::nodes::node_shader_holdout_cc::gpu_shader_rgb(), blender::nodes::node_shader_rgb_cc::gpu_shader_rgb(), blender::nodes::node_shader_rgb_to_bw_cc::gpu_shader_rgbtobw(), blender::nodes::node_shader_separate_color_cc::gpu_shader_sepcolor(), blender::nodes::node_shader_sepcomb_hsv_cc::gpu_shader_sephsv(), blender::nodes::node_shader_sepcomb_rgb_cc::gpu_shader_seprgb(), blender::nodes::node_shader_sepcomb_xyz_cc::gpu_shader_sepxyz(), blender::nodes::node_shader_squeeze_cc::gpu_shader_squeeze(), blender::nodes::node_shader_tex_white_noise_cc::gpu_shader_tex_white_noise(), blender::nodes::node_shader_color_ramp_cc::gpu_shader_valtorgb(), blender::nodes::node_shader_value_cc::gpu_shader_value(), blender::nodes::node_shader_vector_displacement_cc::gpu_shader_vector_displacement(), blender::nodes::node_shader_vector_math_cc::gpu_shader_vector_math(), blender::nodes::node_shader_vector_rotate_cc::gpu_shader_vector_rotate(), blender::nodes::node_shader_add_shader_cc::node_shader_gpu_add_shader(), blender::nodes::node_shader_ambient_occlusion_cc::node_shader_gpu_ambient_occlusion(), blender::nodes::node_shader_attribute_cc::node_shader_gpu_attribute(), blender::nodes::node_shader_background_cc::node_shader_gpu_background(), blender::nodes::node_shader_blackbody_cc::node_shader_gpu_blackbody(), blender::nodes::node_shader_bsdf_anisotropic_cc::node_shader_gpu_bsdf_anisotropic(), blender::nodes::node_shader_bsdf_diffuse_cc::node_shader_gpu_bsdf_diffuse(), blender::nodes::node_shader_bsdf_glass_cc::node_shader_gpu_bsdf_glass(), blender::nodes::node_shader_bsdf_glossy_cc::node_shader_gpu_bsdf_glossy(), blender::nodes::node_shader_bsdf_hair_cc::node_shader_gpu_bsdf_hair(), blender::nodes::node_shader_bsdf_principled_cc::node_shader_gpu_bsdf_principled(), blender::nodes::node_shader_bsdf_refraction_cc::node_shader_gpu_bsdf_refraction(), blender::nodes::node_shader_bsdf_toon_cc::node_shader_gpu_bsdf_toon(), blender::nodes::node_shader_bsdf_translucent_cc::node_shader_gpu_bsdf_translucent(), blender::nodes::node_shader_bsdf_transparent_cc::node_shader_gpu_bsdf_transparent(), blender::nodes::node_shader_bsdf_velvet_cc::node_shader_gpu_bsdf_velvet(), blender::nodes::node_shader_eevee_specular_cc::node_shader_gpu_eevee_specular(), blender::nodes::node_shader_emission_cc::node_shader_gpu_emission(), blender::nodes::node_shader_fresnel_cc::node_shader_gpu_fresnel(), blender::nodes::node_shader_gamma_cc::node_shader_gpu_gamma(), blender::nodes::node_shader_geometry_cc::node_shader_gpu_geometry(), blender::nodes::node_shader_hair_info_cc::node_shader_gpu_hair_info(), blender::nodes::node_shader_bsdf_hair_principled_cc::node_shader_gpu_hair_principled(), blender::nodes::node_shader_layer_weight_cc::node_shader_gpu_layer_weight(), blender::nodes::node_shader_light_falloff_cc::node_shader_gpu_light_falloff(), blender::nodes::node_shader_light_path_cc::node_shader_gpu_light_path(), blender::nodes::node_shader_mix_shader_cc::node_shader_gpu_mix_shader(), blender::nodes::node_shader_object_info_cc::node_shader_gpu_object_info(), blender::nodes::node_shader_output_aov_cc::node_shader_gpu_output_aov(), blender::nodes::node_shader_point_info_cc::node_shader_gpu_point_info(), blender::nodes::node_shader_shader_to_rgb_cc::node_shader_gpu_shadertorgb(), blender::nodes::node_shader_subsurface_scattering_cc::node_shader_gpu_subsurface_scattering(), blender::nodes::node_shader_tangent_cc::node_shader_gpu_tangent(), blender::nodes::node_shader_tex_brick_cc::node_shader_gpu_tex_brick(), blender::nodes::node_shader_tex_checker_cc::node_shader_gpu_tex_checker(), blender::nodes::node_shader_tex_coord_cc::node_shader_gpu_tex_coord(), blender::nodes::node_shader_tex_environment_cc::node_shader_gpu_tex_environment(), blender::nodes::node_shader_tex_gradient_cc::node_shader_gpu_tex_gradient(), blender::nodes::node_shader_tex_image_cc::node_shader_gpu_tex_image(), blender::nodes::node_shader_tex_magic_cc::node_shader_gpu_tex_magic(), blender::nodes::node_shader_tex_musgrave_cc::node_shader_gpu_tex_musgrave(), blender::nodes::node_shader_tex_noise_cc::node_shader_gpu_tex_noise(), blender::nodes::node_shader_tex_sky_cc::node_shader_gpu_tex_sky(), blender::nodes::node_shader_tex_voronoi_cc::node_shader_gpu_tex_voronoi(), blender::nodes::node_shader_tex_wave_cc::node_shader_gpu_tex_wave(), blender::nodes::node_shader_uvmap_cc::node_shader_gpu_uvmap(), blender::nodes::node_shader_vertex_color_cc::node_shader_gpu_vertex_color(), blender::nodes::node_shader_volume_absorption_cc::node_shader_gpu_volume_absorption(), blender::nodes::node_shader_volume_principled_cc::node_shader_gpu_volume_principled(), blender::nodes::node_shader_volume_scatter_cc::node_shader_gpu_volume_scatter(), blender::nodes::node_shader_wavelength_cc::node_shader_gpu_wavelength(), and blender::nodes::node_shader_wireframe_cc::node_shader_gpu_wireframe().
|
static |
Definition at line 651 of file gpu_node_graph.c.
References BLI_addtail(), GPUNodeStack::end, FUNCTION_QUAL_OUT, gpu_material_library_use_function(), gpu_material_node_graph(), gpu_node_create(), gpu_node_input_link(), gpu_node_input_socket(), gpu_node_output(), GPU_NONE, graph, material, node, NULL, usdtokens::out(), params, GPUNodeLink::socket, and type.
Referenced by GPU_stack_link().
GPUNodeLink* GPU_uniform | ( | const float * | num | ) |
Definition at line 549 of file gpu_node_graph.c.
References GPUNodeLink::data, gpu_node_link_create(), GPU_NODE_LINK_UNIFORM, and GPUNodeLink::link_type.
Referenced by blender::nodes::node_shader_curves_cc::gpu_shader_curve_float(), blender::nodes::node_shader_curves_cc::gpu_shader_curve_rgb(), blender::nodes::node_shader_curves_cc::gpu_shader_curve_vec(), blender::nodes::node_shader_normal_cc::gpu_shader_normal(), blender::nodes::node_shader_normal_map_cc::gpu_shader_normal_map(), blender::nodes::node_shader_color_ramp_cc::gpu_shader_valtorgb(), gpu_uniformbuffer_link(), blender::nodes::node_shader_bsdf_principled_cc::node_shader_gpu_bsdf_principled(), blender::nodes::node_shader_subsurface_scattering_cc::node_shader_gpu_subsurface_scattering(), blender::nodes::node_shader_tex_brick_cc::node_shader_gpu_tex_brick(), blender::nodes::node_shader_tex_coord_cc::node_shader_gpu_tex_coord(), blender::nodes::node_shader_tex_image_cc::node_shader_gpu_tex_image(), node_shader_gpu_tex_mapping(), and blender::nodes::node_shader_tex_sky_cc::node_shader_gpu_tex_sky().
void GPU_uniform_attr_list_copy | ( | GPUUniformAttrList * | dest, |
GPUUniformAttrList * | src | ||
) |
Definition at line 292 of file gpu_node_graph.c.
References BLI_duplicatelist(), dest, and src.
Referenced by drw_uniform_attrs_pool_ensure().
void GPU_uniform_attr_list_free | ( | GPUUniformAttrList * | set | ) |
Definition at line 299 of file gpu_node_graph.c.
References BLI_freelistN(), GPUUniformAttrList::count, GPUUniformAttrList::hash_code, and GPUUniformAttrList::list.
Referenced by drw_uniform_attrs_pool_free_cb(), and gpu_node_graph_free().
struct GHash* GPU_uniform_attr_list_hash_new | ( | const char * | info | ) |
Definition at line 287 of file gpu_node_graph.c.
References BLI_ghash_new(), uniform_attr_list_cmp(), and uniform_attr_list_hash().
Referenced by DRW_uniform_attrs_pool_new().
GPUNodeLink* GPU_uniform_attribute | ( | GPUMaterial * | mat, |
const char * | name, | ||
bool | use_dupli | ||
) |
Definition at line 524 of file gpu_node_graph.c.
References GPU_constant(), gpu_material_node_graph(), GPU_MAX_CONSTANT_DATA, gpu_node_graph_add_uniform_attribute(), gpu_node_link_create(), GPU_NODE_LINK_UNIFORM_ATTR, graph, GPUNodeLink::link_type, NULL, and GPUNodeLink::uniform_attr.
Referenced by blender::nodes::node_shader_attribute_cc::node_shader_gpu_attribute().
|
static |
Definition at line 143 of file gpu_node_graph.c.
References BLI_assert_msg, NULL, SOCK_FLOAT, SOCK_INT, SOCK_RGBA, SOCK_VECTOR, and type.
Referenced by gpu_uniformbuffer_link().
GPUNodeLink* GPU_uniformbuf_link_out | ( | GPUMaterial * | mat, |
bNode * | node, | ||
GPUNodeStack * | stack, | ||
const int | index | ||
) |
Definition at line 738 of file gpu_node_graph.c.
References gpu_uniformbuffer_link(), node, and SOCK_OUT.
Referenced by blender::nodes::node_shader_rgb_cc::gpu_shader_rgb(), and blender::nodes::node_shader_value_cc::gpu_shader_value().
|
static |
Link stack uniform buffer. This is called for the input/output sockets that are not connected.
Definition at line 164 of file gpu_node_graph.c.
References BLI_assert, BLI_findlink(), bNodeSocket::default_value, bNodeSocket::flag, GPU_link(), GPU_uniform(), gpu_uniform_set_function_from_type(), bNodeSocket::in_out, GPUNodeStack::link, node, NULL, SOCK_FLOAT, SOCK_HIDE_VALUE, SOCK_IN, SOCK_RGBA, SOCK_VECTOR, bNodeSocket::type, bNodeSocketValueFloat::value, bNodeSocketValueVector::value, and bNodeSocketValueRGBA::value.
Referenced by gpu_node_input_socket(), and GPU_uniformbuf_link_out().
Definition at line 268 of file gpu_node_graph.c.
References Freestyle::a, usdtokens::b(), GPUUniformAttrList::count, ListBase::first, GPUUniformAttrList::hash_code, GPUUniformAttrList::list, GPUUniformAttr::name, GPUUniformAttr::next, STREQ, and GPUUniformAttr::use_dupli.
Referenced by GPU_uniform_attr_list_hash_new().
|
static |
Definition at line 262 of file gpu_node_graph.c.
References GPUUniformAttrList::hash_code.
Referenced by GPU_uniform_attr_list_hash_new().
Definition at line 250 of file gpu_node_graph.c.
References Freestyle::a, usdtokens::b(), GPUUniformAttr::name, and GPUUniformAttr::use_dupli.
Referenced by gpu_node_graph_finalize_uniform_attrs().