|
Blender V4.3
|
#include <constant_fold.h>
Public Member Functions | |
| ConstantFolder (ShaderGraph *graph, ShaderNode *node, ShaderOutput *output, Scene *scene) | |
| bool | all_inputs_constant () const |
| void | make_constant (float value) const |
| void | make_constant (float3 value) const |
| void | make_constant (int value) const |
| void | make_constant_clamp (float value, bool clamp) const |
| void | make_constant_clamp (float3 value, bool clamp) const |
| void | make_zero () const |
| void | make_one () const |
| void | bypass (ShaderOutput *output) const |
| void | discard () const |
| void | bypass_or_discard (ShaderInput *input) const |
| bool | try_bypass_or_make_constant (ShaderInput *input, bool clamp=false) const |
| bool | is_zero (ShaderInput *input) const |
| bool | is_one (ShaderInput *input) const |
| void | fold_mix (NodeMix type, bool clamp) const |
| void | fold_mix_color (NodeMix type, bool clamp_factor, bool clamp) const |
| void | fold_mix_float (bool clamp_factor, bool clamp) const |
| void | fold_math (NodeMathType type) const |
| void | fold_vector_math (NodeVectorMathType type) const |
| void | fold_mapping (NodeMappingType type) const |
Public Attributes | |
| ShaderGraph *const | graph |
| ShaderNode *const | node |
| ShaderOutput *const | output |
| Scene * | scene |
Definition at line 19 of file constant_fold.h.
| CCL_NAMESPACE_BEGIN ConstantFolder::ConstantFolder | ( | ShaderGraph * | graph, |
| ShaderNode * | node, | ||
| ShaderOutput * | output, | ||
| Scene * | scene ) |
Definition at line 13 of file constant_fold.cpp.
| bool ConstantFolder::all_inputs_constant | ( | ) | const |
Definition at line 21 of file constant_fold.cpp.
Referenced by BlackbodyNode::constant_fold(), BrightContrastNode::constant_fold(), ClampNode::constant_fold(), CombineColorNode::constant_fold(), CombineHSVNode::constant_fold(), CombineRGBNode::constant_fold(), CombineXYZNode::constant_fold(), ConvertNode::constant_fold(), CurvesNode::constant_fold(), DisplacementNode::constant_fold(), FloatCurveNode::constant_fold(), GammaNode::constant_fold(), MappingNode::constant_fold(), MathNode::constant_fold(), MixColorNode::constant_fold(), MixFloatNode::constant_fold(), MixNode::constant_fold(), MixVectorNode::constant_fold(), MixVectorNonUniformNode::constant_fold(), RGBRampNode::constant_fold(), RGBToBWNode::constant_fold(), SeparateColorNode::constant_fold(), SeparateHSVNode::constant_fold(), SeparateRGBNode::constant_fold(), SeparateXYZNode::constant_fold(), VectorDisplacementNode::constant_fold(), and VectorMathNode::constant_fold().
| void ConstantFolder::bypass | ( | ShaderOutput * | output | ) | const |
Definition at line 113 of file constant_fold.cpp.
References Node::name, ShaderOutput::name(), ShaderOutput::parent, and VLOG_DEBUG.
Referenced by bypass_or_discard(), BumpNode::constant_fold(), ConvertNode::constant_fold(), CurvesNode::constant_fold(), FloatCurveNode::constant_fold(), InvertNode::constant_fold(), and try_bypass_or_make_constant().
| void ConstantFolder::bypass_or_discard | ( | ShaderInput * | input | ) | const |
Definition at line 141 of file constant_fold.cpp.
References bypass(), SocketType::CLOSURE, and discard().
Referenced by AddClosureNode::constant_fold(), and MixClosureNode::constant_fold().
| void ConstantFolder::discard | ( | ) | const |
Definition at line 132 of file constant_fold.cpp.
References SocketType::CLOSURE, and VLOG_DEBUG.
Referenced by bypass_or_discard(), BackgroundNode::constant_fold(), and EmissionNode::constant_fold().
| void ConstantFolder::fold_mapping | ( | NodeMappingType | type | ) | const |
Definition at line 571 of file constant_fold.cpp.
References is_one(), is_zero(), make_zero(), NODE_MAPPING_TYPE_NORMAL, NODE_MAPPING_TYPE_VECTOR, and try_bypass_or_make_constant().
Referenced by MappingNode::constant_fold().
| void ConstantFolder::fold_math | ( | NodeMathType | type | ) | const |
Definition at line 443 of file constant_fold.cpp.
References is_one(), is_zero(), make_one(), make_zero(), NODE_MATH_ADD, NODE_MATH_DIVIDE, NODE_MATH_MULTIPLY, NODE_MATH_POWER, NODE_MATH_SUBTRACT, and try_bypass_or_make_constant().
Referenced by MathNode::constant_fold().
| void ConstantFolder::fold_mix | ( | NodeMix | type, |
| bool | clamp ) const |
Definition at line 214 of file constant_fold.cpp.
References is_one(), is_zero(), ShaderInput::link, make_zero(), NODE_MIX_ADD, NODE_MIX_BLEND, NODE_MIX_BURN, NODE_MIX_DIV, NODE_MIX_DODGE, NODE_MIX_LIGHT, NODE_MIX_MUL, NODE_MIX_SUB, saturatef, ShaderInput::socket_type, and try_bypass_or_make_constant().
Referenced by MixNode::constant_fold().
| void ConstantFolder::fold_mix_color | ( | NodeMix | type, |
| bool | clamp_factor, | ||
| bool | clamp ) const |
Definition at line 308 of file constant_fold.cpp.
References is_one(), is_zero(), ShaderInput::link, make_zero(), NODE_MIX_ADD, NODE_MIX_BLEND, NODE_MIX_BURN, NODE_MIX_DIV, NODE_MIX_DODGE, NODE_MIX_LIGHT, NODE_MIX_MUL, NODE_MIX_SUB, saturatef, ShaderInput::socket_type, and try_bypass_or_make_constant().
Referenced by MixColorNode::constant_fold(), and MixVectorNode::constant_fold().
| void ConstantFolder::fold_mix_float | ( | bool | clamp_factor, |
| bool | clamp ) const |
Definition at line 403 of file constant_fold.cpp.
References ShaderInput::link, saturatef, ShaderInput::socket_type, and try_bypass_or_make_constant().
Referenced by MixFloatNode::constant_fold().
| void ConstantFolder::fold_vector_math | ( | NodeVectorMathType | type | ) | const |
Definition at line 501 of file constant_fold.cpp.
References is_one(), is_zero(), make_zero(), NODE_VECTOR_MATH_ABSOLUTE, NODE_VECTOR_MATH_ADD, NODE_VECTOR_MATH_CROSS_PRODUCT, NODE_VECTOR_MATH_DIVIDE, NODE_VECTOR_MATH_DOT_PRODUCT, NODE_VECTOR_MATH_LENGTH, NODE_VECTOR_MATH_MULTIPLY, NODE_VECTOR_MATH_SCALE, NODE_VECTOR_MATH_SUBTRACT, and try_bypass_or_make_constant().
Referenced by VectorMathNode::constant_fold().
| bool ConstantFolder::is_one | ( | ShaderInput * | input | ) | const |
Definition at line 198 of file constant_fold.cpp.
References SocketType::FLOAT, SocketType::is_float3(), and one_float3().
Referenced by GammaNode::constant_fold(), fold_mapping(), fold_math(), fold_mix(), fold_mix_color(), and fold_vector_math().
| bool ConstantFolder::is_zero | ( | ShaderInput * | input | ) | const |
Definition at line 184 of file constant_fold.cpp.
References SocketType::FLOAT, SocketType::is_float3(), and zero_float3().
Referenced by GammaNode::constant_fold(), fold_mapping(), fold_math(), fold_mix(), fold_mix_color(), and fold_vector_math().
| void ConstantFolder::make_constant | ( | float | value | ) | const |
Definition at line 32 of file constant_fold.cpp.
References ShaderInput::constant_folded_in, ShaderInput::set(), and VLOG_DEBUG.
Referenced by BlackbodyNode::constant_fold(), BrightContrastNode::constant_fold(), ClampNode::constant_fold(), ColorNode::constant_fold(), CombineColorNode::constant_fold(), CombineHSVNode::constant_fold(), CombineRGBNode::constant_fold(), CombineXYZNode::constant_fold(), ConvertNode::constant_fold(), CurvesNode::constant_fold(), FloatCurveNode::constant_fold(), GammaNode::constant_fold(), InvertNode::constant_fold(), MappingNode::constant_fold(), MathNode::constant_fold(), MixFloatNode::constant_fold(), MixVectorNode::constant_fold(), MixVectorNonUniformNode::constant_fold(), RGBRampNode::constant_fold(), RGBToBWNode::constant_fold(), SeparateColorNode::constant_fold(), SeparateHSVNode::constant_fold(), SeparateRGBNode::constant_fold(), SeparateXYZNode::constant_fold(), ValueNode::constant_fold(), VectorMathNode::constant_fold(), make_constant_clamp(), make_constant_clamp(), make_one(), and make_zero().
| void ConstantFolder::make_constant | ( | float3 | value | ) | const |
Definition at line 45 of file constant_fold.cpp.
References ShaderInput::constant_folded_in, ShaderInput::set(), and VLOG_DEBUG.
| void ConstantFolder::make_constant | ( | int | value | ) | const |
Definition at line 58 of file constant_fold.cpp.
References ShaderInput::constant_folded_in, ShaderInput::set(), and VLOG_DEBUG.
| void ConstantFolder::make_constant_clamp | ( | float | value, |
| bool | clamp ) const |
Definition at line 71 of file constant_fold.cpp.
References make_constant(), and saturatef.
Referenced by MixColorNode::constant_fold(), MixNode::constant_fold(), and try_bypass_or_make_constant().
| void ConstantFolder::make_constant_clamp | ( | float3 | value, |
| bool | clamp ) const |
Definition at line 76 of file constant_fold.cpp.
References make_constant(), and saturatef.
| void ConstantFolder::make_one | ( | ) | const |
Definition at line 100 of file constant_fold.cpp.
References SocketType::FLOAT, SocketType::is_float3(), make_constant(), and one_float3().
Referenced by GammaNode::constant_fold(), and fold_math().
| void ConstantFolder::make_zero | ( | ) | const |
Definition at line 87 of file constant_fold.cpp.
References SocketType::FLOAT, SocketType::is_float3(), make_constant(), and zero_float3().
Referenced by DisplacementNode::constant_fold(), VectorDisplacementNode::constant_fold(), fold_mapping(), fold_math(), fold_mix(), fold_mix_color(), and fold_vector_math().
| bool ConstantFolder::try_bypass_or_make_constant | ( | ShaderInput * | input, |
| bool | clamp = false ) const |
Definition at line 153 of file constant_fold.cpp.
References bypass(), SocketType::FLOAT, SocketType::is_float3(), and make_constant_clamp().
Referenced by GammaNode::constant_fold(), fold_mapping(), fold_math(), fold_mix(), fold_mix_color(), fold_mix_float(), and fold_vector_math().
| ShaderGraph* const ConstantFolder::graph |
Definition at line 21 of file constant_fold.h.
Referenced by BumpNode::constant_fold().
| ShaderNode* const ConstantFolder::node |
Definition at line 22 of file constant_fold.h.
| ShaderOutput* const ConstantFolder::output |
Definition at line 23 of file constant_fold.h.
Referenced by RGBRampNode::constant_fold(), SeparateColorNode::constant_fold(), SeparateHSVNode::constant_fold(), SeparateRGBNode::constant_fold(), SeparateXYZNode::constant_fold(), and VectorMathNode::constant_fold().
| Scene* ConstantFolder::scene |
Definition at line 25 of file constant_fold.h.
Referenced by BlackbodyNode::constant_fold(), ConvertNode::constant_fold(), and RGBToBWNode::constant_fold().