|
Blender V5.0
|
#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 } |
| enum class | SceneLinearSpace { Rec709 , Rec2020 , ACEScg , Unknown } |
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 () |
| SceneLinearSpace | get_scene_linear_space () |
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) |
| void | compute_thin_film_table (const Transform &xyz_to_rgb) |
| 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 |
| size_t | thin_film_table_offset_ |
| 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 |
| SceneLinearSpace | scene_linear_space |
| vector< float > | thin_film_table |
Static Protected Attributes | |
| static thread_mutex | lookup_table_mutex |
Definition at line 175 of file scene/shader.h.
|
protected |
Definition at line 237 of file scene/shader.h.
| anonymous enum : uint32_t |
| Enumerator | |
|---|---|
| SHADER_ADDED | |
| SHADER_MODIFIED | |
| UPDATE_ALL | |
| UPDATE_NONE | |
Definition at line 177 of file scene/shader.h.
|
strong |
| Enumerator | |
|---|---|
| Rec709 | |
| Rec2020 | |
| ACEScg | |
| Unknown | |
Definition at line 225 of file scene/shader.h.
|
virtualdefault |
|
protected |
Definition at line 448 of file scene/shader.cpp.
References init_xyz_transforms(), TABLE_OFFSET_INVALID, thin_film_table_offset_, UPDATE_ALL, and update_flags.
|
static |
Definition at line 741 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().
|
protected |
Definition at line 942 of file scene/shader.cpp.
References assert, i, make_float3(), thin_film_table, THIN_FILM_TABLE_SIZE, transform_direction(), float3::x, xyz_to_rgb(), float3::y, and float3::z.
Referenced by init_xyz_transforms().
|
static |
Definition at line 457 of file scene/shader.cpp.
References SHADINGSYSTEM_OSL.
Referenced by Scene::Scene().
|
pure virtual |
Implemented in SVMShaderManager.
|
protected |
Definition at line 729 of file scene/shader.cpp.
References bsdf_tables, device_vector< T >::free(), Scene::lookup_tables, DeviceScene::shaders, TABLE_OFFSET_INVALID, and thin_film_table_offset_.
Referenced by SVMShaderManager::device_free().
|
protected |
Definition at line 594 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, Shader::has_light_path_node, 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_zero(), Scene::lookup_tables, make_float4, Node::name, KernelShader::pass_id, Rec709, rec709_to_b, rec709_to_g, rec709_to_r, rgb_to_y, scene_linear_space, SD_HAS_BSSRDF_BUMP, SD_HAS_BUMP, SD_HAS_CONSTANT_EMISSION, SD_HAS_DISPLACEMENT, SD_HAS_EMISSION, SD_HAS_LIGHT_PATH_NODE, 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(), TABLE_OFFSET_INVALID, thin_film_table, thin_film_table_offset_, 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 582 of file scene/shader.cpp.
References device_vector< T >::copy_to_device_if_modified(), device_update_specific(), DeviceScene::shaders, and DeviceScene::svm_nodes.
| void ShaderManager::device_update_pre | ( | Device * | device, |
| DeviceScene * | dscene, | ||
| Scene * | scene, | ||
| Progress & | progress ) |
Definition at line 513 of file scene/shader.cpp.
References assert, DeviceScene::data, 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, Shader::has_displacement, Shader::has_light_path_node, Shader::has_surface, Shader::has_surface_bssrdf, Shader::has_surface_raytrace, Shader::has_surface_spatial_varying, Shader::has_surface_transparent, Shader::has_volume, Shader::has_volume_attribute_dependency, Shader::has_volume_spatial_varying, Shader::id, Node::is_modified(), need_update(), output, Node::reference_count(), SHADER_SPECIAL_TYPE_LIGHT_PATH, Scene::shaders, ShaderNode::special_type, and Scene::tag_has_volume_modified().
|
protectedpure virtual |
Implemented in SVMShaderManager.
Referenced by device_update_post().
|
inlineprotected |
Definition at line 259 of file scene/shader.h.
References ensure_bsdf_table_impl().
Referenced by device_update_common().
|
protected |
Definition at line 1142 of file scene/shader.cpp.
References bsdf_tables, and Scene::lookup_tables.
Referenced by ensure_bsdf_table().
|
virtual |
Definition at line 492 of file scene/shader.cpp.
|
virtual |
Definition at line 476 of file scene/shader.cpp.
References ATTR_STD_NUM, attribute_lock_, lock, name, and unique_attribute_id.
| string ShaderManager::get_cryptomatte_materials | ( | Scene * | scene | ) |
Definition at line 883 of file scene/shader.cpp.
References Node::name, Scene::shaders, string_printf(), and util_murmur_hash3().
|
protected |
Definition at line 818 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 841 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().
|
inline |
Definition at line 227 of file scene/shader.h.
References scene_linear_space.
Definition at line 497 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 1005 of file scene/shader.cpp.
References ACEScg, compute_thin_film_table(), LOG_WARNING, make_float3(), make_transform(), one_float3(), Rec2020, Rec709, rec709_to_b, rec709_to_g, rec709_to_r, rec709_to_rgb(), rgb_to_y, scene_linear_space, transform_direction(), transform_equal_threshold(), transform_inverse(), Unknown, white_xyz, Transform::x, xyz_to_b, xyz_to_g, xyz_to_r, xyz_to_rgb(), Transform::y, and Transform::z.
Referenced by ShaderManager().
Definition at line 873 of file scene/shader.cpp.
| bool ShaderManager::need_update | ( | ) | const |
Definition at line 906 of file scene/shader.cpp.
References update_flags, and UPDATE_NONE.
Referenced by device_update_pre(), and SVMShaderManager::device_update_specific().
Definition at line 878 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 900 of file scene/shader.cpp.
References UPDATE_ALL, and update_flags.
|
inlinevirtual |
Definition at line 190 of file scene/shader.h.
Referenced by get_kernel_features(), and xml_read_shader_graph().
|
protected |
Definition at line 245 of file scene/shader.h.
Referenced by get_attribute_id().
|
protected |
Definition at line 242 of file scene/shader.h.
Referenced by device_free_common(), and ensure_bsdf_table_impl().
|
staticprotected |
Definition at line 240 of file scene/shader.h.
|
protected |
Definition at line 254 of file scene/shader.h.
Referenced by device_update_common(), init_xyz_transforms(), and rec709_to_scene_linear().
|
protected |
Definition at line 253 of file scene/shader.h.
Referenced by device_update_common(), init_xyz_transforms(), and rec709_to_scene_linear().
|
protected |
Definition at line 252 of file scene/shader.h.
Referenced by device_update_common(), init_xyz_transforms(), and rec709_to_scene_linear().
|
protected |
Definition at line 250 of file scene/shader.h.
Referenced by device_update_common(), init_xyz_transforms(), and linear_rgb_to_gray().
|
protected |
Definition at line 255 of file scene/shader.h.
Referenced by device_update_common(), get_scene_linear_space(), and init_xyz_transforms().
Definition at line 256 of file scene/shader.h.
Referenced by compute_thin_film_table(), and device_update_common().
|
protected |
Definition at line 243 of file scene/shader.h.
Referenced by device_free_common(), device_update_common(), and ShaderManager().
|
protected |
Definition at line 238 of file scene/shader.h.
Referenced by get_attribute_id().
|
protected |
Definition at line 235 of file scene/shader.h.
Referenced by SVMShaderManager::device_update_specific(), need_update(), ShaderManager(), and tag_update().
|
protected |
Definition at line 251 of file scene/shader.h.
Referenced by device_update_common(), and init_xyz_transforms().
|
protected |
Definition at line 249 of file scene/shader.h.
Referenced by device_update_common(), and init_xyz_transforms().
|
protected |
Definition at line 248 of file scene/shader.h.
Referenced by device_update_common(), and init_xyz_transforms().
|
protected |
Definition at line 247 of file scene/shader.h.
Referenced by device_update_common(), and init_xyz_transforms().