Cycles: fix missing ShaderNode ownership in render_graph_finalize_test
This commit is contained in:
parent
3bb3b26c8f
commit
c82d167d81
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue