|
Blender V4.3
|
#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 void | reset (Scene *scene)=0 |
| virtual bool | use_osl () |
| void | device_update (Device *device, DeviceScene *dscene, Scene *scene, Progress &progress) |
| virtual void | device_update_specific (Device *device, DeviceScene *dscene, Scene *scene, Progress &progress)=0 |
| virtual void | device_free (Device *device, DeviceScene *dscene, Scene *scene)=0 |
| void | device_update_common (Device *device, DeviceScene *dscene, Scene *scene, Progress &progress) |
| void | device_free_common (Device *device, DeviceScene *dscene, Scene *scene) |
| 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 (float3 c) |
| float3 | rec709_to_scene_linear (float3 c) |
| string | get_cryptomatte_materials (Scene *scene) |
| void | tag_update (Scene *scene, uint32_t flag) |
| bool | need_update () const |
| void | init_xyz_transforms () |
Static Public Member Functions | |
| static ShaderManager * | create (int shadingsystem, Device *device) |
| static void | add_default (Scene *scene) |
| static void | free_memory () |
Protected Types | |
| typedef unordered_map< ustring, uint64_t, ustringHash > | AttributeIDMap |
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, size_t n) |
| uint | get_graph_kernel_features (ShaderGraph *graph) |
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 166 of file scene/shader.h.
|
protected |
Definition at line 231 of file scene/shader.h.
| anonymous enum : uint32_t |
| Enumerator | |
|---|---|
| SHADER_ADDED | |
| SHADER_MODIFIED | |
| UPDATE_ALL | |
| UPDATE_NONE | |
Definition at line 168 of file scene/shader.h.
|
virtual |
Definition at line 436 of file scene/shader.cpp.
|
protected |
Definition at line 429 of file scene/shader.cpp.
References init_xyz_transforms(), UPDATE_ALL, and update_flags.
|
static |
Definition at line 662 of file scene/shader.cpp.
References make_float3(), Node::name, and ShaderNode::output().
Referenced by Scene::reset(), and Scene::Scene().
|
static |
Definition at line 438 of file scene/shader.cpp.
References SHADINGSYSTEM_OSL.
Referenced by Scene::Scene().
|
pure virtual |
Implemented in SVMShaderManager.
Referenced by Scene::free_memory().
| void ShaderManager::device_free_common | ( | Device * | device, |
| DeviceScene * | dscene, | ||
| Scene * | scene ) |
Definition at line 652 of file scene/shader.cpp.
References bsdf_tables, device_vector< T >::free(), and DeviceScene::shaders.
Referenced by SVMShaderManager::device_free().
| void ShaderManager::device_update | ( | Device * | device, |
| DeviceScene * | dscene, | ||
| Scene * | scene, | ||
| Progress & | progress ) |
Definition at line 495 of file scene/shader.cpp.
References device_update_specific(), and need_update().
Referenced by Scene::device_update().
| void ShaderManager::device_update_common | ( | Device * | device, |
| DeviceScene * | dscene, | ||
| Scene * | scene, | ||
| Progress & | progress ) |
Definition at line 519 of file scene/shader.cpp.
References device_vector< T >::alloc(), KernelShader::constant_emission, device_vector< T >::copy_to_device(), KernelShader::cryptomatte_id, DeviceScene::data, DISPLACE_BUMP, EMISSION_SAMPLING_BACK, EMISSION_SAMPLING_FRONT, EMISSION_SAMPLING_FRONT_BACK, ensure_bsdf_table(), flag, KernelShader::flags, float3_to_float4(), 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, is_rec709, is_zero(), KernelShader::pass_id, rec709_to_b, rec709_to_g, rec709_to_r, rgb_to_y, SD_HAS_BSSRDF_BUMP, SD_HAS_BUMP, 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, KernelTables::sheen_ltc, util_hash_to_float(), util_murmur_hash3(), VOLUME_INTERPOLATION_CUBIC, VOLUME_SAMPLING_EQUIANGULAR, VOLUME_SAMPLING_MULTIPLE_IMPORTANCE, white_xyz, xyz_to_b, xyz_to_g, and xyz_to_r.
|
pure virtual |
Implemented in SVMShaderManager.
Referenced by device_update().
|
inlineprotected |
Definition at line 239 of file scene/shader.h.
References ensure_bsdf_table_impl().
Referenced by device_update_common().
|
protected |
Definition at line 965 of file scene/shader.cpp.
References bsdf_tables.
Referenced by ensure_bsdf_table().
|
static |
Definition at line 799 of file scene/shader.cpp.
References ColorSpaceManager::free_memory().
Referenced by exit_func().
|
virtual |
Definition at line 474 of file scene/shader.cpp.
|
virtual |
Definition at line 458 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 819 of file scene/shader.cpp.
References string_printf(), and util_murmur_hash3().
|
protected |
Definition at line 744 of file scene/shader.cpp.
References CLOSURE_IS_VOLUME, BsdfBaseNode::get_closure_type(), KERNEL_FEATURE_NODE_VOLUME, KERNEL_FEATURE_SUBSURFACE, KERNEL_FEATURE_TRANSPARENT, node, and SHADER_SPECIAL_TYPE_CLOSURE.
Referenced by get_kernel_features().
Definition at line 767 of file scene/shader.cpp.
References DISPLACE_BOTH, get_graph_kernel_features(), ShaderNode::input(), KERNEL_FEATURE_NODE_BSDF, KERNEL_FEATURE_NODE_BUMP, KERNEL_FEATURE_NODE_BUMP_STATE, KERNEL_FEATURE_NODE_EMISSION, KERNEL_FEATURE_OSL, KERNEL_FEATURE_VOLUME, ShaderInput::link, NULL, ShaderNode::output(), and use_osl().
Referenced by Scene::update_kernel_features().
Definition at line 479 of file scene/shader.cpp.
References SHADER_AREA_LIGHT, SHADER_CAST_SHADOW, and SHADER_SMOOTH_NORMAL.
| void ShaderManager::init_xyz_transforms | ( | ) |
Definition at line 877 of file scene/shader.cpp.
References float4_to_float3(), 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(), white_xyz, float3::x, Transform::x, xyz_to_b, xyz_to_g, xyz_to_r, xyz_to_rgb(), float3::y, Transform::y, float3::z, and Transform::z.
Referenced by ShaderManager().
Definition at line 809 of file scene/shader.cpp.
References dot(), and rgb_to_y.
Referenced by ConvertNode::constant_fold(), and RGBToBWNode::constant_fold().
| bool ShaderManager::need_update | ( | ) | const |
Definition at line 841 of file scene/shader.cpp.
References update_flags, and UPDATE_NONE.
Referenced by device_update(), SVMShaderManager::device_update_specific(), and Scene::need_data_update().
Definition at line 814 of file scene/shader.cpp.
References dot(), make_float3(), rec709_to_b, rec709_to_g, and rec709_to_r.
Referenced by BlackbodyNode::constant_fold().
|
pure virtual |
Implemented in SVMShaderManager.
Referenced by Scene::reset().
Definition at line 835 of file scene/shader.cpp.
References UPDATE_ALL, and update_flags.
Referenced by Scene::create_node().
|
inlinevirtual |
Definition at line 183 of file scene/shader.h.
Referenced by get_kernel_features(), Scene::get_max_closure_count(), and xml_read_shader_graph().
|
protected |
Definition at line 247 of file scene/shader.h.
Referenced by get_attribute_id().
|
protected |
Definition at line 236 of file scene/shader.h.
Referenced by device_free_common(), and ensure_bsdf_table_impl().
|
protected |
Definition at line 257 of file scene/shader.h.
Referenced by device_update_common(), and init_xyz_transforms().
|
staticprotected |
Definition at line 234 of file scene/shader.h.
|
protected |
Definition at line 256 of file scene/shader.h.
Referenced by device_update_common(), init_xyz_transforms(), and rec709_to_scene_linear().
|
protected |
Definition at line 255 of file scene/shader.h.
Referenced by device_update_common(), init_xyz_transforms(), and rec709_to_scene_linear().
|
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 252 of file scene/shader.h.
Referenced by device_update_common(), init_xyz_transforms(), and linear_rgb_to_gray().
|
protected |
Definition at line 232 of file scene/shader.h.
Referenced by get_attribute_id().
|
protected |
Definition at line 229 of file scene/shader.h.
Referenced by need_update(), ShaderManager(), and tag_update().
|
protected |
Definition at line 253 of file scene/shader.h.
Referenced by device_update_common(), and init_xyz_transforms().
|
protected |
Definition at line 251 of file scene/shader.h.
Referenced by device_update_common(), and init_xyz_transforms().
|
protected |
Definition at line 250 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().