|
Blender V4.3
|
#include <svm.h>
Classes | |
| struct | CompilerState |
| struct | Stack |
| struct | Summary |
Public Attributes | |
| Scene * | scene |
| ShaderGraph * | current_graph |
| bool | background |
Protected Member Functions | |
| void | stack_clear_temporary (ShaderNode *node) |
| int | stack_size (SocketType::Type type) |
| void | stack_clear_users (ShaderNode *node, ShaderNodeSet &done) |
| void | find_dependencies (ShaderNodeSet &dependencies, const ShaderNodeSet &done, ShaderInput *input, ShaderNode *skip_node=NULL) |
| void | find_aov_nodes_and_dependencies (ShaderNodeSet &aov_nodes, ShaderGraph *graph, CompilerState *state) |
| void | generate_node (ShaderNode *node, ShaderNodeSet &done) |
| void | generate_aov_node (ShaderNode *node, CompilerState *state) |
| void | generate_closure_node (ShaderNode *node, CompilerState *state) |
| void | generated_shared_closure_nodes (ShaderNode *root_node, ShaderNode *node, CompilerState *state, const ShaderNodeSet &shared) |
| void | generate_svm_nodes (const ShaderNodeSet &nodes, CompilerState *state) |
| void | generate_multi_closure (ShaderNode *root_node, ShaderNode *node, CompilerState *state) |
| void | compile_type (Shader *shader, ShaderGraph *graph, ShaderType type) |
Protected Attributes | |
| std::atomic_int * | svm_node_types_used |
| array< int4 > | current_svm_nodes |
| ShaderType | current_type |
| Shader * | current_shader |
| Stack | active_stack |
| int | max_stack_use |
| uint | mix_weight_offset |
| uint | bump_state_offset |
| bool | compile_failed |
Definition at line 52 of file scene/svm.h.
| SVMCompiler::SVMCompiler | ( | Scene * | scene | ) |
Definition at line 158 of file svm.cpp.
References bump_state_offset, compile_failed, current_graph, current_shader, current_type, max_stack_use, mix_weight_offset, NULL, SHADER_TYPE_SURFACE, svm_node_types_used, and SVM_STACK_INVALID.
| void SVMCompiler::add_node | ( | const float4 & | f | ) |
Definition at line 406 of file svm.cpp.
References __float_as_int, current_svm_nodes, make_int4(), and array< T, alignment >::push_back_slow().
Definition at line 388 of file svm.cpp.
References b, current_svm_nodes, make_int4(), and array< T, alignment >::push_back_slow().
| void SVMCompiler::add_node | ( | ShaderNodeType | type, |
| const float3 & | f ) |
Definition at line 399 of file svm.cpp.
References __float_as_int, current_svm_nodes, make_int4(), array< T, alignment >::push_back_slow(), svm_node_types_used, float3::x, float3::y, and float3::z.
| void SVMCompiler::add_node | ( | ShaderNodeType | type, |
| int | a = 0, | ||
| int | b = 0, | ||
| int | c = 0 ) |
Definition at line 393 of file svm.cpp.
References b, current_svm_nodes, make_int4(), array< T, alignment >::push_back_slow(), and svm_node_types_used.
Referenced by BsdfNode::compile(), CurvesNode::compile(), TextureMapping::compile(), VolumeNode::compile(), compile_type(), and stack_assign().
| uint SVMCompiler::attribute | ( | AttributeStandard | std | ) |
| uint SVMCompiler::attribute_standard | ( | ustring | name | ) |
Definition at line 422 of file svm.cpp.
References attribute, and Attribute::name_standard().
|
inline |
Definition at line 106 of file scene/svm.h.
References mix_weight_offset.
Referenced by BsdfNode::compile(), and VolumeNode::compile().
| void SVMCompiler::compile | ( | Shader * | shader, |
| array< int4 > & | svm_nodes, | ||
| int | index, | ||
| Summary * | summary = NULL ) |
Definition at line 870 of file svm.cpp.
References array< T, alignment >::append(), compile_type(), current_shader, current_svm_nodes, DISPLACE_BOTH, DISPLACE_TRUE, Shader::has_surface, make_int4(), max_stack_use, NULL, SVMCompiler::Summary::num_svm_nodes, ShaderNode::output(), SVMCompiler::Summary::peak_stack_usage, array< T, alignment >::push_back_slow(), SHADER_TYPE_BUMP, SHADER_TYPE_DISPLACEMENT, SHADER_TYPE_SURFACE, SHADER_TYPE_VOLUME, array< T, alignment >::size(), svm_node_types_used, time_dt(), SVMCompiler::Summary::time_finalize, SVMCompiler::Summary::time_generate_bump, SVMCompiler::Summary::time_generate_displacement, SVMCompiler::Summary::time_generate_surface, SVMCompiler::Summary::time_generate_volume, SVMCompiler::Summary::time_total, and timer.
Referenced by SVMShaderManager::device_update_shader().
|
protected |
Definition at line 738 of file svm.cpp.
References active_stack, add_node(), bump_state_offset, array< T, alignment >::clear(), compile_failed, current_graph, current_svm_nodes, current_type, DISPLACE_BOTH, find_aov_nodes_and_dependencies(), generate_multi_closure(), generate_svm_nodes(), graph, KERNEL_FEATURE_NODE_MASK_BUMP, KERNEL_FEATURE_NODE_MASK_DISPLACEMENT, KERNEL_FEATURE_NODE_MASK_SURFACE, KERNEL_FEATURE_NODE_MASK_VOLUME, ShaderInput::link, NULL, ShaderNode::output(), ShaderOutput::parent, SHADER_TYPE_BUMP, SHADER_TYPE_DISPLACEMENT, SHADER_TYPE_SURFACE, SHADER_TYPE_VOLUME, stack_find_offset(), state, SVM_BUMP_EVAL_STATE_SIZE, and SVM_STACK_INVALID.
Referenced by compile().
Definition at line 378 of file svm.cpp.
Referenced by BsdfNode::compile(), CurvesNode::compile(), TextureMapping::compile(), and VolumeNode::compile().
|
protected |
Definition at line 567 of file svm.cpp.
References find_dependencies(), node, NULL, OutputAOVNode::offset, SHADER_SPECIAL_TYPE_OUTPUT_AOV, and state.
Referenced by compile_type().
|
protected |
Definition at line 428 of file svm.cpp.
References find_dependencies(), and NULL.
Referenced by find_aov_nodes_and_dependencies(), find_dependencies(), generate_closure_node(), and generate_multi_closure().
|
protected |
|
protected |
Definition at line 499 of file svm.cpp.
References current_shader, current_type, find_dependencies(), generate_node(), generate_svm_nodes(), Shader::has_bssrdf_bump, Shader::has_bump, Shader::has_surface_bssrdf, Shader::has_surface_transparent, ShaderInput::link, mix_weight_offset, NULL, SHADER_TYPE_SURFACE, SHADER_TYPE_VOLUME, ShaderInput::socket_type, stack_assign(), state, and SVM_STACK_INVALID.
Referenced by generate_multi_closure().
|
protected |
Definition at line 586 of file svm.cpp.
References current_svm_nodes, find_dependencies(), generate_closure_node(), generate_multi_closure(), generate_svm_nodes(), generated_shared_closure_nodes(), ShaderNode::inputs, ShaderInput::link, make_int4(), ShaderOutput::parent, array< T, alignment >::push_back_slow(), SHADER_SPECIAL_TYPE_COMBINE_CLOSURE, array< T, alignment >::size(), stack_assign(), ShaderInput::stack_offset, state, svm_node_types_used, and SVM_STACK_INVALID.
Referenced by compile_type(), generate_multi_closure(), and generated_shared_closure_nodes().
|
protected |
Definition at line 444 of file svm.cpp.
References current_shader, current_type, Shader::has_surface_raytrace, Shader::has_surface_spatial_varying, Shader::has_volume_attribute_dependency, Shader::has_volume_spatial_varying, KERNEL_FEATURE_NODE_RAYTRACE, SHADER_TYPE_SURFACE, SHADER_TYPE_VOLUME, stack_clear_temporary(), and stack_clear_users().
Referenced by generate_closure_node(), and generate_svm_nodes().
|
protected |
Definition at line 468 of file svm.cpp.
References generate_node(), and state.
Referenced by compile_type(), generate_closure_node(), and generate_multi_closure().
|
protected |
Definition at line 550 of file svm.cpp.
References SocketType::CLOSURE, generate_multi_closure(), generated_shared_closure_nodes(), and state.
Referenced by generate_multi_closure(), and generated_shared_closure_nodes().
|
inline |
Definition at line 110 of file scene/svm.h.
References bump_state_offset.
| bool SVMCompiler::is_linked | ( | ShaderInput * | input | ) |
Definition at line 297 of file svm.cpp.
Referenced by stack_assign_if_linked().
|
inline |
Definition at line 115 of file scene/svm.h.
References current_type.
| int SVMCompiler::stack_assign | ( | ShaderInput * | input | ) |
Definition at line 248 of file svm.cpp.
References __float_as_int, add_node(), SocketType::COLOR, SocketType::FLOAT, SocketType::INT, SocketType::NORMAL, SocketType::POINT, stack_find_offset(), SVM_STACK_INVALID, and SocketType::VECTOR.
| int SVMCompiler::stack_assign | ( | ShaderOutput * | output | ) |
Definition at line 287 of file svm.cpp.
References stack_find_offset(), and SVM_STACK_INVALID.
Referenced by BsdfNode::compile(), CurvesNode::compile(), VolumeNode::compile(), TextureMapping::compile_begin(), generate_closure_node(), generate_multi_closure(), stack_assign_if_linked(), and stack_assign_if_linked().
| int SVMCompiler::stack_assign_if_linked | ( | ShaderInput * | input | ) |
Definition at line 302 of file svm.cpp.
References is_linked(), stack_assign(), and SVM_STACK_INVALID.
Referenced by BsdfNode::compile(), and VolumeNode::compile().
| int SVMCompiler::stack_assign_if_linked | ( | ShaderOutput * | output | ) |
Definition at line 311 of file svm.cpp.
References stack_assign(), and SVM_STACK_INVALID.
| void SVMCompiler::stack_clear_offset | ( | SocketType::Type | type, |
| int | offset ) |
Definition at line 239 of file svm.cpp.
References active_stack, size(), stack_size(), and SVMCompiler::Stack::users.
Referenced by TextureMapping::compile_end(), stack_clear_temporary(), and stack_clear_users().
|
protected |
Definition at line 368 of file svm.cpp.
References stack_clear_offset(), and SVM_STACK_INVALID.
Referenced by generate_node().
|
protected |
Definition at line 336 of file svm.cpp.
References stack_clear_offset(), and SVM_STACK_INVALID.
Referenced by generate_node().
Definition at line 199 of file svm.cpp.
References active_stack, compile_failed, current_shader, max, max_stack_use, Node::name, size(), SVM_STACK_SIZE, and SVMCompiler::Stack::users.
Referenced by TextureMapping::compile_begin(), compile_type(), stack_assign(), stack_assign(), and stack_find_offset().
| int SVMCompiler::stack_find_offset | ( | SocketType::Type | type | ) |
Definition at line 234 of file svm.cpp.
References stack_find_offset(), and stack_size().
| void SVMCompiler::stack_link | ( | ShaderInput * | input, |
| ShaderOutput * | output ) |
Definition at line 320 of file svm.cpp.
References active_stack, size(), stack_size(), SVM_STACK_INVALID, and SVMCompiler::Stack::users.
|
protected |
Definition at line 173 of file svm.cpp.
References SocketType::CLOSURE, SocketType::COLOR, SocketType::FLOAT, SocketType::INT, SocketType::NORMAL, SocketType::POINT, size(), and SocketType::VECTOR.
Referenced by stack_clear_offset(), stack_find_offset(), and stack_link().
|
protected |
Definition at line 227 of file scene/svm.h.
Referenced by compile_type(), stack_clear_offset(), stack_find_offset(), and stack_link().
| bool SVMCompiler::background |
Definition at line 122 of file scene/svm.h.
Referenced by SVMShaderManager::device_update_shader().
|
protected |
Definition at line 230 of file scene/svm.h.
Referenced by compile_type(), get_bump_state_offset(), and SVMCompiler().
|
protected |
Definition at line 231 of file scene/svm.h.
Referenced by compile_type(), stack_find_offset(), and SVMCompiler().
| ShaderGraph* SVMCompiler::current_graph |
Definition at line 121 of file scene/svm.h.
Referenced by compile_type(), and SVMCompiler().
|
protected |
Definition at line 226 of file scene/svm.h.
Referenced by compile(), generate_closure_node(), generate_node(), stack_find_offset(), and SVMCompiler().
Definition at line 224 of file scene/svm.h.
Referenced by add_node(), add_node(), add_node(), add_node(), compile(), compile_type(), and generate_multi_closure().
|
protected |
Definition at line 225 of file scene/svm.h.
Referenced by compile_type(), generate_closure_node(), generate_node(), output_type(), and SVMCompiler().
|
protected |
Definition at line 228 of file scene/svm.h.
Referenced by compile(), stack_find_offset(), and SVMCompiler().
|
protected |
Definition at line 229 of file scene/svm.h.
Referenced by closure_mix_weight_offset(), generate_closure_node(), and SVMCompiler().
| Scene* SVMCompiler::scene |
Definition at line 120 of file scene/svm.h.
|
protected |
Definition at line 223 of file scene/svm.h.
Referenced by add_node(), add_node(), compile(), generate_multi_closure(), and SVMCompiler().