|
Blender V4.3
|
#include <string>#include "DNA_customdata_types.h"#include "DNA_image_types.h"#include "DNA_listBase.h"#include "BLI_sys_types.h"#include "GPU_shader.hh"#include "GPU_texture.hh"Go to the source code of this file.
Classes | |
| struct | GPUNodeStack |
| struct | GPUCodegenOutput |
| struct | GPUMaterialAttribute |
| struct | GPUMaterialTexture |
| struct | GPUUniformAttr |
| struct | GPUUniformAttrList |
| struct | GPULayerAttr |
Typedefs | |
| using | GPUCodegenCallbackFn = void (*)(void *thunk, GPUMaterial *mat, GPUCodegenOutput *codegen) |
| using | GPUMaterialPassReplacementCallbackFn = GPUPass *(*)(void *thunk, GPUMaterial *mat) |
| using | ConstructGPUMaterialFn = void (*)(void *thunk, GPUMaterial *material) |
| using ConstructGPUMaterialFn = void (*)(void *thunk, GPUMaterial *material) |
Definition at line 415 of file GPU_material.hh.
| using GPUCodegenCallbackFn = void (*)(void *thunk, GPUMaterial *mat, GPUCodegenOutput *codegen) |
Definition at line 140 of file GPU_material.hh.
| using GPUMaterialPassReplacementCallbackFn = GPUPass *(*)(void *thunk, GPUMaterial *mat) |
Should return an already compiled pass if it's functionally equivalent to the one being compiled.
Definition at line 145 of file GPU_material.hh.
| enum eGPUDefaultValue |
| Enumerator | |
|---|---|
| GPU_DEFAULT_0 | |
| GPU_DEFAULT_1 | |
Definition at line 122 of file GPU_material.hh.
| enum eGPUMaterialEngine |
High level functions to create and use GPU materials.
| Enumerator | |
|---|---|
| GPU_MAT_EEVEE_LEGACY | |
| GPU_MAT_EEVEE | |
| GPU_MAT_COMPOSITOR | |
Definition at line 227 of file GPU_material.hh.
| enum eGPUMaterialFlag |
Definition at line 65 of file GPU_material.hh.
| Enumerator | |
|---|---|
| GPU_MAT_OPTIMIZATION_SKIP | |
| GPU_MAT_OPTIMIZATION_READY | |
| GPU_MAT_OPTIMIZATION_QUEUED | |
| GPU_MAT_OPTIMIZATION_SUCCESS | |
Definition at line 115 of file GPU_material.hh.
| enum eGPUMaterialStatus |
| Enumerator | |
|---|---|
| GPU_MAT_FAILED | |
| GPU_MAT_CREATED | |
| GPU_MAT_QUEUED | |
| GPU_MAT_SUCCESS | |
Definition at line 106 of file GPU_material.hh.
| enum eGPUType |
| Enumerator | |
|---|---|
| GPU_NONE | |
| GPU_FLOAT | |
| GPU_VEC2 | |
| GPU_VEC3 | |
| GPU_VEC4 | |
| GPU_MAT3 | |
| GPU_MAT4 | |
| GPU_MAX_CONSTANT_DATA | |
| GPU_TEX1D_ARRAY | |
| GPU_TEX2D | |
| GPU_TEX2D_ARRAY | |
| GPU_TEX3D | |
| GPU_CLOSURE | |
| GPU_ATTR | |
Definition at line 40 of file GPU_material.hh.
| ENUM_OPERATORS | ( | eGPUMaterialFlag | , |
| GPU_MATFLAG_LOOKDEV_HACK | ) |
| GPUNodeLink * GPU_attribute | ( | GPUMaterial * | mat, |
| eCustomDataType | type, | ||
| const char * | name ) |
Definition at line 527 of file gpu_node_graph.cc.
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(), and GPUNodeLink::link_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_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 549 of file gpu_node_graph.cc.
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(), GPUMaterialAttribute::is_default_color, and GPUNodeLink::link_type.
Referenced by blender::nodes::node_shader_vertex_color_cc::node_shader_gpu_vertex_color().
| GPUNodeLink * GPU_attribute_hair_length | ( | GPUMaterial * | mat | ) |
Add a GPU attribute that refers to the approximate length of curves/hairs.
Definition at line 565 of file gpu_node_graph.cc.
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(), and GPUNodeLink::link_type.
Referenced by blender::nodes::node_shader_hair_info_cc::node_shader_gpu_hair_info().
| GPUNodeLink * GPU_attribute_with_default | ( | GPUMaterial * | mat, |
| eCustomDataType | type, | ||
| const char * | name, | ||
| eGPUDefaultValue | default_value ) |
Definition at line 580 of file gpu_node_graph.cc.
References GPUNodeLink::attr, GPUMaterialAttribute::default_value, GPU_attribute(), GPU_NODE_LINK_ATTR, and GPUNodeLink::link_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 * | r_row ) |
Definition at line 699 of file gpu_node_graph.cc.
References gpu_material_node_graph(), gpu_material_ramp_texture_row_set(), gpu_node_graph_add_texture(), GPU_NODE_LINK_COLORBAND, gpu_node_link_create(), GPUSamplerState::internal_sampler(), GPUNodeLink::link_type, MEM_freeN(), and GPUNodeLink::texture.
Referenced by blender::nodes::node_composite_color_ramp_cc::ColorRampShaderNode::compile(), blender::nodes::node_composite_huecorrect_cc::HueCorrectShaderNode::compile(), blender::nodes::node_composite_rgb_curves_cc::RGBCurvesShaderNode::compile(), blender::nodes::node_composite_vector_curves_cc::VectorCurvesShaderNode::compile(), blender::nodes::node_shader_curves_cc::flt::gpu_shader_curve_float(), blender::nodes::node_shader_curves_cc::rgb::gpu_shader_curve_rgb(), blender::nodes::node_shader_curves_cc::vec::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 625 of file gpu_node_graph.cc.
References GPUNodeLink::data, GPU_NODE_LINK_CONSTANT, gpu_node_link_create(), and GPUNodeLink::link_type.
Referenced by blender::nodes::node_composite_brightness_cc::BrightContrastShaderNode::compile(), blender::nodes::node_composite_channel_matte_cc::ChannelMatteShaderNode::compile(), blender::nodes::node_composite_color_ramp_cc::ColorRampShaderNode::compile(), blender::nodes::node_composite_color_spill_cc::ColorSpillShaderNode::compile(), blender::nodes::node_composite_colorcorrection_cc::ColorCorrectionShaderNode::compile(), blender::nodes::node_composite_huecorrect_cc::HueCorrectShaderNode::compile(), blender::nodes::node_composite_invert_cc::InvertShaderNode::compile(), blender::nodes::node_composite_luma_matte_cc::LuminanceMatteShaderNode::compile(), blender::nodes::node_composite_map_range_cc::MapRangeShaderNode::compile(), blender::nodes::node_composite_map_value_cc::MapValueShaderNode::compile(), blender::nodes::node_composite_math_cc::MathShaderNode::compile(), blender::nodes::node_composite_mixrgb_cc::MixRGBShaderNode::compile(), blender::nodes::node_composite_rgb_curves_cc::RGBCurvesShaderNode::compile(), blender::nodes::node_composite_rgb_to_bw_cc::RGBToBWShaderNode::compile(), blender::nodes::node_composite_vector_curves_cc::VectorCurvesShaderNode::compile(), GPU_attribute(), GPU_attribute_default_color(), GPU_attribute_hair_length(), gpu_node_input_socket(), blender::nodes::node_shader_bump_cc::gpu_shader_bump(), blender::nodes::node_shader_curves_cc::flt::gpu_shader_curve_float(), blender::nodes::node_shader_curves_cc::rgb::gpu_shader_curve_rgb(), blender::nodes::node_shader_curves_cc::vec::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_sh_mix_cc::gpu_shader_mix(), 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_attribute_cc::node_shader_gpu_attribute(), blender::nodes::node_shader_blackbody_cc::node_shader_gpu_blackbody(), 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_metallic_cc::node_shader_gpu_bsdf_metallic(), 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_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_gabor_cc::node_shader_gpu_tex_gabor(), 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_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_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 641 of file gpu_node_graph.cc.
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, | ||
| GPUSamplerState | sampler_state ) |
Definition at line 649 of file gpu_node_graph.cc.
References gpu_material_node_graph(), gpu_node_graph_add_texture(), gpu_node_link_create(), GPU_NODE_LINK_IMAGE, GPUNodeLink::link_type, 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_sky | ( | GPUMaterial * | mat, |
| int | width, | ||
| int | height, | ||
| const float * | pixels, | ||
| float * | layer, | ||
| GPUSamplerState | sampler_state ) |
Definition at line 662 of file gpu_node_graph.cc.
References gpu_material_node_graph(), gpu_material_sky_texture_layer_set(), gpu_node_graph_add_texture(), gpu_node_link_create(), GPU_NODE_LINK_IMAGE_SKY, GPUNodeLink::link_type, and GPUNodeLink::texture.
Referenced by blender::nodes::node_shader_tex_sky_cc::node_shader_gpu_tex_sky().
| void GPU_image_tiled | ( | GPUMaterial * | mat, |
| Image * | ima, | ||
| ImageUser * | iuser, | ||
| GPUSamplerState | sampler_state, | ||
| GPUNodeLink ** | r_image_tiled_link, | ||
| GPUNodeLink ** | r_image_tiled_mapping_link ) |
Definition at line 679 of file gpu_node_graph.cc.
References gpu_material_node_graph(), gpu_node_graph_add_texture(), gpu_node_link_create(), GPU_NODE_LINK_IMAGE_TILED, GPU_NODE_LINK_IMAGE_TILED_MAPPING, and texture.
Referenced by blender::nodes::node_shader_tex_image_cc::node_shader_gpu_tex_image().
| GPUNodeLink * GPU_layer_attribute | ( | GPUMaterial * | mat, |
| const char * | name ) |
Definition at line 614 of file gpu_node_graph.cc.
References gpu_material_node_graph(), gpu_node_graph_add_layer_attribute(), gpu_node_link_create(), GPU_NODE_LINK_LAYER_ATTR, GPUNodeLink::layer_attr, and GPUNodeLink::link_type.
Referenced by blender::nodes::node_shader_attribute_cc::node_shader_gpu_attribute().
| bool GPU_link | ( | GPUMaterial * | mat, |
| const char * | name, | ||
| ... ) |
Definition at line 714 of file gpu_node_graph.cc.
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(), node, and params.
Referenced by blender::nodes::node_shader_volume_principled_cc::attribute_post_process(), blender::nodes::node_composite_math_cc::MathShaderNode::compile(), blender::nodes::node_composite_mixrgb_cc::MixRGBShaderNode::compile(), blender::nodes::node_composite_rgb_curves_cc::RGBCurvesShaderNode::compile(), 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_sh_mix_cc::gpu_shader_mix(), 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_rgb_cc::gpu_shader_rgb(), blender::nodes::node_shader_value_cc::gpu_shader_value(), 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_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_metallic_cc::node_shader_gpu_bsdf_metallic(), 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_sheen_cc::node_shader_gpu_bsdf_sheen(), blender::nodes::node_shader_bsdf_toon_cc::node_shader_gpu_bsdf_toon(), blender::nodes::node_shader_bsdf_translucent_cc::node_shader_gpu_bsdf_translucent(), 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().
| void GPU_material_acquire | ( | GPUMaterial * | mat | ) |
Definition at line 711 of file gpu_material.cc.
References atomic_add_and_fetch_uint32(), and GPUMaterial::refcount.
Referenced by drw_deferred_shader_compilation_exec().
| void GPU_material_add_output_link_aov | ( | GPUMaterial * | material, |
| GPUNodeLink * | link, | ||
| int | hash ) |
Definition at line 443 of file gpu_material.cc.
References BLI_addtail(), GPUNodeGraphOutputLink::hash, hash, MEM_callocN, and GPUNodeGraphOutputLink::outlink.
Referenced by blender::nodes::node_shader_output_aov_cc::node_shader_gpu_output_aov().
| void GPU_material_add_output_link_composite | ( | GPUMaterial * | material, |
| GPUNodeLink * | link ) |
Definition at line 452 of file gpu_material.cc.
References BLI_addtail(), MEM_callocN, and GPUNodeGraphOutputLink::outlink.
| void GPU_material_async_compile | ( | GPUMaterial * | mat | ) |
Definition at line 791 of file gpu_material.cc.
References BLI_assert, ELEM, GPU_MAT_CREATED, GPU_MAT_QUEUED, GPU_pass_begin_async_compilation(), GPUMaterial::name, GPUMaterial::pass, and GPUMaterial::status.
Referenced by drw_deferred_shader_compilation_exec().
| bool GPU_material_async_try_finalize | ( | GPUMaterial * | mat | ) |
Returns true if the material have finished its compilation.
Definition at line 803 of file gpu_material.cc.
References BLI_assert, ELEM, GPU_MAT_CREATED, GPU_MAT_QUEUED, gpu_material_finalize(), GPU_pass_async_compilation_try_finalize(), GPU_pass_shader_get(), GPUMaterial::pass, and GPUMaterial::status.
Referenced by drw_deferred_shader_compilation_exec().
| ListBase GPU_material_attributes | ( | const GPUMaterial * | material | ) |
Definition at line 353 of file gpu_material.cc.
Referenced by blender::draw::attribute_index_in_material(), DRW_shgroup_volume_create_sub(), blender::draw::ensure_attributes(), blender::draw::mesh_cd_calc_used_gpu_layers(), blender::draw::point_cloud_sub_pass_setup_implementation(), blender::draw::pointcloud_surface_shaded_get(), blender::eevee::SyncModule::sync_volume(), and blender::draw::volume_sub_pass_implementation().
| void GPU_material_compile | ( | GPUMaterial * | mat | ) |
Definition at line 774 of file gpu_material.cc.
References BLI_assert, ELEM, GPU_MAT_CREATED, GPU_MAT_QUEUED, gpu_material_finalize(), GPU_pass_compile(), GPUMaterial::name, GPUMaterial::pass, and GPUMaterial::status.
Referenced by drw_deferred_shader_add(), drw_deferred_shader_compilation_exec(), blender::eevee::ShaderModule::material_shader_get(), and blender::realtime_compositor::ShaderOperation::ShaderOperation().
| eGPUMaterialFlag GPU_material_flag | ( | const GPUMaterial * | mat | ) |
Definition at line 569 of file gpu_material.cc.
References GPUMaterial::flag.
Referenced by GPUCodegen::GPUCodegen().
| bool GPU_material_flag_get | ( | const GPUMaterial * | mat, |
| eGPUMaterialFlag | flag ) |
Definition at line 564 of file gpu_material.cc.
References flag, and GPUMaterial::flag.
Referenced by blender::eevee::VolumeLayer::material_add(), blender::eevee::ShaderModule::material_create_info_amend(), blender::eevee::ForwardPipeline::material_opaque_add(), blender::nodes::node_shader_tex_environment_cc::node_shader_gpu_tex_environment(), blender::eevee::pass_replacement_cb(), blender::eevee::ForwardPipeline::prepass_opaque_add(), and blender::eevee::shader_closure_bits_from_flag().
| void GPU_material_flag_set | ( | GPUMaterial * | mat, |
| eGPUMaterialFlag | flag ) |
Definition at line 555 of file gpu_material.cc.
References flag, GPUMaterial::flag, GPU_MATFLAG_COAT, and GPU_MATFLAG_GLOSSY.
Referenced by GPU_attribute(), blender::nodes::node_shader_normal_map_cc::gpu_shader_normal_map(), blender::nodes::node_shader_particle_info_cc::gpu_shader_particle_info(), blender::nodes::node_shader_ambient_occlusion_cc::node_shader_gpu_ambient_occlusion(), 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_metallic_cc::node_shader_gpu_bsdf_metallic(), blender::nodes::node_shader_bsdf_principled_cc::node_shader_gpu_bsdf_principled(), blender::nodes::node_shader_bsdf_ray_portal_cc::node_shader_gpu_bsdf_ray_portal(), blender::nodes::node_shader_bsdf_refraction_cc::node_shader_gpu_bsdf_refraction(), blender::nodes::node_shader_bsdf_sheen_cc::node_shader_gpu_bsdf_sheen(), 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_eevee_specular_cc::node_shader_gpu_eevee_specular(), blender::nodes::node_shader_emission_cc::node_shader_gpu_emission(), blender::nodes::node_shader_geometry_cc::node_shader_gpu_geometry(), blender::nodes::node_shader_bsdf_hair_principled_cc::node_shader_gpu_hair_principled(), 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_shader_to_rgb_cc::node_shader_gpu_shadertorgb(), blender::nodes::node_shader_subsurface_scattering_cc::node_shader_gpu_subsurface_scattering(), 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(), and blender::nodes::node_shader_wireframe_cc::node_shader_gpu_wireframe().
| void GPU_material_free | ( | ListBase * | gpumaterial | ) |
Definition at line 291 of file gpu_material.cc.
References BLI_freelistN(), DRW_deferred_shader_remove, GPU_material_free_single(), and LISTBASE_FOREACH.
Referenced by BKE_material_defaults_free_gpu(), BKE_material_eval(), BKE_world_eval(), ED_node_set_active(), GPU_materials_free(), material_free_data(), blender::eevee::LookdevWorld::sync(), and world_free_data().
| void GPU_material_free_single | ( | GPUMaterial * | material | ) |
Definition at line 255 of file gpu_material.cc.
References atomic_sub_and_fetch_uint32(), gpu_node_graph_free(), GPU_pass_release(), GPU_texture_free(), GPU_uniformbuf_free(), and MEM_freeN().
Referenced by GPU_material_free(), GPU_material_release(), and blender::realtime_compositor::ShaderOperation::~ShaderOperation().
| GPUMaterial * GPU_material_from_callbacks | ( | eGPUMaterialEngine | engine, |
| ConstructGPUMaterialFn | construct_function_cb, | ||
| GPUCodegenCallbackFn | generate_code_function_cb, | ||
| void * | thunk ) |
Definition at line 913 of file gpu_material.cc.
References BLI_ghashutil_ptrcmp(), BLI_ghashutil_ptrhash(), BLI_gset_new(), GPU_generate_pass(), GPU_MAT_CREATED, GPU_MAT_FAILED, GPU_MAT_OPTIMIZATION_SKIP, GPU_MAT_SUCCESS, gpu_material_ramp_texture_build(), gpu_node_graph_free(), gpu_node_graph_free_nodes(), GPU_pass_shader_get(), GPUMaterial::graph, material, MEM_callocN, and GPUNodeGraph::used_libraries.
Referenced by blender::realtime_compositor::ShaderOperation::ShaderOperation().
| GPUMaterial * GPU_material_from_nodetree | ( | Scene * | scene, |
| Material * | ma, | ||
| bNodeTree * | ntree, | ||
| ListBase * | gpumaterials, | ||
| const char * | name, | ||
| eGPUMaterialEngine | engine, | ||
| uint64_t | shader_uuid, | ||
| bool | is_volume_shader, | ||
| bool | is_lookdev, | ||
| GPUCodegenCallbackFn | callback, | ||
| void * | thunk, | ||
| GPUMaterialPassReplacementCallbackFn | pass_replacement_cb = nullptr ) |
WORKAROUND: The node tree code is never executed in default replaced passes, but the GPU validation will still complain if the node tree UBO is not bound. So we create a dummy UBO with (at least) the size of the default material one (192 bytes). We allocate 256 bytes to leave some room for future changes.
Definition at line 588 of file gpu_material.cc.
References BLI_addtail(), BLI_assert, BLI_ghashutil_ptrcmp(), BLI_ghashutil_ptrhash(), BLI_gset_new(), callback, LinkData::data, GPUMaterial::default_mat, GPUMaterial::engine, GPUMaterial::flag, GPU_generate_pass(), GPU_MAT_CREATED, GPU_MAT_FAILED, GPU_MAT_OPTIMIZATION_READY, GPU_MAT_OPTIMIZATION_SKIP, GPU_MAT_OPTIMIZATION_SUCCESS, GPU_MAT_SUCCESS, GPU_material_optimization_status_set(), gpu_material_ramp_texture_build(), gpu_material_sky_texture_build(), GPU_MATFLAG_LOOKDEV_HACK, GPU_MATFLAG_UPDATED, gpu_node_graph_free(), gpu_node_graph_free_nodes(), GPU_pass_acquire(), GPU_pass_shader_get(), GPU_pass_should_optimize(), GPU_uniformbuf_create_ex(), GPUMaterial::graph, bNodeTree::id, GPUMaterial::is_volume_shader, LISTBASE_FOREACH, GPUMaterial::ma, MEM_callocN, MEM_freeN(), GPUMaterial::name, blender::bke::node_tree_free_local_tree(), blender::bke::node_tree_localize(), ntreeGPUMaterialNodes, GPUMaterial::optimization_status, GPUMaterial::optimized_pass, GPUMaterial::pass, ID::py_instance, GPUMaterial::refcount, GPUMaterial::scene, scene, GPUMaterial::status, STRNCPY, GPUMaterial::ubo, GPUNodeGraph::used_libraries, and GPUMaterial::uuid.
Referenced by DRW_shader_from_material(), DRW_shader_from_world(), and blender::eevee::ShaderModule::material_shader_get().
| Material * GPU_material_get_material | ( | GPUMaterial * | material | ) |
Return can be null if it's a world material.
Definition at line 338 of file gpu_material.cc.
Referenced by GPUCodegen::generate_cryptomatte(), blender::nodes::node_shader_object_info_cc::node_shader_gpu_object_info(), blender::eevee::pass_replacement_cb(), blender::eevee::SyncModule::sync_curves(), blender::eevee::SyncModule::sync_mesh(), blender::eevee::SyncModule::sync_point_cloud(), and blender::eevee::SyncModule::sync_sculpt().
| const char * GPU_material_get_name | ( | GPUMaterial * | material | ) |
Definition at line 333 of file gpu_material.cc.
Referenced by blender::eevee::DeferredLayer::material_add(), blender::eevee::DeferredProbePipeline::material_add(), blender::eevee::PlanarProbePipeline::material_add(), blender::eevee::VolumeLayer::material_add(), blender::eevee::ForwardPipeline::material_opaque_add(), blender::eevee::ForwardPipeline::material_transparent_add(), blender::eevee::VolumeLayer::occupancy_add(), blender::eevee::DeferredLayer::prepass_add(), blender::eevee::DeferredProbePipeline::prepass_add(), blender::eevee::PlanarProbePipeline::prepass_add(), blender::eevee::ForwardPipeline::prepass_opaque_add(), blender::eevee::ForwardPipeline::prepass_transparent_add(), blender::eevee::CapturePipeline::surface_material_add(), and blender::eevee::ShadowPipeline::surface_material_add().
| GPUPass * GPU_material_get_pass | ( | GPUMaterial * | material | ) |
Definition at line 306 of file gpu_material.cc.
References GPU_MAT_OPTIMIZATION_SUCCESS, and GPU_material_optimization_status().
Referenced by DRW_shgroup_material_create(), blender::draw::detail::PassBase< DrawCommandBufType >::material_set(), blender::eevee::pass_replacement_cb(), and blender::eevee::CapturePipeline::surface_material_add().
| GPUShader * GPU_material_get_shader | ( | GPUMaterial * | material | ) |
Return the most optimal shader configuration for the given material.
Definition at line 316 of file gpu_material.cc.
References GPU_MAT_OPTIMIZATION_SUCCESS, GPU_material_optimization_status(), and GPU_pass_shader_get().
Referenced by blender::realtime_compositor::ShaderOperation::execute(), and blender::eevee::ShaderKey::ShaderKey().
| GPUShader * GPU_material_get_shader_base | ( | GPUMaterial * | material | ) |
Return the base un-optimized shader.
Definition at line 328 of file gpu_material.cc.
References GPU_pass_shader_get().
| bool GPU_material_has_displacement_output | ( | GPUMaterial * | mat | ) |
Definition at line 550 of file gpu_material.cc.
References GPUMaterial::has_displacement_output.
Referenced by blender::eevee::pass_replacement_cb(), blender::eevee::SyncModule::sync_curves(), blender::eevee::SyncModule::sync_mesh(), blender::eevee::SyncModule::sync_point_cloud(), and blender::eevee::SyncModule::sync_sculpt().
| bool GPU_material_has_surface_output | ( | GPUMaterial * | mat | ) |
Definition at line 540 of file gpu_material.cc.
References GPUMaterial::has_surface_output.
| bool GPU_material_has_volume_output | ( | GPUMaterial * | mat | ) |
Definition at line 545 of file gpu_material.cc.
References GPUMaterial::has_volume_output.
Referenced by blender::eevee::VolumeLayer::material_add(), blender::eevee::VolumeLayer::occupancy_add(), blender::eevee::WorldVolumePipeline::sync(), and blender::eevee::SyncModule::sync_volume().
| const ListBase * GPU_material_layer_attributes | ( | const GPUMaterial * | material | ) |
Definition at line 369 of file gpu_material.cc.
References BLI_listbase_is_empty().
Referenced by drw_register_shader_vlattrs(), DRW_shgroup_add_material_resources(), and blender::draw::Manager::register_layer_attributes().
| bool GPU_material_optimization_ready | ( | GPUMaterial * | mat | ) |
Definition at line 518 of file gpu_material.cc.
References BLI_time_now_seconds(), and GPUMaterial::creation_time.
Referenced by DRW_shader_queue_optimize_material().
| eGPUMaterialOptimizationStatus GPU_material_optimization_status | ( | GPUMaterial * | mat | ) |
Return status for asynchronous optimization jobs.
Definition at line 504 of file gpu_material.cc.
References GPUMaterial::optimization_status.
Referenced by drw_deferred_queue_append(), DRW_shader_queue_optimize_material(), GPU_material_get_pass(), and GPU_material_get_shader().
| void GPU_material_optimization_status_set | ( | GPUMaterial * | mat, |
| eGPUMaterialOptimizationStatus | status ) |
Definition at line 509 of file gpu_material.cc.
References BLI_time_now_seconds(), GPUMaterial::creation_time, GPU_MAT_OPTIMIZATION_READY, and GPUMaterial::optimization_status.
Referenced by drw_deferred_queue_append(), DRW_deferred_shader_optimize_remove(), DRW_deferred_shader_remove(), DRW_shader_exit(), GPU_material_from_nodetree(), and GPU_material_optimize().
| void GPU_material_optimize | ( | GPUMaterial * | mat | ) |
Material Optimization.
Perform asynchronous Render Pipeline State Object (PSO) compilation.
Warm PSO cache within asynchronous compilation thread for optimized materials. This setup assigns the original unoptimized shader as a "parent" shader for the optimized version. This then allows the associated GPU backend to compile PSOs within this asynchronous pass, using the identical PSO descriptors of the parent shader.
This eliminates all run-time stuttering associated with material optimization and ensures realtime material editing and animation remains seamless, while retaining optimal realtime performance.
Definition at line 813 of file gpu_material.cc.
References BLI_assert, ELEM, GPUMaterial::engine, GPU_generate_pass(), GPU_MAT_OPTIMIZATION_READY, GPU_MAT_OPTIMIZATION_SKIP, GPU_MAT_OPTIMIZATION_SUCCESS, GPU_MAT_SUCCESS, GPU_material_optimization_status_set(), gpu_node_graph_free_nodes(), GPU_pass_compile(), GPU_pass_release(), GPU_pass_shader_get(), GPU_shader_set_parent(), GPU_shader_warm_cache(), GPUMaterial::graph, GPUMaterial::name, GPUMaterial::optimization_status, GPUMaterial::optimized_pass, GPUMaterial::pass, and GPUMaterial::status.
Referenced by drw_deferred_shader_compilation_exec().
| void GPU_material_output_displacement | ( | GPUMaterial * | material, |
| GPUNodeLink * | link ) |
Definition at line 428 of file gpu_material.cc.
Referenced by blender::nodes::node_shader_output_material_cc::node_shader_gpu_output_material().
| void GPU_material_output_surface | ( | GPUMaterial * | material, |
| GPUNodeLink * | link ) |
Definition at line 412 of file gpu_material.cc.
Referenced by blender::nodes::node_shader_output_light_cc::node_shader_gpu_output_light(), blender::nodes::node_shader_output_material_cc::node_shader_gpu_output_material(), and blender::nodes::node_shader_output_world_cc::node_shader_gpu_output_world().
| void GPU_material_output_thickness | ( | GPUMaterial * | material, |
| GPUNodeLink * | link ) |
Definition at line 436 of file gpu_material.cc.
Referenced by blender::nodes::node_shader_output_material_cc::node_shader_gpu_output_material().
| void GPU_material_output_volume | ( | GPUMaterial * | material, |
| GPUNodeLink * | link ) |
Definition at line 420 of file gpu_material.cc.
Referenced by blender::nodes::node_shader_output_material_cc::node_shader_gpu_output_material(), and blender::nodes::node_shader_output_world_cc::node_shader_gpu_output_world().
| bool GPU_material_recalc_flag_get | ( | GPUMaterial * | mat | ) |
Definition at line 574 of file gpu_material.cc.
References GPUMaterial::flag, and GPU_MATFLAG_UPDATED.
| void GPU_material_release | ( | GPUMaterial * | mat | ) |
Definition at line 716 of file gpu_material.cc.
References GPU_material_free_single().
Referenced by drw_deferred_shader_compilation_exec().
| Scene * GPU_material_scene | ( | GPUMaterial * | material | ) |
Definition at line 301 of file gpu_material.cc.
| void GPU_material_set_default | ( | GPUMaterial * | material, |
| GPUMaterial * | default_material ) |
Store reference to a similar default material for asynchronous PSO cache warming.
This function expects material to have not yet been compiled and for default_material to be ready. When compiling material as part of an asynchronous shader compilation job, use existing PSO descriptors from default_material's shader to also compile PSOs for this new material asynchronously, rather than at runtime.
The default_material options should match this new materials options in order for PSO descriptors to match those needed by the new material.
NOTE: default_material must exist when GPU_material_compile(..) is called for material.
See GPU_shader_warm_cache(..) for more information.
Definition at line 531 of file gpu_material.cc.
| char * GPU_material_split_sub_function | ( | GPUMaterial * | material, |
| eGPUType | return_type, | ||
| GPUNodeLink ** | link ) |
Wrap a part of the material graph into a function. You need then need to call the function by using something like GPU_differentiate_float_function.
| return_type | sub function return type. Output is cast to this type. |
| link | link to use as the sub function output. |
Definition at line 460 of file gpu_material.cc.
References BLI_addtail(), BLI_assert, GPU_FLOAT, GPU_link(), GPU_VEC3, GPU_VEC4, MEM_callocN, GPUNodeGraphFunctionLink::name, GPUNodeGraphFunctionLink::outlink, and SNPRINTF.
Referenced by blender::nodes::node_shader_bump_cc::gpu_shader_bump().
| bool GPU_material_sss_profile_create | ( | GPUMaterial * | material, |
| float | radii[3] ) |
Definition at line 392 of file gpu_material.cc.
References copy_v3_v3(), and GPU_uniformbuf_create.
Referenced by blender::nodes::node_shader_bsdf_principled_cc::node_shader_gpu_bsdf_principled(), and blender::nodes::node_shader_subsurface_scattering_cc::node_shader_gpu_subsurface_scattering().
| eGPUMaterialStatus GPU_material_status | ( | GPUMaterial * | mat | ) |
Return true if the material compilation has not yet begin or begin.
Definition at line 494 of file gpu_material.cc.
References GPUMaterial::status.
Referenced by drw_deferred_shader_add(), DRW_shader_queue_optimize_material(), and blender::eevee::WorldVolumePipeline::sync().
| void GPU_material_status_set | ( | GPUMaterial * | mat, |
| eGPUMaterialStatus | status ) |
Definition at line 499 of file gpu_material.cc.
References GPUMaterial::status.
Referenced by drw_deferred_queue_append(), DRW_deferred_shader_remove(), DRW_shader_exit(), blender::eevee::ShaderModule::material_shader_get(), and blender::realtime_compositor::ShaderOperation::ShaderOperation().
| ListBase GPU_material_textures | ( | GPUMaterial * | material | ) |
Definition at line 358 of file gpu_material.cc.
Referenced by DRW_shgroup_add_material_resources(), image_walk_gpu_materials(), and blender::draw::detail::PassBase< DrawCommandBufType >::material_set().
| const GPUUniformAttrList * GPU_material_uniform_attributes | ( | const GPUMaterial * | material | ) |
Definition at line 363 of file gpu_material.cc.
References GPUUniformAttrList::count.
Referenced by DRW_shgroup_add_material_resources(), blender::draw::Manager::extract_object_attributes(), blender::draw::Manager::extract_object_attributes(), and blender::eevee::ShaderModule::material_create_info_amend().
| void GPU_material_uniform_buffer_create | ( | GPUMaterial * | material, |
| ListBase * | inputs ) |
Create dynamic UBO from parameters
Definition at line 348 of file gpu_material.cc.
References GPU_uniformbuf_create_from_list().
Referenced by GPUCodegen::generate_uniform_buffer().
| GPUUniformBuf * GPU_material_uniform_buffer_get | ( | GPUMaterial * | material | ) |
Definition at line 343 of file gpu_material.cc.
Referenced by DRW_shgroup_add_material_resources(), and blender::draw::detail::PassBase< DrawCommandBufType >::material_set().
| uint64_t GPU_material_uuid_get | ( | GPUMaterial * | mat | ) |
Definition at line 583 of file gpu_material.cc.
References GPUMaterial::uuid.
Referenced by GPUCodegen::GPUCodegen(), blender::eevee::ShaderModule::material_create_info_amend(), and blender::eevee::pass_replacement_cb().
| void GPU_materials_free | ( | Main * | bmain | ) |
Definition at line 900 of file gpu_material.cc.
References BKE_material_defaults_free_gpu(), GPU_material_free(), LISTBASE_FOREACH, Main::materials, and Main::worlds.
Referenced by blender::ed::outliner::outliner_id_remap_exec().
| void GPU_pass_cache_free | ( | ) |
Definition at line 1024 of file gpu_codegen.cc.
References BLI_spin_end(), BLI_spin_lock(), BLI_spin_unlock(), gpu_pass_free(), GPUPass::next, next, pass_cache, and pass_cache_spin.
Referenced by WM_exit_ex().
| void GPU_pass_cache_garbage_collect | ( | ) |
Definition at line 996 of file gpu_codegen.cc.
References BLI_spin_lock(), BLI_spin_unlock(), BLI_time_now_seconds(), GPUPass::gc_timestamp, gpu_pass_free(), int, GPUPass::next, next, pass_cache, and pass_cache_spin.
Referenced by view3d_main_region_draw().
| void GPU_pass_cache_init | ( | ) |
Definition at line 1019 of file gpu_codegen.cc.
References BLI_spin_init(), and pass_cache_spin.
Referenced by WM_init_gpu().
| bool GPU_stack_link | ( | GPUMaterial * | mat, |
| const bNode * | node, | ||
| const char * | name, | ||
| GPUNodeStack * | in, | ||
| GPUNodeStack * | out, | ||
| ... ) |
Definition at line 821 of file gpu_node_graph.cc.
References gpu_stack_link_v(), and params.
Referenced by blender::nodes::node_composite_alpha_over_cc::AlphaOverShaderNode::compile(), blender::nodes::node_composite_brightness_cc::BrightContrastShaderNode::compile(), blender::nodes::node_composite_channel_matte_cc::ChannelMatteShaderNode::compile(), blender::nodes::node_composite_chroma_matte_cc::ChromaMatteShaderNode::compile(), blender::nodes::node_composite_color_matte_cc::ColorMatteShaderNode::compile(), blender::nodes::node_composite_color_ramp_cc::ColorRampShaderNode::compile(), blender::nodes::node_composite_color_spill_cc::ColorSpillShaderNode::compile(), blender::nodes::node_composite_colorbalance_cc::ColorBalanceShaderNode::compile(), blender::nodes::node_composite_colorcorrection_cc::ColorCorrectionShaderNode::compile(), blender::nodes::node_composite_combine_color_cc::CombineColorShaderNode::compile(), blender::nodes::node_composite_combine_hsva_cc::CombineHSVAShaderNode::compile(), blender::nodes::node_composite_combine_rgba_cc::CombineRGBAShaderNode::compile(), blender::nodes::node_composite_combine_xyz_cc::CombineXYZShaderNode::compile(), blender::nodes::node_composite_combine_ycca_cc::CombineYCCAShaderNode::compile(), blender::nodes::node_composite_combine_yuva_cc::CombineYUVAShaderNode::compile(), blender::nodes::node_composite_diff_matte_cc::DifferenceMatteShaderNode::compile(), blender::nodes::node_composite_distance_matte_cc::DistanceMatteShaderNode::compile(), blender::nodes::node_composite_exposure_cc::ExposureShaderNode::compile(), blender::nodes::node_composite_gamma_cc::GammaShaderNode::compile(), blender::nodes::node_composite_hue_sat_val_cc::HueSaturationValueShaderNode::compile(), blender::nodes::node_composite_huecorrect_cc::HueCorrectShaderNode::compile(), blender::nodes::node_composite_invert_cc::InvertShaderNode::compile(), blender::nodes::node_composite_luma_matte_cc::LuminanceMatteShaderNode::compile(), blender::nodes::node_composite_map_range_cc::MapRangeShaderNode::compile(), blender::nodes::node_composite_map_value_cc::MapValueShaderNode::compile(), blender::nodes::node_composite_math_cc::MathShaderNode::compile(), blender::nodes::node_composite_mixrgb_cc::MixRGBShaderNode::compile(), blender::nodes::node_composite_normal_cc::NormalShaderNode::compile(), blender::nodes::node_composite_posterize_cc::PosterizeShaderNode::compile(), blender::nodes::node_composite_premulkey_cc::AlphaConvertShaderNode::compile(), blender::nodes::node_composite_rgb_curves_cc::RGBCurvesShaderNode::compile(), blender::nodes::node_composite_rgb_to_bw_cc::RGBToBWShaderNode::compile(), blender::nodes::node_composite_separate_color_cc::SeparateColorShaderNode::compile(), blender::nodes::node_composite_separate_hsva_cc::SeparateHSVAShaderNode::compile(), blender::nodes::node_composite_separate_rgba_cc::SeparateRGBAShaderNode::compile(), blender::nodes::node_composite_separate_xyz_cc::SeparateXYZShaderNode::compile(), blender::nodes::node_composite_separate_ycca_cc::SeparateYCCAShaderNode::compile(), blender::nodes::node_composite_separate_yuva_cc::SeparateYUVAShaderNode::compile(), blender::nodes::node_composite_setalpha_cc::SetAlphaShaderNode::compile(), blender::nodes::node_composite_vector_curves_cc::VectorCurvesShaderNode::compile(), 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::comb::gpu_shader_combxyz(), blender::nodes::node_shader_curves_cc::flt::gpu_shader_curve_float(), blender::nodes::node_shader_curves_cc::rgb::gpu_shader_curve_rgb(), blender::nodes::node_shader_curves_cc::vec::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_sh_mix_cc::gpu_shader_mix(), 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_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::sep::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_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_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_metallic_cc::node_shader_gpu_bsdf_metallic(), blender::nodes::node_shader_bsdf_principled_cc::node_shader_gpu_bsdf_principled(), blender::nodes::node_shader_bsdf_ray_portal_cc::node_shader_gpu_bsdf_ray_portal(), blender::nodes::node_shader_bsdf_refraction_cc::node_shader_gpu_bsdf_refraction(), blender::nodes::node_shader_bsdf_sheen_cc::node_shader_gpu_bsdf_sheen(), 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_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_gabor_cc::node_shader_gpu_tex_gabor(), 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_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().
| GPUNodeLink * GPU_uniform | ( | const float * | num | ) |
Definition at line 633 of file gpu_node_graph.cc.
References GPUNodeLink::data, gpu_node_link_create(), GPU_NODE_LINK_UNIFORM, and GPUNodeLink::link_type.
Referenced by blender::nodes::node_composite_alpha_over_cc::AlphaOverShaderNode::compile(), blender::nodes::node_composite_channel_matte_cc::ChannelMatteShaderNode::compile(), blender::nodes::node_composite_chroma_matte_cc::ChromaMatteShaderNode::compile(), blender::nodes::node_composite_color_matte_cc::ColorMatteShaderNode::compile(), blender::nodes::node_composite_color_ramp_cc::ColorRampShaderNode::compile(), blender::nodes::node_composite_color_spill_cc::ColorSpillShaderNode::compile(), blender::nodes::node_composite_colorbalance_cc::ColorBalanceShaderNode::compile(), blender::nodes::node_composite_colorcorrection_cc::ColorCorrectionShaderNode::compile(), blender::nodes::node_composite_diff_matte_cc::DifferenceMatteShaderNode::compile(), blender::nodes::node_composite_distance_matte_cc::DistanceMatteShaderNode::compile(), blender::nodes::node_composite_huecorrect_cc::HueCorrectShaderNode::compile(), blender::nodes::node_composite_luma_matte_cc::LuminanceMatteShaderNode::compile(), blender::nodes::node_composite_map_value_cc::MapValueShaderNode::compile(), blender::nodes::node_composite_normal_cc::NormalShaderNode::compile(), blender::nodes::node_composite_rgb_curves_cc::RGBCurvesShaderNode::compile(), blender::nodes::node_composite_vector_curves_cc::VectorCurvesShaderNode::compile(), blender::realtime_compositor::ShaderNode::get_input_link(), blender::nodes::node_shader_curves_cc::flt::gpu_shader_curve_float(), blender::nodes::node_shader_curves_cc::rgb::gpu_shader_curve_rgb(), blender::nodes::node_shader_curves_cc::vec::gpu_shader_curve_vec(), blender::nodes::node_sh_mix_cc::gpu_shader_mix(), blender::nodes::node_shader_mix_rgb_cc::gpu_shader_mix_rgb(), blender::nodes::node_shader_normal_cc::gpu_shader_normal(), blender::nodes::node_shader_normal_map_cc::gpu_shader_normal_map(), blender::nodes::node_shader_rgb_cc::gpu_shader_rgb(), blender::nodes::node_shader_color_ramp_cc::gpu_shader_valtorgb(), blender::nodes::node_shader_value_cc::gpu_shader_value(), gpu_uniformbuffer_link(), 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, |
| const GPUUniformAttrList * | src ) |
Definition at line 313 of file gpu_node_graph.cc.
References BLI_duplicatelist(), GPUUniformAttrList::count, GPUUniformAttrList::hash_code, and GPUUniformAttrList::list.
Referenced by drw_uniform_attrs_pool_ensure().
| void GPU_uniform_attr_list_free | ( | GPUUniformAttrList * | set | ) |
Definition at line 320 of file gpu_node_graph.cc.
References BLI_freelistN().
Referenced by drw_uniform_attrs_pool_free_cb(), and gpu_node_graph_free().
| GHash * GPU_uniform_attr_list_hash_new | ( | const char * | info | ) |
Definition at line 308 of file gpu_node_graph.cc.
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, | ||
| uint32_t * | r_hash ) |
Definition at line 592 of file gpu_node_graph.cc.
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, GPUUniformAttr::hash_code, GPUNodeLink::link_type, and GPUNodeLink::uniform_attr.
Referenced by blender::nodes::node_shader_attribute_cc::node_shader_gpu_attribute().