Blender
V3.3
|
#include <shader.h>
Public Types | |
enum | : uint32_t { SHADER_ADDED = (1 << 0) , SHADER_MODIFIED = (1 << 2) , INTEGRATOR_MODIFIED = (1 << 3) , 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) |
uint | get_attribute_id (ustring name) |
uint | 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) |
static void | add_default (Scene *scene) |
static void | free_memory () |
Protected Types | |
typedef unordered_map< ustring, uint, ustringHash > | AttributeIDMap |
Protected Member Functions | |
ShaderManager () | |
uint | get_graph_kernel_features (ShaderGraph *graph) |
Static Protected Attributes | |
static thread_mutex | lookup_table_mutex |
static vector< float > | beckmann_table |
static bool | beckmann_table_ready = false |
Definition at line 160 of file scene/shader.h.
|
protected |
Definition at line 226 of file scene/shader.h.
anonymous enum : uint32_t |
Enumerator | |
---|---|
SHADER_ADDED | |
SHADER_MODIFIED | |
INTEGRATOR_MODIFIED | |
UPDATE_ALL | |
UPDATE_NONE |
Definition at line 162 of file scene/shader.h.
|
virtual |
Definition at line 394 of file scene/shader.cpp.
|
protected |
Definition at line 386 of file scene/shader.cpp.
References beckmann_table_offset, init_xyz_transforms(), TABLE_OFFSET_INVALID, UPDATE_ALL, and update_flags.
Definition at line 595 of file scene/shader.cpp.
References Scene::create_node(), Scene::default_background, Scene::default_empty, Scene::default_light, Scene::default_surface, Scene::default_volume, graph, make_float3, Node::name, ShaderNode::output(), Node::reference(), scene, Shader::set_graph(), and Shader::tag_update().
Referenced by Scene::reset(), and Scene::Scene().
|
static |
Definition at line 398 of file scene/shader.cpp.
References SHADINGSYSTEM_OSL, and void.
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 588 of file scene/shader.cpp.
References beckmann_table_offset, device_vector< T >::free(), Scene::lookup_tables, LookupTables::remove_table(), scene, and DeviceScene::shaders.
Referenced by SVMShaderManager::device_free().
void ShaderManager::device_update | ( | Device * | device, |
DeviceScene * | dscene, | ||
Scene * | scene, | ||
Progress & | progress | ||
) |
Definition at line 452 of file scene/shader.cpp.
References Scene::default_background, Scene::default_empty, Scene::default_light, Scene::default_surface, device_update_specific(), Shader::id, need_update(), Node::reference_count(), scene, and Scene::shaders.
Referenced by Scene::device_update().
void ShaderManager::device_update_common | ( | Device * | device, |
DeviceScene * | dscene, | ||
Scene * | scene, | ||
Progress & | progress | ||
) |
Definition at line 476 of file scene/shader.cpp.
References LookupTables::add_table(), device_vector< T >::alloc(), KernelTables::beckmann_offset, beckmann_table, beckmann_table_build(), beckmann_table_offset, beckmann_table_ready, KernelShader::constant_emission, device_vector< T >::copy_to_device(), KernelShader::cryptomatte_id, DeviceScene::data, DISPLACE_BUMP, KernelShader::flags, float3_to_float4(), device_vector< T >::free(), Shader::has_bssrdf_bump, Shader::has_bump, Shader::has_surface, Shader::has_surface_emission, 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, Shader::is_constant_emission(), is_rec709, lock, lookup_table_mutex, Scene::lookup_tables, Node::name, KernelShader::pass_id, rec709_to_b, rec709_to_g, rec709_to_r, rgb_to_y, scene, 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_NEED_VOLUME_ATTRIBUTES, SD_USE_MIS, SD_VOLUME_CUBIC, SD_VOLUME_EQUIANGULAR, SD_VOLUME_MIS, DeviceScene::shaders, Scene::shaders, TABLE_OFFSET_INVALID, KernelData::tables, util_hash_to_float(), util_murmur_hash3(), VOLUME_INTERPOLATION_CUBIC, VOLUME_SAMPLING_EQUIANGULAR, VOLUME_SAMPLING_MULTIPLE_IMPORTANCE, float3::x, xyz_to_b, xyz_to_g, xyz_to_r, float3::y, float3::z, and zero_float3().
|
pure virtual |
Implemented in SVMShaderManager.
Referenced by device_update().
|
static |
Definition at line 731 of file scene/shader.cpp.
References beckmann_table, and ColorSpaceManager::free_memory().
Referenced by exit_func().
uint ShaderManager::get_attribute_id | ( | AttributeStandard | std | ) |
Definition at line 432 of file scene/shader.cpp.
uint ShaderManager::get_attribute_id | ( | ustring | name | ) |
Definition at line 417 of file scene/shader.cpp.
References ATTR_STD_NUM, attribute_lock_, id, lock, and unique_attribute_id.
Referenced by SVMCompiler::attribute(), and emit_attribute_mapping().
string ShaderManager::get_cryptomatte_materials | ( | Scene * | scene | ) |
Definition at line 752 of file scene/shader.cpp.
References materials, Node::name, scene, Scene::shaders, string_printf(), and util_murmur_hash3().
Referenced by BlenderSession::stamp_view_layer_metadata().
|
protected |
Definition at line 677 of file scene/shader.cpp.
References CLOSURE_IS_PRINCIPLED, CLOSURE_IS_VOLUME, BsdfBaseNode::get_closure_type(), graph, KERNEL_FEATURE_NODE_VOLUME, KERNEL_FEATURE_PRINCIPLED, KERNEL_FEATURE_SUBSURFACE, KERNEL_FEATURE_TRANSPARENT, node, and SHADER_SPECIAL_TYPE_CLOSURE.
Referenced by get_kernel_features().
Definition at line 703 of file scene/shader.cpp.
References DISPLACE_BOTH, get_graph_kernel_features(), Shader::graph, Shader::has_volume_connected, ShaderNode::input(), KERNEL_FEATURE_NODE_BSDF, KERNEL_FEATURE_NODE_BUMP, KERNEL_FEATURE_NODE_BUMP_STATE, KERNEL_FEATURE_NODE_EMISSION, KERNEL_FEATURE_VOLUME, ShaderInput::link, NULL, ShaderGraph::output(), Node::reference_count(), scene, and Scene::shaders.
Referenced by Scene::update_kernel_features().
Definition at line 437 of file scene/shader.cpp.
References Shader::id, id, SHADER_AREA_LIGHT, SHADER_CAST_SHADOW, SHADER_SMOOTH_NORMAL, and smooth().
Referenced by LightManager::device_update_points(), PointCloud::pack(), Hair::pack_curves(), and Mesh::pack_shaders().
void ShaderManager::init_xyz_transforms | ( | ) |
Definition at line 810 of file scene/shader.cpp.
References float4_to_float3(), is_rec709, make_float3, make_transform(), rec709_to_b, rec709_to_g, rec709_to_r, rec709_to_rgb(), rgb_to_y, transform_equal_threshold(), transform_inverse(), 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 742 of file scene/shader.cpp.
References Freestyle::c, blender::math::dot(), and rgb_to_y.
Referenced by RGBToBWNode::constant_fold(), and ConvertNode::constant_fold().
bool ShaderManager::need_update | ( | ) | const |
Definition at line 774 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 747 of file scene/shader.cpp.
References Freestyle::c, blender::math::dot(), make_float3, rec709_to_b, rec709_to_g, and rec709_to_r.
Referenced by BlackbodyNode::constant_fold().
Implemented in SVMShaderManager.
Referenced by Scene::reset().
Definition at line 768 of file scene/shader.cpp.
References UPDATE_ALL, and update_flags.
Referenced by Scene::create_node(), Shader::tag_update(), Integrator::tag_update(), and Shader::tag_used().
|
inlinevirtual |
Definition at line 178 of file scene/shader.h.
Referenced by add_node(), GeometryManager::device_update_attributes(), Scene::get_max_closure_count(), ShaderGraph::simplify(), and xml_read_shader_graph().
|
protected |
Definition at line 237 of file scene/shader.h.
Referenced by get_attribute_id().
Definition at line 230 of file scene/shader.h.
Referenced by device_update_common(), and free_memory().
|
protected |
Definition at line 233 of file scene/shader.h.
Referenced by device_free_common(), device_update_common(), and ShaderManager().
|
staticprotected |
Definition at line 231 of file scene/shader.h.
Referenced by device_update_common().
|
protected |
Definition at line 246 of file scene/shader.h.
Referenced by device_update_common(), and init_xyz_transforms().
|
staticprotected |
Definition at line 229 of file scene/shader.h.
Referenced by device_update_common().
|
protected |
Definition at line 245 of file scene/shader.h.
Referenced by device_update_common(), init_xyz_transforms(), and rec709_to_scene_linear().
|
protected |
Definition at line 244 of file scene/shader.h.
Referenced by device_update_common(), init_xyz_transforms(), and rec709_to_scene_linear().
|
protected |
Definition at line 243 of file scene/shader.h.
Referenced by device_update_common(), init_xyz_transforms(), and rec709_to_scene_linear().
|
protected |
Definition at line 242 of file scene/shader.h.
Referenced by device_update_common(), init_xyz_transforms(), and linear_rgb_to_gray().
|
protected |
Definition at line 227 of file scene/shader.h.
Referenced by get_attribute_id().
|
protected |
Definition at line 224 of file scene/shader.h.
Referenced by need_update(), ShaderManager(), and tag_update().
|
protected |
Definition at line 241 of file scene/shader.h.
Referenced by device_update_common(), and init_xyz_transforms().
|
protected |
Definition at line 240 of file scene/shader.h.
Referenced by device_update_common(), and init_xyz_transforms().
|
protected |
Definition at line 239 of file scene/shader.h.
Referenced by device_update_common(), and init_xyz_transforms().