diff options
-rw-r--r-- | intern/cycles/test/render_graph_finalize_test.cpp | 189 |
1 files changed, 98 insertions, 91 deletions
diff --git a/intern/cycles/test/render_graph_finalize_test.cpp b/intern/cycles/test/render_graph_finalize_test.cpp index f0d5804aee9..4639fc6d0dd 100644 --- a/intern/cycles/test/render_graph_finalize_test.cpp +++ b/intern/cycles/test/render_graph_finalize_test.cpp @@ -40,9 +40,9 @@ namespace { template<typename T> class ShaderNodeBuilder { public: - ShaderNodeBuilder(const string &name) : name_(name) + ShaderNodeBuilder(ShaderGraph &graph, const string &name) : name_(name) { - node_ = new T(); + node_ = graph.create_node<T>(); node_->name = name; } @@ -121,8 +121,8 @@ class ShaderGraphBuilder { /* Common input/output boilerplate. */ ShaderGraphBuilder &add_attribute(const string &name) { - return (*this).add_node( - ShaderNodeBuilder<AttributeNode>(name).set(&AttributeNode::attribute, ustring(name))); + return (*this).add_node(ShaderNodeBuilder<AttributeNode>(*graph_, name) + .set(&AttributeNode::attribute, ustring(name))); } ShaderGraphBuilder &output_closure(const string &from) @@ -133,7 +133,7 @@ class ShaderGraphBuilder { ShaderGraphBuilder &output_color(const string &from) { return (*this) - .add_node(ShaderNodeBuilder<EmissionNode>("EmissionNode")) + .add_node(ShaderNodeBuilder<EmissionNode>(*graph_, "EmissionNode")) .add_connection(from, "EmissionNode::Color") .output_closure("EmissionNode::Emission"); } @@ -141,11 +141,16 @@ class ShaderGraphBuilder { ShaderGraphBuilder &output_value(const string &from) { return (*this) - .add_node(ShaderNodeBuilder<EmissionNode>("EmissionNode")) + .add_node(ShaderNodeBuilder<EmissionNode>(*graph_, "EmissionNode")) .add_connection(from, "EmissionNode::Strength") .output_closure("EmissionNode::Emission"); } + ShaderGraph &graph() + { + return *graph_; + } + protected: ShaderGraph *graph_; map<string, ShaderNode *> node_map_; @@ -203,14 +208,15 @@ TEST_F(RenderGraph, deduplicate_deep) CORRECT_INFO_MESSAGE(log, "Folding Value2::Value to constant (0.8)."); CORRECT_INFO_MESSAGE(log, "Deduplicated 2 nodes."); - builder.add_node(ShaderNodeBuilder<GeometryNode>("Geometry1")) - .add_node(ShaderNodeBuilder<GeometryNode>("Geometry2")) - .add_node(ShaderNodeBuilder<ValueNode>("Value1").set(&ValueNode::value, 0.8f)) - .add_node(ShaderNodeBuilder<ValueNode>("Value2").set(&ValueNode::value, 0.8f)) - .add_node(ShaderNodeBuilder<NoiseTextureNode>("Noise1")) - .add_node(ShaderNodeBuilder<NoiseTextureNode>("Noise2")) - .add_node( - ShaderNodeBuilder<MixNode>("Mix").set(&MixNode::type, NODE_MIX_BLEND).set("Fac", 0.5f)) + builder.add_node(ShaderNodeBuilder<GeometryNode>(graph, "Geometry1")) + .add_node(ShaderNodeBuilder<GeometryNode>(graph, "Geometry2")) + .add_node(ShaderNodeBuilder<ValueNode>(graph, "Value1").set(&ValueNode::value, 0.8f)) + .add_node(ShaderNodeBuilder<ValueNode>(graph, "Value2").set(&ValueNode::value, 0.8f)) + .add_node(ShaderNodeBuilder<NoiseTextureNode>(graph, "Noise1")) + .add_node(ShaderNodeBuilder<NoiseTextureNode>(graph, "Noise2")) + .add_node(ShaderNodeBuilder<MixNode>(graph, "Mix") + .set(&MixNode::type, NODE_MIX_BLEND) + .set("Fac", 0.5f)) .add_connection("Geometry1::Parametric", "Noise1::Vector") .add_connection("Value1::Value", "Noise1::Scale") .add_connection("Noise1::Color", "Mix::Color1") @@ -235,7 +241,7 @@ TEST_F(RenderGraph, constant_fold_rgb_to_bw) "Folding convert_float_to_color::value_color to constant (0.8, 0.8, 0.8)."); builder - .add_node(ShaderNodeBuilder<RGBToBWNode>("RGBToBWNodeNode") + .add_node(ShaderNodeBuilder<RGBToBWNode>(graph, "RGBToBWNodeNode") .set("Color", make_float3(0.8f, 0.8f, 0.8f))) .output_color("RGBToBWNodeNode::Val"); @@ -252,8 +258,8 @@ TEST_F(RenderGraph, constant_fold_emission1) CORRECT_INFO_MESSAGE(log, "Discarding closure Emission."); builder - .add_node( - ShaderNodeBuilder<EmissionNode>("Emission").set("Color", make_float3(0.0f, 0.0f, 0.0f))) + .add_node(ShaderNodeBuilder<EmissionNode>(graph, "Emission") + .set("Color", make_float3(0.0f, 0.0f, 0.0f))) .output_closure("Emission::Emission"); graph.finalize(scene); @@ -264,7 +270,7 @@ TEST_F(RenderGraph, constant_fold_emission2) EXPECT_ANY_MESSAGE(log); CORRECT_INFO_MESSAGE(log, "Discarding closure Emission."); - builder.add_node(ShaderNodeBuilder<EmissionNode>("Emission").set("Strength", 0.0f)) + builder.add_node(ShaderNodeBuilder<EmissionNode>(graph, "Emission").set("Strength", 0.0f)) .output_closure("Emission::Emission"); graph.finalize(scene); @@ -280,7 +286,7 @@ TEST_F(RenderGraph, constant_fold_background1) CORRECT_INFO_MESSAGE(log, "Discarding closure Background."); builder - .add_node(ShaderNodeBuilder<BackgroundNode>("Background") + .add_node(ShaderNodeBuilder<BackgroundNode>(graph, "Background") .set("Color", make_float3(0.0f, 0.0f, 0.0f))) .output_closure("Background::Background"); @@ -292,7 +298,7 @@ TEST_F(RenderGraph, constant_fold_background2) EXPECT_ANY_MESSAGE(log); CORRECT_INFO_MESSAGE(log, "Discarding closure Background."); - builder.add_node(ShaderNodeBuilder<BackgroundNode>("Background").set("Strength", 0.0f)) + builder.add_node(ShaderNodeBuilder<BackgroundNode>(graph, "Background").set("Strength", 0.0f)) .output_closure("Background::Background"); graph.finalize(scene); @@ -309,10 +315,10 @@ TEST_F(RenderGraph, constant_fold_shader_add) CORRECT_INFO_MESSAGE(log, "Folding AddClosure2::Closure to socket Diffuse::BSDF."); INVALID_INFO_MESSAGE(log, "Folding AddClosure3"); - builder.add_node(ShaderNodeBuilder<DiffuseBsdfNode>("Diffuse")) - .add_node(ShaderNodeBuilder<AddClosureNode>("AddClosure1")) - .add_node(ShaderNodeBuilder<AddClosureNode>("AddClosure2")) - .add_node(ShaderNodeBuilder<AddClosureNode>("AddClosure3")) + builder.add_node(ShaderNodeBuilder<DiffuseBsdfNode>(graph, "Diffuse")) + .add_node(ShaderNodeBuilder<AddClosureNode>(graph, "AddClosure1")) + .add_node(ShaderNodeBuilder<AddClosureNode>(graph, "AddClosure2")) + .add_node(ShaderNodeBuilder<AddClosureNode>(graph, "AddClosure3")) .add_connection("Diffuse::BSDF", "AddClosure1::Closure1") .add_connection("Diffuse::BSDF", "AddClosure2::Closure2") .add_connection("AddClosure1::Closure", "AddClosure3::Closure1") @@ -335,15 +341,15 @@ TEST_F(RenderGraph, constant_fold_shader_mix) CORRECT_INFO_MESSAGE(log, "Folding MixClosure3::Closure to socket Diffuse::BSDF."); builder.add_attribute("Attribute") - .add_node(ShaderNodeBuilder<DiffuseBsdfNode>("Diffuse")) + .add_node(ShaderNodeBuilder<DiffuseBsdfNode>(graph, "Diffuse")) /* choose left */ - .add_node(ShaderNodeBuilder<MixClosureNode>("MixClosure1").set("Fac", 0.0f)) + .add_node(ShaderNodeBuilder<MixClosureNode>(graph, "MixClosure1").set("Fac", 0.0f)) .add_connection("Diffuse::BSDF", "MixClosure1::Closure1") /* choose right */ - .add_node(ShaderNodeBuilder<MixClosureNode>("MixClosure2").set("Fac", 1.0f)) + .add_node(ShaderNodeBuilder<MixClosureNode>(graph, "MixClosure2").set("Fac", 1.0f)) .add_connection("Diffuse::BSDF", "MixClosure2::Closure2") /* both inputs folded the same */ - .add_node(ShaderNodeBuilder<MixClosureNode>("MixClosure3")) + .add_node(ShaderNodeBuilder<MixClosureNode>(graph, "MixClosure3")) .add_connection("Attribute::Fac", "MixClosure3::Fac") .add_connection("MixClosure1::Closure", "MixClosure3::Closure1") .add_connection("MixClosure2::Closure", "MixClosure3::Closure2") @@ -362,7 +368,7 @@ TEST_F(RenderGraph, constant_fold_invert) CORRECT_INFO_MESSAGE(log, "Folding Invert::Color to constant (0.68, 0.5, 0.32)."); builder - .add_node(ShaderNodeBuilder<InvertNode>("Invert") + .add_node(ShaderNodeBuilder<InvertNode>(graph, "Invert") .set("Fac", 0.8f) .set("Color", make_float3(0.2f, 0.5f, 0.8f))) .output_color("Invert::Color"); @@ -380,7 +386,7 @@ TEST_F(RenderGraph, constant_fold_invert_fac_0) CORRECT_INFO_MESSAGE(log, "Folding Invert::Color to socket Attribute::Color."); builder.add_attribute("Attribute") - .add_node(ShaderNodeBuilder<InvertNode>("Invert").set("Fac", 0.0f)) + .add_node(ShaderNodeBuilder<InvertNode>(graph, "Invert").set("Fac", 0.0f)) .add_connection("Attribute::Color", "Invert::Color") .output_color("Invert::Color"); @@ -397,7 +403,7 @@ TEST_F(RenderGraph, constant_fold_invert_fac_0_const) CORRECT_INFO_MESSAGE(log, "Folding Invert::Color to constant (0.2, 0.5, 0.8)."); builder - .add_node(ShaderNodeBuilder<InvertNode>("Invert") + .add_node(ShaderNodeBuilder<InvertNode>(graph, "Invert") .set("Fac", 0.0f) .set("Color", make_float3(0.2f, 0.5f, 0.8f))) .output_color("Invert::Color"); @@ -415,7 +421,7 @@ TEST_F(RenderGraph, constant_fold_mix_add) CORRECT_INFO_MESSAGE(log, "Folding MixAdd::Color to constant (0.62, 1.14, 1.42)."); builder - .add_node(ShaderNodeBuilder<MixNode>("MixAdd") + .add_node(ShaderNodeBuilder<MixNode>(graph, "MixAdd") .set(&MixNode::type, NODE_MIX_ADD) .set(&MixNode::use_clamp, false) .set("Fac", 0.8f) @@ -436,7 +442,7 @@ TEST_F(RenderGraph, constant_fold_mix_add_clamp) CORRECT_INFO_MESSAGE(log, "Folding MixAdd::Color to constant (0.62, 1, 1)."); builder - .add_node(ShaderNodeBuilder<MixNode>("MixAdd") + .add_node(ShaderNodeBuilder<MixNode>(graph, "MixAdd") .set(&MixNode::type, NODE_MIX_ADD) .set(&MixNode::use_clamp, true) .set("Fac", 0.8f) @@ -458,7 +464,7 @@ TEST_F(RenderGraph, constant_fold_part_mix_dodge_no_fac_0) builder.add_attribute("Attribute1") .add_attribute("Attribute2") - .add_node(ShaderNodeBuilder<MixNode>("Mix") + .add_node(ShaderNodeBuilder<MixNode>(graph, "Mix") .set(&MixNode::type, NODE_MIX_DODGE) .set(&MixNode::use_clamp, false) .set("Fac", 0.0f)) @@ -480,7 +486,7 @@ TEST_F(RenderGraph, constant_fold_part_mix_light_no_fac_0) builder.add_attribute("Attribute1") .add_attribute("Attribute2") - .add_node(ShaderNodeBuilder<MixNode>("Mix") + .add_node(ShaderNodeBuilder<MixNode>(graph, "Mix") .set(&MixNode::type, NODE_MIX_LIGHT) .set(&MixNode::use_clamp, false) .set("Fac", 0.0f)) @@ -502,7 +508,7 @@ TEST_F(RenderGraph, constant_fold_part_mix_burn_no_fac_0) builder.add_attribute("Attribute1") .add_attribute("Attribute2") - .add_node(ShaderNodeBuilder<MixNode>("Mix") + .add_node(ShaderNodeBuilder<MixNode>(graph, "Mix") .set(&MixNode::type, NODE_MIX_BURN) .set(&MixNode::use_clamp, false) .set("Fac", 0.0f)) @@ -524,7 +530,7 @@ TEST_F(RenderGraph, constant_fold_part_mix_blend_clamped_no_fac_0) builder.add_attribute("Attribute1") .add_attribute("Attribute2") - .add_node(ShaderNodeBuilder<MixNode>("Mix") + .add_node(ShaderNodeBuilder<MixNode>(graph, "Mix") .set(&MixNode::type, NODE_MIX_BLEND) .set(&MixNode::use_clamp, true) .set("Fac", 0.0f)) @@ -550,21 +556,21 @@ TEST_F(RenderGraph, constant_fold_part_mix_blend) builder.add_attribute("Attribute1") .add_attribute("Attribute2") /* choose left */ - .add_node(ShaderNodeBuilder<MixNode>("MixBlend1") + .add_node(ShaderNodeBuilder<MixNode>(graph, "MixBlend1") .set(&MixNode::type, NODE_MIX_BLEND) .set(&MixNode::use_clamp, false) .set("Fac", 0.0f)) .add_connection("Attribute1::Color", "MixBlend1::Color1") .add_connection("Attribute2::Color", "MixBlend1::Color2") /* choose right */ - .add_node(ShaderNodeBuilder<MixNode>("MixBlend2") + .add_node(ShaderNodeBuilder<MixNode>(graph, "MixBlend2") .set(&MixNode::type, NODE_MIX_BLEND) .set(&MixNode::use_clamp, false) .set("Fac", 1.0f)) .add_connection("Attribute1::Color", "MixBlend2::Color2") .add_connection("Attribute2::Color", "MixBlend2::Color1") /* both inputs folded to Attribute1 */ - .add_node(ShaderNodeBuilder<MixNode>("MixBlend3") + .add_node(ShaderNodeBuilder<MixNode>(graph, "MixBlend3") .set(&MixNode::type, NODE_MIX_BLEND) .set(&MixNode::use_clamp, false)) .add_connection("Attribute1::Fac", "MixBlend3::Fac") @@ -585,7 +591,7 @@ TEST_F(RenderGraph, constant_fold_part_mix_sub_same_fac_bad) INVALID_INFO_MESSAGE(log, "Folding Mix::"); builder.add_attribute("Attribute") - .add_node(ShaderNodeBuilder<MixNode>("Mix") + .add_node(ShaderNodeBuilder<MixNode>(graph, "Mix") .set(&MixNode::type, NODE_MIX_SUB) .set(&MixNode::use_clamp, true) .set("Fac", 0.5f)) @@ -606,7 +612,7 @@ TEST_F(RenderGraph, constant_fold_part_mix_sub_same_fac_1) CORRECT_INFO_MESSAGE(log, "Folding Mix::Color to constant (0, 0, 0)."); builder.add_attribute("Attribute") - .add_node(ShaderNodeBuilder<MixNode>("Mix") + .add_node(ShaderNodeBuilder<MixNode>(graph, "Mix") .set(&MixNode::type, NODE_MIX_SUB) .set(&MixNode::use_clamp, true) .set("Fac", 1.0f)) @@ -628,11 +634,11 @@ static void build_mix_partial_test_graph(ShaderGraphBuilder &builder, builder .add_attribute("Attribute") /* constant on the left */ - .add_node(ShaderNodeBuilder<MixNode>("Mix_Cx_Fx") + .add_node(ShaderNodeBuilder<MixNode>(builder.graph(), "Mix_Cx_Fx") .set(&MixNode::type, type) .set(&MixNode::use_clamp, false) .set("Color1", constval)) - .add_node(ShaderNodeBuilder<MixNode>("Mix_Cx_F1") + .add_node(ShaderNodeBuilder<MixNode>(builder.graph(), "Mix_Cx_F1") .set(&MixNode::type, type) .set(&MixNode::use_clamp, false) .set("Color1", constval) @@ -641,11 +647,11 @@ static void build_mix_partial_test_graph(ShaderGraphBuilder &builder, .add_connection("Attribute::Color", "Mix_Cx_Fx::Color2") .add_connection("Attribute::Color", "Mix_Cx_F1::Color2") /* constant on the right */ - .add_node(ShaderNodeBuilder<MixNode>("Mix_xC_Fx") + .add_node(ShaderNodeBuilder<MixNode>(builder.graph(), "Mix_xC_Fx") .set(&MixNode::type, type) .set(&MixNode::use_clamp, false) .set("Color2", constval)) - .add_node(ShaderNodeBuilder<MixNode>("Mix_xC_F1") + .add_node(ShaderNodeBuilder<MixNode>(builder.graph(), "Mix_xC_F1") .set(&MixNode::type, type) .set(&MixNode::use_clamp, false) .set("Color2", constval) @@ -654,15 +660,15 @@ static void build_mix_partial_test_graph(ShaderGraphBuilder &builder, .add_connection("Attribute::Color", "Mix_xC_Fx::Color1") .add_connection("Attribute::Color", "Mix_xC_F1::Color1") /* results of actual tests simply added up to connect to output */ - .add_node(ShaderNodeBuilder<MixNode>("Out12") + .add_node(ShaderNodeBuilder<MixNode>(builder.graph(), "Out12") .set(&MixNode::type, NODE_MIX_ADD) .set(&MixNode::use_clamp, true) .set("Fac", 1.0f)) - .add_node(ShaderNodeBuilder<MixNode>("Out34") + .add_node(ShaderNodeBuilder<MixNode>(builder.graph(), "Out34") .set(&MixNode::type, NODE_MIX_ADD) .set(&MixNode::use_clamp, true) .set("Fac", 1.0f)) - .add_node(ShaderNodeBuilder<MixNode>("Out1234") + .add_node(ShaderNodeBuilder<MixNode>(builder.graph(), "Out1234") .set(&MixNode::type, NODE_MIX_ADD) .set(&MixNode::use_clamp, true) .set("Fac", 1.0f)) @@ -796,9 +802,9 @@ TEST_F(RenderGraph, constant_fold_separate_combine_rgb) CORRECT_INFO_MESSAGE(log, "Folding CombineRGB::Image to constant (0.3, 0.5, 0.7)."); builder - .add_node(ShaderNodeBuilder<SeparateRGBNode>("SeparateRGB") + .add_node(ShaderNodeBuilder<SeparateRGBNode>(graph, "SeparateRGB") .set("Image", make_float3(0.3f, 0.5f, 0.7f))) - .add_node(ShaderNodeBuilder<CombineRGBNode>("CombineRGB")) + .add_node(ShaderNodeBuilder<CombineRGBNode>(graph, "CombineRGB")) .add_connection("SeparateRGB::R", "CombineRGB::R") .add_connection("SeparateRGB::G", "CombineRGB::G") .add_connection("SeparateRGB::B", "CombineRGB::B") @@ -821,9 +827,9 @@ TEST_F(RenderGraph, constant_fold_separate_combine_xyz) log, "Folding convert_vector_to_color::value_color to constant (0.3, 0.5, 0.7)."); builder - .add_node(ShaderNodeBuilder<SeparateXYZNode>("SeparateXYZ") + .add_node(ShaderNodeBuilder<SeparateXYZNode>(graph, "SeparateXYZ") .set("Vector", make_float3(0.3f, 0.5f, 0.7f))) - .add_node(ShaderNodeBuilder<CombineXYZNode>("CombineXYZ")) + .add_node(ShaderNodeBuilder<CombineXYZNode>(graph, "CombineXYZ")) .add_connection("SeparateXYZ::X", "CombineXYZ::X") .add_connection("SeparateXYZ::Y", "CombineXYZ::Y") .add_connection("SeparateXYZ::Z", "CombineXYZ::Z") @@ -844,9 +850,9 @@ TEST_F(RenderGraph, constant_fold_separate_combine_hsv) CORRECT_INFO_MESSAGE(log, "Folding CombineHSV::Color to constant (0.3, 0.5, 0.7)."); builder - .add_node(ShaderNodeBuilder<SeparateHSVNode>("SeparateHSV") + .add_node(ShaderNodeBuilder<SeparateHSVNode>(graph, "SeparateHSV") .set("Color", make_float3(0.3f, 0.5f, 0.7f))) - .add_node(ShaderNodeBuilder<CombineHSVNode>("CombineHSV")) + .add_node(ShaderNodeBuilder<CombineHSVNode>(graph, "CombineHSV")) .add_connection("SeparateHSV::H", "CombineHSV::H") .add_connection("SeparateHSV::S", "CombineHSV::S") .add_connection("SeparateHSV::V", "CombineHSV::V") @@ -864,7 +870,7 @@ TEST_F(RenderGraph, constant_fold_gamma) CORRECT_INFO_MESSAGE(log, "Folding Gamma::Color to constant (0.164317, 0.353553, 0.585662)."); builder - .add_node(ShaderNodeBuilder<GammaNode>("Gamma") + .add_node(ShaderNodeBuilder<GammaNode>(graph, "Gamma") .set("Color", make_float3(0.3f, 0.5f, 0.7f)) .set("Gamma", 1.5f)) .output_color("Gamma::Color"); @@ -884,14 +890,14 @@ TEST_F(RenderGraph, constant_fold_gamma_part_0) builder .add_attribute("Attribute") /* constant on the left */ - .add_node( - ShaderNodeBuilder<GammaNode>("Gamma_Cx").set("Color", make_float3(0.0f, 0.0f, 0.0f))) + .add_node(ShaderNodeBuilder<GammaNode>(graph, "Gamma_Cx") + .set("Color", make_float3(0.0f, 0.0f, 0.0f))) .add_connection("Attribute::Fac", "Gamma_Cx::Gamma") /* constant on the right */ - .add_node(ShaderNodeBuilder<GammaNode>("Gamma_xC").set("Gamma", 0.0f)) + .add_node(ShaderNodeBuilder<GammaNode>(graph, "Gamma_xC").set("Gamma", 0.0f)) .add_connection("Attribute::Color", "Gamma_xC::Color") /* output sum */ - .add_node(ShaderNodeBuilder<MixNode>("Out") + .add_node(ShaderNodeBuilder<MixNode>(graph, "Out") .set(&MixNode::type, NODE_MIX_ADD) .set(&MixNode::use_clamp, true) .set("Fac", 1.0f)) @@ -914,14 +920,14 @@ TEST_F(RenderGraph, constant_fold_gamma_part_1) builder .add_attribute("Attribute") /* constant on the left */ - .add_node( - ShaderNodeBuilder<GammaNode>("Gamma_Cx").set("Color", make_float3(1.0f, 1.0f, 1.0f))) + .add_node(ShaderNodeBuilder<GammaNode>(graph, "Gamma_Cx") + .set("Color", make_float3(1.0f, 1.0f, 1.0f))) .add_connection("Attribute::Fac", "Gamma_Cx::Gamma") /* constant on the right */ - .add_node(ShaderNodeBuilder<GammaNode>("Gamma_xC").set("Gamma", 1.0f)) + .add_node(ShaderNodeBuilder<GammaNode>(graph, "Gamma_xC").set("Gamma", 1.0f)) .add_connection("Attribute::Color", "Gamma_xC::Color") /* output sum */ - .add_node(ShaderNodeBuilder<MixNode>("Out") + .add_node(ShaderNodeBuilder<MixNode>(graph, "Out") .set(&MixNode::type, NODE_MIX_ADD) .set(&MixNode::use_clamp, true) .set("Fac", 1.0f)) @@ -941,7 +947,7 @@ TEST_F(RenderGraph, constant_fold_bright_contrast) CORRECT_INFO_MESSAGE(log, "Folding BrightContrast::Color to constant (0.16, 0.6, 1.04)."); builder - .add_node(ShaderNodeBuilder<BrightContrastNode>("BrightContrast") + .add_node(ShaderNodeBuilder<BrightContrastNode>(graph, "BrightContrast") .set("Color", make_float3(0.3f, 0.5f, 0.7f)) .set("Bright", 0.1f) .set("Contrast", 1.2f)) @@ -958,7 +964,8 @@ TEST_F(RenderGraph, constant_fold_blackbody) EXPECT_ANY_MESSAGE(log); CORRECT_INFO_MESSAGE(log, "Folding Blackbody::Color to constant (3.94163, 0.226523, 0)."); - builder.add_node(ShaderNodeBuilder<BlackbodyNode>("Blackbody").set("Temperature", 1200.0f)) + builder + .add_node(ShaderNodeBuilder<BlackbodyNode>(graph, "Blackbody").set("Temperature", 1200.0f)) .output_color("Blackbody::Color"); graph.finalize(scene); @@ -980,7 +987,7 @@ TEST_F(RenderGraph, constant_fold_math) CORRECT_INFO_MESSAGE(log, "Folding Math::Value to constant (1.6)."); builder - .add_node(ShaderNodeBuilder<MathNode>("Math") + .add_node(ShaderNodeBuilder<MathNode>(graph, "Math") .set(&MathNode::type, NODE_MATH_ADD) .set(&MathNode::use_clamp, false) .set("Value1", 0.7f) @@ -999,7 +1006,7 @@ TEST_F(RenderGraph, constant_fold_math_clamp) CORRECT_INFO_MESSAGE(log, "Folding clamp::Result to constant (1)."); builder - .add_node(ShaderNodeBuilder<MathNode>("Math") + .add_node(ShaderNodeBuilder<MathNode>(graph, "Math") .set(&MathNode::type, NODE_MATH_ADD) .set(&MathNode::use_clamp, true) .set("Value1", 0.7f) @@ -1020,19 +1027,19 @@ static void build_math_partial_test_graph(ShaderGraphBuilder &builder, builder .add_attribute("Attribute") /* constant on the left */ - .add_node(ShaderNodeBuilder<MathNode>("Math_Cx") + .add_node(ShaderNodeBuilder<MathNode>(builder.graph(), "Math_Cx") .set(&MathNode::type, type) .set(&MathNode::use_clamp, false) .set("Value1", constval)) .add_connection("Attribute::Fac", "Math_Cx::Value2") /* constant on the right */ - .add_node(ShaderNodeBuilder<MathNode>("Math_xC") + .add_node(ShaderNodeBuilder<MathNode>(builder.graph(), "Math_xC") .set(&MathNode::type, type) .set(&MathNode::use_clamp, false) .set("Value2", constval)) .add_connection("Attribute::Fac", "Math_xC::Value1") /* output sum */ - .add_node(ShaderNodeBuilder<MathNode>("Out") + .add_node(ShaderNodeBuilder<MathNode>(builder.graph(), "Out") .set(&MathNode::type, NODE_MATH_ADD) .set(&MathNode::use_clamp, true)) .add_connection("Math_Cx::Value", "Out::Value1") @@ -1170,7 +1177,7 @@ TEST_F(RenderGraph, constant_fold_vector_math) CORRECT_INFO_MESSAGE(log, "Folding VectorMath::Vector to constant (3, 0, 0)."); builder - .add_node(ShaderNodeBuilder<VectorMathNode>("VectorMath") + .add_node(ShaderNodeBuilder<VectorMathNode>(graph, "VectorMath") .set(&VectorMathNode::type, NODE_VECTOR_MATH_SUBTRACT) .set("Vector1", make_float3(1.3f, 0.5f, 0.7f)) .set("Vector2", make_float3(-1.7f, 0.5f, 0.7f))) @@ -1190,18 +1197,18 @@ static void build_vecmath_partial_test_graph(ShaderGraphBuilder &builder, builder .add_attribute("Attribute") /* constant on the left */ - .add_node(ShaderNodeBuilder<VectorMathNode>("Math_Cx") + .add_node(ShaderNodeBuilder<VectorMathNode>(builder.graph(), "Math_Cx") .set(&VectorMathNode::type, type) .set("Vector1", constval)) .add_connection("Attribute::Vector", "Math_Cx::Vector2") /* constant on the right */ - .add_node(ShaderNodeBuilder<VectorMathNode>("Math_xC") + .add_node(ShaderNodeBuilder<VectorMathNode>(builder.graph(), "Math_xC") .set(&VectorMathNode::type, type) .set("Vector2", constval)) .add_connection("Attribute::Vector", "Math_xC::Vector1") /* output sum */ - .add_node(ShaderNodeBuilder<VectorMathNode>("Out").set(&VectorMathNode::type, - NODE_VECTOR_MATH_ADD)) + .add_node(ShaderNodeBuilder<VectorMathNode>(builder.graph(), "Out") + .set(&VectorMathNode::type, NODE_VECTOR_MATH_ADD)) .add_connection("Math_Cx::Vector", "Out::Vector1") .add_connection("Math_xC::Vector", "Out::Vector2") .output_color("Out::Vector"); @@ -1261,8 +1268,8 @@ TEST_F(RenderGraph, constant_fold_bump) EXPECT_ANY_MESSAGE(log); CORRECT_INFO_MESSAGE(log, "Folding Bump::Normal to socket Geometry1::Normal."); - builder.add_node(ShaderNodeBuilder<GeometryNode>("Geometry1")) - .add_node(ShaderNodeBuilder<BumpNode>("Bump")) + builder.add_node(ShaderNodeBuilder<GeometryNode>(graph, "Geometry1")) + .add_node(ShaderNodeBuilder<BumpNode>(graph, "Bump")) .add_connection("Geometry1::Normal", "Bump::Normal") .output_color("Bump::Normal"); @@ -1277,7 +1284,7 @@ TEST_F(RenderGraph, constant_fold_bump_no_input) EXPECT_ANY_MESSAGE(log); CORRECT_INFO_MESSAGE(log, "Folding Bump::Normal to socket geometry::Normal."); - builder.add_node(ShaderNodeBuilder<BumpNode>("Bump")).output_color("Bump::Normal"); + builder.add_node(ShaderNodeBuilder<BumpNode>(graph, "Bump")).output_color("Bump::Normal"); graph.finalize(scene); } @@ -1304,7 +1311,7 @@ TEST_F(RenderGraph, constant_fold_rgb_curves) init_test_curve(curve, make_float3(0.0f, 0.25f, 1.0f), make_float3(1.0f, 0.75f, 0.0f), 257); builder - .add_node(ShaderNodeBuilder<RGBCurvesNode>("Curves") + .add_node(ShaderNodeBuilder<RGBCurvesNode>(graph, "Curves") .set(&CurvesNode::curves, curve) .set(&CurvesNode::min_x, 0.1f) .set(&CurvesNode::max_x, 0.9f) @@ -1328,7 +1335,7 @@ TEST_F(RenderGraph, constant_fold_rgb_curves_fac_0) init_test_curve(curve, make_float3(0.0f, 0.25f, 1.0f), make_float3(1.0f, 0.75f, 0.0f), 257); builder.add_attribute("Attribute") - .add_node(ShaderNodeBuilder<RGBCurvesNode>("Curves") + .add_node(ShaderNodeBuilder<RGBCurvesNode>(graph, "Curves") .set(&CurvesNode::curves, curve) .set(&CurvesNode::min_x, 0.1f) .set(&CurvesNode::max_x, 0.9f) @@ -1352,7 +1359,7 @@ TEST_F(RenderGraph, constant_fold_rgb_curves_fac_0_const) init_test_curve(curve, make_float3(0.0f, 0.25f, 1.0f), make_float3(1.0f, 0.75f, 0.0f), 257); builder - .add_node(ShaderNodeBuilder<RGBCurvesNode>("Curves") + .add_node(ShaderNodeBuilder<RGBCurvesNode>(graph, "Curves") .set(&CurvesNode::curves, curve) .set(&CurvesNode::min_x, 0.1f) .set(&CurvesNode::max_x, 0.9f) @@ -1376,7 +1383,7 @@ TEST_F(RenderGraph, constant_fold_vector_curves) init_test_curve(curve, make_float3(0.0f, 0.25f, 1.0f), make_float3(1.0f, 0.75f, 0.0f), 257); builder - .add_node(ShaderNodeBuilder<VectorCurvesNode>("Curves") + .add_node(ShaderNodeBuilder<VectorCurvesNode>(graph, "Curves") .set(&CurvesNode::curves, curve) .set(&CurvesNode::min_x, 0.1f) .set(&CurvesNode::max_x, 0.9f) @@ -1400,7 +1407,7 @@ TEST_F(RenderGraph, constant_fold_vector_curves_fac_0) init_test_curve(curve, make_float3(0.0f, 0.25f, 1.0f), make_float3(1.0f, 0.75f, 0.0f), 257); builder.add_attribute("Attribute") - .add_node(ShaderNodeBuilder<VectorCurvesNode>("Curves") + .add_node(ShaderNodeBuilder<VectorCurvesNode>(graph, "Curves") .set(&CurvesNode::curves, curve) .set(&CurvesNode::min_x, 0.1f) .set(&CurvesNode::max_x, 0.9f) @@ -1427,12 +1434,12 @@ TEST_F(RenderGraph, constant_fold_rgb_ramp) init_test_curve(alpha, 0.75f, 1.0f, 9); builder - .add_node(ShaderNodeBuilder<RGBRampNode>("Ramp") + .add_node(ShaderNodeBuilder<RGBRampNode>(graph, "Ramp") .set(&RGBRampNode::ramp, curve) .set(&RGBRampNode::ramp_alpha, alpha) .set(&RGBRampNode::interpolate, true) .set("Fac", 0.56f)) - .add_node(ShaderNodeBuilder<MixNode>("Mix").set(&MixNode::type, NODE_MIX_ADD)) + .add_node(ShaderNodeBuilder<MixNode>(graph, "Mix").set(&MixNode::type, NODE_MIX_ADD)) .add_connection("Ramp::Color", "Mix::Color1") .add_connection("Ramp::Alpha", "Mix::Color2") .output_color("Mix::Color"); @@ -1456,12 +1463,12 @@ TEST_F(RenderGraph, constant_fold_rgb_ramp_flat) init_test_curve(alpha, 0.75f, 1.0f, 9); builder - .add_node(ShaderNodeBuilder<RGBRampNode>("Ramp") + .add_node(ShaderNodeBuilder<RGBRampNode>(graph, "Ramp") .set(&RGBRampNode::ramp, curve) .set(&RGBRampNode::ramp_alpha, alpha) .set(&RGBRampNode::interpolate, false) .set("Fac", 0.56f)) - .add_node(ShaderNodeBuilder<MixNode>("Mix").set(&MixNode::type, NODE_MIX_ADD)) + .add_node(ShaderNodeBuilder<MixNode>(graph, "Mix").set(&MixNode::type, NODE_MIX_ADD)) .add_connection("Ramp::Color", "Mix::Color1") .add_connection("Ramp::Alpha", "Mix::Color2") .output_color("Mix::Color"); @@ -1482,7 +1489,7 @@ TEST_F(RenderGraph, constant_fold_convert_float_color_float) "Folding convert_color_to_float::value_float to socket Attribute::Fac."); builder.add_attribute("Attribute") - .add_node(ShaderNodeBuilder<InvertNode>("Invert").set("Fac", 0.0f)) + .add_node(ShaderNodeBuilder<InvertNode>(graph, "Invert").set("Fac", 0.0f)) .add_connection("Attribute::Fac", "Invert::Color") .output_value("Invert::Color"); @@ -1502,7 +1509,7 @@ TEST_F(RenderGraph, constant_fold_convert_color_vector_color) "Folding convert_vector_to_color::value_color to socket Attribute::Color."); builder.add_attribute("Attribute") - .add_node(ShaderNodeBuilder<VectorMathNode>("VecAdd") + .add_node(ShaderNodeBuilder<VectorMathNode>(graph, "VecAdd") .set(&VectorMathNode::type, NODE_VECTOR_MATH_ADD) .set("Vector2", make_float3(0, 0, 0))) .add_connection("Attribute::Color", "VecAdd::Vector1") @@ -1523,7 +1530,7 @@ TEST_F(RenderGraph, constant_fold_convert_color_float_color) INVALID_INFO_MESSAGE(log, "Folding convert_float_to_color::"); builder.add_attribute("Attribute") - .add_node(ShaderNodeBuilder<MathNode>("MathAdd") + .add_node(ShaderNodeBuilder<MathNode>(graph, "MathAdd") .set(&MathNode::type, NODE_MATH_ADD) .set("Value2", 0.0f)) .add_connection("Attribute::Color", "MathAdd::Value1") |