diff options
Diffstat (limited to 'intern/cycles/render/nodes.h')
-rw-r--r-- | intern/cycles/render/nodes.h | 57 |
1 files changed, 17 insertions, 40 deletions
diff --git a/intern/cycles/render/nodes.h b/intern/cycles/render/nodes.h index a5495ff3671..9e93f30e75e 100644 --- a/intern/cycles/render/nodes.h +++ b/intern/cycles/render/nodes.h @@ -70,15 +70,6 @@ public: /* Nodes */ -/* Any node which uses image manager's slot should be a subclass of this one. */ -class ImageSlotNode : public ShaderNode { -public: - ImageSlotNode(const char *name_) : ShaderNode(name_) { - special_type = SHADER_SPECIAL_TYPE_IMAGE_SLOT; - } - int slot; -}; - class TextureNode : public ShaderNode { public: TextureNode(const char *name_) : ShaderNode(name_) {} @@ -90,15 +81,13 @@ public: } }; -class ImageSlotTextureNode : public ImageSlotNode { +/* Any node which uses image manager's slot should be a subclass of this one. */ +class ImageSlotTextureNode : public TextureNode { public: - ImageSlotTextureNode(const char *name_) : ImageSlotNode(name_) {} - TextureMapping tex_mapping; - - virtual bool equals(const ShaderNode *other) { - return ShaderNode::equals(other) && - tex_mapping.equals(((const ImageSlotTextureNode*)other)->tex_mapping); + ImageSlotTextureNode(const char *name_) : TextureNode(name_) { + special_type = SHADER_SPECIAL_TYPE_IMAGE_SLOT; } + int slot; }; class ImageTextureNode : public ImageSlotTextureNode { @@ -372,7 +361,7 @@ public: ConvertNode(ShaderSocketType from, ShaderSocketType to, bool autoconvert = false); SHADER_NODE_BASE_CLASS(ConvertNode) - bool constant_fold(ShaderOutput *socket, float3 *optimized_value); + bool constant_fold(ShaderGraph *graph, ShaderOutput *socket, float3 *optimized_value); ShaderSocketType from, to; @@ -385,23 +374,6 @@ public: } }; -class ProxyNode : public ShaderNode { -public: - ProxyNode(ShaderSocketType type); - SHADER_NODE_BASE_CLASS(ProxyNode) - - ShaderSocketType type; - - virtual bool equals(const ShaderNode * /*other*/) - { - /* Proxy nodes are created for node groups and can't be duplicated - * actually. So in order to make code a bit more robust in obscure cases - * lets explicitly forbid de-duplication of proxy nodes for now. - */ - return false; - } -}; - class BsdfNode : public ShaderNode { public: BsdfNode(bool scattering = false); @@ -505,6 +477,7 @@ public: class EmissionNode : public ShaderNode { public: SHADER_NODE_CLASS(EmissionNode) + bool constant_fold(ShaderGraph *graph, ShaderOutput *socket, float3 *optimized_value); bool has_surface_emission() { return true; } }; @@ -512,6 +485,7 @@ public: class BackgroundNode : public ShaderNode { public: SHADER_NODE_CLASS(BackgroundNode) + bool constant_fold(ShaderGraph *graph, ShaderOutput *socket, float3 *optimized_value); }; class HoldoutNode : public ShaderNode { @@ -650,7 +624,7 @@ class ValueNode : public ShaderNode { public: SHADER_NODE_CLASS(ValueNode) - bool constant_fold(ShaderOutput *socket, float3 *optimized_value); + bool constant_fold(ShaderGraph *graph, ShaderOutput *socket, float3 *optimized_value); float value; @@ -665,7 +639,7 @@ class ColorNode : public ShaderNode { public: SHADER_NODE_CLASS(ColorNode) - bool constant_fold(ShaderOutput *socket, float3 *optimized_value); + bool constant_fold(ShaderGraph *graph, ShaderOutput *socket, float3 *optimized_value); float3 value; @@ -684,6 +658,7 @@ public: class MixClosureNode : public ShaderNode { public: SHADER_NODE_CLASS(MixClosureNode) + bool constant_fold(ShaderGraph *graph, ShaderOutput *socket, float3 *optimized_value); }; class MixClosureWeightNode : public ShaderNode { @@ -701,6 +676,7 @@ public: class MixNode : public ShaderNode { public: SHADER_NODE_CLASS(MixNode) + bool constant_fold(ShaderGraph *graph, ShaderOutput *socket, float3 *optimized_value); virtual int get_group() { return NODE_GROUP_LEVEL_3; } @@ -743,7 +719,7 @@ class GammaNode : public ShaderNode { public: SHADER_NODE_CLASS(GammaNode) - bool constant_fold(ShaderOutput *socket, float3 *optimized_value); + bool constant_fold(ShaderGraph *graph, ShaderOutput *socket, float3 *optimized_value); virtual int get_group() { return NODE_GROUP_LEVEL_1; } }; @@ -834,7 +810,7 @@ public: class BlackbodyNode : public ShaderNode { public: SHADER_NODE_CLASS(BlackbodyNode) - bool constant_fold(ShaderOutput *socket, float3 *optimized_value); + bool constant_fold(ShaderGraph *graph, ShaderOutput *socket, float3 *optimized_value); virtual int get_group() { return NODE_GROUP_LEVEL_3; } }; @@ -843,7 +819,7 @@ class MathNode : public ShaderNode { public: SHADER_NODE_CLASS(MathNode) virtual int get_group() { return NODE_GROUP_LEVEL_1; } - bool constant_fold(ShaderOutput *socket, float3 *optimized_value); + bool constant_fold(ShaderGraph *graph, ShaderOutput *socket, float3 *optimized_value); bool use_clamp; @@ -878,7 +854,7 @@ class VectorMathNode : public ShaderNode { public: SHADER_NODE_CLASS(VectorMathNode) virtual int get_group() { return NODE_GROUP_LEVEL_1; } - bool constant_fold(ShaderOutput *socket, float3 *optimized_value); + bool constant_fold(ShaderGraph *graph, ShaderOutput *socket, float3 *optimized_value); ustring type; static ShaderEnum type_enum; @@ -916,6 +892,7 @@ public: class BumpNode : public ShaderNode { public: SHADER_NODE_CLASS(BumpNode) + bool constant_fold(ShaderGraph *graph, ShaderOutput *socket, float3 *optimized_value); bool has_spatial_varying() { return true; } virtual int get_feature() { return NODE_FEATURE_BUMP; |