diff options
Diffstat (limited to 'intern/cycles/render/nodes.cpp')
-rw-r--r-- | intern/cycles/render/nodes.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp index e36a75f59b1..d732189af66 100644 --- a/intern/cycles/render/nodes.cpp +++ b/intern/cycles/render/nodes.cpp @@ -5785,6 +5785,15 @@ DisplacementNode::DisplacementNode() { } +void DisplacementNode::constant_fold(const ConstantFolder& folder) +{ + if(folder.all_inputs_constant()) { + if((height - midlevel == 0.0f) || (scale == 0.0f)) { + folder.make_zero(); + } + } +} + void DisplacementNode::compile(SVMCompiler& compiler) { ShaderInput *height_in = input("Height"); @@ -5836,6 +5845,16 @@ VectorDisplacementNode::VectorDisplacementNode() { } +void VectorDisplacementNode::constant_fold(const ConstantFolder& folder) +{ + if(folder.all_inputs_constant()) { + if((vector == make_float3(0.0f, 0.0f, 0.0f) && midlevel == 0.0f) || + (scale == 0.0f)) { + folder.make_zero(); + } + } +} + void VectorDisplacementNode::attributes(Shader *shader, AttributeRequestSet *attributes) { if(shader->has_surface && space == NODE_NORMAL_MAP_TANGENT) { |