|
Blender V4.5
|
#include <shader.h>
Inherited by SVMShaderManager.
Public Types | |
| enum | : uint32_t { SHADER_ADDED = (1 << 0) , SHADER_MODIFIED = (1 << 2) , UPDATE_ALL = ~0u , UPDATE_NONE = 0u } |
Public Member Functions | |
| virtual | ~ShaderManager () |
| virtual bool | use_osl () |
| void | device_update_pre (Device *device, DeviceScene *dscene, Scene *scene, Progress &progress) |
| void | device_update_post (Device *device, DeviceScene *dscene, Scene *scene, Progress &progress) |
| virtual void | device_free (Device *device, DeviceScene *dscene, Scene *scene)=0 |
| virtual uint64_t | get_attribute_id (ustring name) |
| virtual uint64_t | get_attribute_id (AttributeStandard std) |
| int | get_shader_id (Shader *shader, bool smooth=false) |
| uint | get_kernel_features (Scene *scene) |
| float | linear_rgb_to_gray (const float3 c) |
| float3 | rec709_to_scene_linear (const float3 c) |
| string | get_cryptomatte_materials (Scene *scene) |
| void | tag_update (Scene *scene, const uint32_t flag) |
| bool | need_update () const |
| void | init_xyz_transforms () |
Static Public Member Functions | |
| static unique_ptr< ShaderManager > | create (const int shadingsystem) |
| static void | add_default (Scene *scene) |
Protected Types | |
| using | AttributeIDMap = unordered_map<ustring, uint64_t> |
Protected Member Functions | |
| ShaderManager () | |
| template<std::size_t n> | |
| size_t | ensure_bsdf_table (DeviceScene *dscene, Scene *scene, const float(&table)[n]) |
| size_t | ensure_bsdf_table_impl (DeviceScene *dscene, Scene *scene, const float *table, const size_t n) |
| uint | get_graph_kernel_features (ShaderGraph *graph) |
| virtual void | device_update_specific (Device *device, DeviceScene *dscene, Scene *scene, Progress &progress)=0 |
| void | device_update_common (Device *device, DeviceScene *dscene, Scene *scene, Progress &progress) |
| void | device_free_common (Device *device, DeviceScene *dscene, Scene *scene) |
Protected Attributes | |
| uint32_t | update_flags |
| AttributeIDMap | unique_attribute_id |
| unordered_map< const float *, size_t > | bsdf_tables |
| thread_spin_lock | attribute_lock_ |
| float3 | xyz_to_r |
| float3 | xyz_to_g |
| float3 | xyz_to_b |
| float3 | rgb_to_y |
| float3 | white_xyz |
| float3 | rec709_to_r |
| float3 | rec709_to_g |
| float3 | rec709_to_b |
| bool | is_rec709 |
Static Protected Attributes | |
| static thread_mutex | lookup_table_mutex |
Definition at line 169 of file scene/shader.h.
|
protected |
Definition at line 224 of file scene/shader.h.
| anonymous enum : uint32_t |
| Enumerator | |
|---|---|
| SHADER_ADDED | |
| SHADER_MODIFIED | |
| UPDATE_ALL | |
| UPDATE_NONE | |
Definition at line 171 of file scene/shader.h.
|
virtualdefault |
|
protected |
Definition at line 421 of file scene/shader.cpp.
References init_xyz_transforms(), UPDATE_ALL, and update_flags.
|
static |
Definition at line 682 of file scene/shader.cpp.
References Scene::create_node(), Scene::default_background, Scene::default_empty, Scene::default_light, Scene::default_surface, Scene::default_volume, make_float3(), Node::name, ShaderNode::output(), Node::reference(), Shader::set_graph(), and Shader::tag_update().
Referenced by Scene::reset().
|
static |
Definition at line 430 of file scene/shader.cpp.
References SHADINGSYSTEM_OSL.
Referenced by Scene::Scene().
|
pure virtual |
Implemented in SVMShaderManager.
References flag.
|
protected |
Definition at line 672 of file scene/shader.cpp.
References bsdf_tables, device_vector< T >::free(), Scene::lookup_tables, and DeviceScene::shaders.
Referenced by SVMShaderManager::device_free().
|
protected |
Definition at line 537 of file scene/shader.cpp.
References device_vector< T >::alloc(), KernelShader::constant_emission, KernelShader::cryptomatte_id, DeviceScene::data, DISPLACE_BUMP, Shader::emission_estimate, Shader::emission_is_constant, Shader::emission_sampling, EMISSION_SAMPLING_BACK, EMISSION_SAMPLING_FRONT, EMISSION_SAMPLING_FRONT_BACK, unique_ptr_vector< T >::empty(), ensure_bsdf_table(), flag, KernelShader::flags, device_vector< T >::free(), KernelTables::ggx_E, KernelTables::ggx_Eavg, KernelTables::ggx_gen_schlick_ior_s, KernelTables::ggx_gen_schlick_s, KernelTables::ggx_glass_E, KernelTables::ggx_glass_Eavg, KernelTables::ggx_glass_inv_E, KernelTables::ggx_glass_inv_Eavg, Shader::has_bssrdf_bump, Shader::has_bump_from_displacement, Shader::has_bump_from_surface, Shader::has_surface, Shader::has_surface_raytrace, Shader::has_surface_transparent, Shader::has_volume, Shader::has_volume_attribute_dependency, Shader::has_volume_connected, Shader::has_volume_spatial_varying, is_rec709, is_zero(), make_float4(), Node::name, KernelShader::pass_id, rec709_to_b, rec709_to_g, rec709_to_r, rgb_to_y, SD_HAS_BSSRDF_BUMP, SD_HAS_BUMP_FROM_DISPLACEMENT, SD_HAS_BUMP_FROM_SURFACE, SD_HAS_CONSTANT_EMISSION, SD_HAS_DISPLACEMENT, SD_HAS_EMISSION, SD_HAS_ONLY_VOLUME, SD_HAS_RAYTRACE, SD_HAS_TRANSPARENT_SHADOW, SD_HAS_VOLUME, SD_HETEROGENEOUS_VOLUME, SD_MIS_BACK, SD_MIS_FRONT, SD_NEED_VOLUME_ATTRIBUTES, SD_USE_BUMP_MAP_CORRECTION, SD_VOLUME_CUBIC, SD_VOLUME_EQUIANGULAR, SD_VOLUME_MIS, DeviceScene::shaders, Scene::shaders, KernelTables::sheen_ltc, unique_ptr_vector< T >::size(), util_hash_to_float(), util_murmur_hash3(), VOLUME_INTERPOLATION_CUBIC, VOLUME_SAMPLING_EQUIANGULAR, VOLUME_SAMPLING_MULTIPLE_IMPORTANCE, white_xyz, float3::x, xyz_to_b, xyz_to_g, xyz_to_r, float3::y, and float3::z.
Referenced by SVMShaderManager::device_update_specific().
| void ShaderManager::device_update_post | ( | Device * | device, |
| DeviceScene * | dscene, | ||
| Scene * | scene, | ||
| Progress & | progress ) |
Definition at line 525 of file scene/shader.cpp.
References device_vector< T >::copy_to_device_if_modified(), device_update_specific(), progress, DeviceScene::shaders, and DeviceScene::svm_nodes.
| void ShaderManager::device_update_pre | ( | Device * | device, |
| DeviceScene * | dscene, | ||
| Scene * | scene, | ||
| Progress & | progress ) |
Definition at line 486 of file scene/shader.cpp.
References assert, Scene::default_background, Scene::default_empty, Scene::default_light, Scene::default_surface, DISPLACE_BOTH, DISPLACE_TRUE, Shader::graph, Shader::has_bssrdf_bump, Shader::has_bump_from_displacement, Shader::id, Node::is_modified(), need_update(), output, Node::reference_count(), and Scene::shaders.
|
protectedpure virtual |
|
inlineprotected |
Definition at line 244 of file scene/shader.h.
References ensure_bsdf_table_impl().
Referenced by device_update_common().
|
protected |
Definition at line 981 of file scene/shader.cpp.
References bsdf_tables, and Scene::lookup_tables.
Referenced by ensure_bsdf_table().
|
virtual |
Definition at line 465 of file scene/shader.cpp.
|
virtual |
Definition at line 449 of file scene/shader.cpp.
References ATTR_STD_NUM, attribute_lock_, lock, and unique_attribute_id.
| string ShaderManager::get_cryptomatte_materials | ( | Scene * | scene | ) |
Definition at line 826 of file scene/shader.cpp.
References Node::name, Scene::shaders, string_printf(), and util_murmur_hash3().
|
protected |
Definition at line 761 of file scene/shader.cpp.
References CLOSURE_IS_VOLUME, BsdfBaseNode::get_closure_type(), ShaderNode::get_feature(), ShaderNode::has_surface_bssrdf(), ShaderNode::has_surface_transparent(), KERNEL_FEATURE_NODE_VOLUME, KERNEL_FEATURE_SUBSURFACE, KERNEL_FEATURE_TRANSPARENT, ShaderGraph::nodes, SHADER_SPECIAL_TYPE_CLOSURE, and ShaderNode::special_type.
Referenced by get_kernel_features().
Definition at line 784 of file scene/shader.cpp.
References DISPLACE_BOTH, get_graph_kernel_features(), Shader::graph, Shader::has_volume_connected, i, ShaderNode::input(), KERNEL_FEATURE_NODE_BSDF, KERNEL_FEATURE_NODE_BUMP, KERNEL_FEATURE_NODE_BUMP_STATE, KERNEL_FEATURE_NODE_EMISSION, KERNEL_FEATURE_OSL_SHADING, KERNEL_FEATURE_VOLUME, ShaderInput::link, Node::reference_count(), Scene::shaders, unique_ptr_vector< T >::size(), and use_osl().
Definition at line 470 of file scene/shader.cpp.
References Shader::id, SHADER_AREA_LIGHT, SHADER_CAST_SHADOW, and SHADER_SMOOTH_NORMAL.
| void ShaderManager::init_xyz_transforms | ( | ) |
Definition at line 885 of file scene/shader.cpp.
References is_rec709, make_float3(), make_transform(), one_float3(), rec709_to_b, rec709_to_g, rec709_to_r, rec709_to_rgb(), rgb_to_y, transform_direction(), transform_equal_threshold(), transform_inverse(), VLOG_WARNING, white_xyz, Transform::x, xyz_to_b, xyz_to_g, xyz_to_r, xyz_to_rgb(), Transform::y, and Transform::z.
Referenced by ShaderManager().
| float ShaderManager::linear_rgb_to_gray | ( | const float3 | c | ) |
Definition at line 816 of file scene/shader.cpp.
| bool ShaderManager::need_update | ( | ) | const |
Definition at line 849 of file scene/shader.cpp.
References update_flags, and UPDATE_NONE.
Referenced by device_update_pre(), and SVMShaderManager::device_update_specific().
Definition at line 821 of file scene/shader.cpp.
References rec709_to_b, rec709_to_g, rec709_to_r, and to_local().
| void ShaderManager::tag_update | ( | Scene * | scene, |
| const uint32_t | flag ) |
Definition at line 843 of file scene/shader.cpp.
References UPDATE_ALL, and update_flags.
|
inlinevirtual |
Definition at line 184 of file scene/shader.h.
Referenced by get_kernel_features(), and xml_read_shader_graph().
|
protected |
Definition at line 231 of file scene/shader.h.
Referenced by get_attribute_id().
|
protected |
Definition at line 229 of file scene/shader.h.
Referenced by device_free_common(), and ensure_bsdf_table_impl().
|
protected |
Definition at line 241 of file scene/shader.h.
Referenced by device_update_common(), and init_xyz_transforms().
|
staticprotected |
Definition at line 227 of file scene/shader.h.
|
protected |
Definition at line 240 of file scene/shader.h.
Referenced by device_update_common(), init_xyz_transforms(), and rec709_to_scene_linear().
|
protected |
Definition at line 239 of file scene/shader.h.
Referenced by device_update_common(), init_xyz_transforms(), and rec709_to_scene_linear().
|
protected |
Definition at line 238 of file scene/shader.h.
Referenced by device_update_common(), init_xyz_transforms(), and rec709_to_scene_linear().
|
protected |
Definition at line 236 of file scene/shader.h.
Referenced by device_update_common(), init_xyz_transforms(), and linear_rgb_to_gray().
|
protected |
Definition at line 225 of file scene/shader.h.
Referenced by get_attribute_id().
|
protected |
Definition at line 222 of file scene/shader.h.
Referenced by SVMShaderManager::device_update_specific(), need_update(), ShaderManager(), and tag_update().
|
protected |
Definition at line 237 of file scene/shader.h.
Referenced by device_update_common(), and init_xyz_transforms().
|
protected |
Definition at line 235 of file scene/shader.h.
Referenced by device_update_common(), and init_xyz_transforms().
|
protected |
Definition at line 234 of file scene/shader.h.
Referenced by device_update_common(), and init_xyz_transforms().
|
protected |
Definition at line 233 of file scene/shader.h.
Referenced by device_update_common(), and init_xyz_transforms().