From 659f14f25e54b6b4eebadc68f4a715c256952f11 Mon Sep 17 00:00:00 2001 From: "georgiy.m.markelov@gmail.com" Date: Mon, 11 Sep 2023 12:15:06 +0300 Subject: [PATCH 01/10] MaterialX: added Gamma node --- source/blender/nodes/shader/CMakeLists.txt | 1 + .../nodes/shader/materialx/nodes/gamma.cc | 20 +++++++++++++++++++ .../shader/materialx/nodes/node_parser.cc | 1 + .../shader/materialx/nodes/node_parser.h | 1 + 4 files changed, 23 insertions(+) create mode 100644 source/blender/nodes/shader/materialx/nodes/gamma.cc diff --git a/source/blender/nodes/shader/CMakeLists.txt b/source/blender/nodes/shader/CMakeLists.txt index d1e953629e80..7ca6e598e5ef 100644 --- a/source/blender/nodes/shader/CMakeLists.txt +++ b/source/blender/nodes/shader/CMakeLists.txt @@ -160,6 +160,7 @@ if(WITH_MATERIALX) materialx/nodes/bsdf_translucent.cc materialx/nodes/bsdf_transparent.cc materialx/nodes/clamp.cc + materialx/nodes/gamma.cc materialx/nodes/emission.cc materialx/nodes/huesatval.cc materialx/nodes/invert.cc diff --git a/source/blender/nodes/shader/materialx/nodes/gamma.cc b/source/blender/nodes/shader/materialx/nodes/gamma.cc new file mode 100644 index 000000000000..fefffc0feb98 --- /dev/null +++ b/source/blender/nodes/shader/materialx/nodes/gamma.cc @@ -0,0 +1,20 @@ +/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation + * + * SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "node_parser.h" + +namespace blender::nodes::materialx { + +NodeItem GammaNodeParser::compute() +{ + NodeItem color = get_input_value("Color", NodeItem::Type::Color3); + NodeItem gamma = get_input_value("Gamma", NodeItem::Type::Float); + + NodeItem res = create_node("power", NodeItem::Type::Color3); + res.set_input("in1", color); + res.set_input("in2", gamma); + return res; +} + +} // namespace blender::nodes::materialx diff --git a/source/blender/nodes/shader/materialx/nodes/node_parser.cc b/source/blender/nodes/shader/materialx/nodes/node_parser.cc index 4433852a4e76..35ed2b83e4b6 100644 --- a/source/blender/nodes/shader/materialx/nodes/node_parser.cc +++ b/source/blender/nodes/shader/materialx/nodes/node_parser.cc @@ -152,6 +152,7 @@ NodeItem NodeParser::get_input_link(const bNodeSocket &socket, NodeItem::Type to CASE_NODE_TYPE(SH_NODE_BLACKBODY, BlackbodyNodeParser) CASE_NODE_TYPE(SH_NODE_BRIGHTCONTRAST, BrightContrastNodeParser) CASE_NODE_TYPE(SH_NODE_CLAMP, ClampNodeParser) + CASE_NODE_TYPE(SH_NODE_GAMMA, GammaNodeParser) CASE_NODE_TYPE(SH_NODE_COMBINE_COLOR, CombineColorNodeParser) CASE_NODE_TYPE(SH_NODE_COMBXYZ, CombineXYZNodeParser) CASE_NODE_TYPE(SH_NODE_HUE_SAT, HueSatValNodeParser) diff --git a/source/blender/nodes/shader/materialx/nodes/node_parser.h b/source/blender/nodes/shader/materialx/nodes/node_parser.h index d23471db8c05..88c13f70de66 100644 --- a/source/blender/nodes/shader/materialx/nodes/node_parser.h +++ b/source/blender/nodes/shader/materialx/nodes/node_parser.h @@ -96,6 +96,7 @@ DECLARE_NODE_PARSER(BrightContrastNodeParser) DECLARE_NODE_PARSER(ClampNodeParser) DECLARE_NODE_PARSER(CombineColorNodeParser) DECLARE_NODE_PARSER(CombineXYZNodeParser) +DECLARE_NODE_PARSER(GammaNodeParser) DECLARE_NODE_PARSER(HueSatValNodeParser) DECLARE_NODE_PARSER(InvertNodeParser) DECLARE_NODE_PARSER(MapRangeNodeParser) -- 2.30.2 From b1e3dd6b709028e5fad1a6be11e8b4471215d2dd Mon Sep 17 00:00:00 2001 From: "georgiy.m.markelov@gmail.com" Date: Mon, 11 Sep 2023 14:51:11 +0300 Subject: [PATCH 02/10] MaterialX: added LightFalloff node --- source/blender/nodes/shader/CMakeLists.txt | 1 + .../shader/materialx/nodes/light_falloff.cc | 20 +++++++++++++++++++ .../shader/materialx/nodes/node_parser.cc | 1 + .../shader/materialx/nodes/node_parser.h | 1 + 4 files changed, 23 insertions(+) create mode 100644 source/blender/nodes/shader/materialx/nodes/light_falloff.cc diff --git a/source/blender/nodes/shader/CMakeLists.txt b/source/blender/nodes/shader/CMakeLists.txt index 7ca6e598e5ef..ce1767c621f4 100644 --- a/source/blender/nodes/shader/CMakeLists.txt +++ b/source/blender/nodes/shader/CMakeLists.txt @@ -164,6 +164,7 @@ if(WITH_MATERIALX) materialx/nodes/emission.cc materialx/nodes/huesatval.cc materialx/nodes/invert.cc + materialx/nodes/light_falloff.cc materialx/nodes/map_range.cc materialx/nodes/math.cc materialx/nodes/mix_rgb.cc diff --git a/source/blender/nodes/shader/materialx/nodes/light_falloff.cc b/source/blender/nodes/shader/materialx/nodes/light_falloff.cc new file mode 100644 index 000000000000..50e428f987e1 --- /dev/null +++ b/source/blender/nodes/shader/materialx/nodes/light_falloff.cc @@ -0,0 +1,20 @@ +/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation + * + * SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "node_parser.h" + +namespace blender::nodes::materialx { + +NodeItem LightFalloffNodeParser::compute() +{ + NodeItem strength = get_input_value("Strength", NodeItem::Type::Float); + NodeItem smooth = get_input_value("Smooth", NodeItem::Type::Float); + + /* This node isn't supported by MaterialX. This formula was given from OSL shader code in Cycles node_light_falloff.osl. Considered ray_length=1.0f. */ + strength = strength * val(1.0f) / (smooth + val(1.0f)); + + return strength; +} + +} // namespace blender::nodes::materialx diff --git a/source/blender/nodes/shader/materialx/nodes/node_parser.cc b/source/blender/nodes/shader/materialx/nodes/node_parser.cc index 35ed2b83e4b6..a0f5078329bb 100644 --- a/source/blender/nodes/shader/materialx/nodes/node_parser.cc +++ b/source/blender/nodes/shader/materialx/nodes/node_parser.cc @@ -157,6 +157,7 @@ NodeItem NodeParser::get_input_link(const bNodeSocket &socket, NodeItem::Type to CASE_NODE_TYPE(SH_NODE_COMBXYZ, CombineXYZNodeParser) CASE_NODE_TYPE(SH_NODE_HUE_SAT, HueSatValNodeParser) CASE_NODE_TYPE(SH_NODE_INVERT, InvertNodeParser) + CASE_NODE_TYPE(SH_NODE_LIGHT_FALLOFF, LightFalloffNodeParser) CASE_NODE_TYPE(SH_NODE_MAP_RANGE, MapRangeNodeParser) CASE_NODE_TYPE(SH_NODE_MATH, MathNodeParser) CASE_NODE_TYPE(SH_NODE_MIX_RGB_LEGACY, MixRGBNodeParser) diff --git a/source/blender/nodes/shader/materialx/nodes/node_parser.h b/source/blender/nodes/shader/materialx/nodes/node_parser.h index 88c13f70de66..a6710a16680b 100644 --- a/source/blender/nodes/shader/materialx/nodes/node_parser.h +++ b/source/blender/nodes/shader/materialx/nodes/node_parser.h @@ -99,6 +99,7 @@ DECLARE_NODE_PARSER(CombineXYZNodeParser) DECLARE_NODE_PARSER(GammaNodeParser) DECLARE_NODE_PARSER(HueSatValNodeParser) DECLARE_NODE_PARSER(InvertNodeParser) +DECLARE_NODE_PARSER(LightFalloffNodeParser) DECLARE_NODE_PARSER(MapRangeNodeParser) DECLARE_NODE_PARSER(MathNodeParser) DECLARE_NODE_PARSER(MixRGBNodeParser) -- 2.30.2 From 1236bbdd8f4116f5891b92024b05806fb23f1676 Mon Sep 17 00:00:00 2001 From: "georgiy.m.markelov@gmail.com" Date: Mon, 11 Sep 2023 15:47:33 +0300 Subject: [PATCH 03/10] MaterialX: added LightPath node --- source/blender/nodes/shader/CMakeLists.txt | 1 + .../shader/materialx/nodes/light_falloff.cc | 3 ++- .../shader/materialx/nodes/light_path.cc | 21 +++++++++++++++++++ .../shader/materialx/nodes/node_parser.cc | 1 + .../shader/materialx/nodes/node_parser.h | 1 + 5 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 source/blender/nodes/shader/materialx/nodes/light_path.cc diff --git a/source/blender/nodes/shader/CMakeLists.txt b/source/blender/nodes/shader/CMakeLists.txt index ce1767c621f4..c80ff5b6ba6a 100644 --- a/source/blender/nodes/shader/CMakeLists.txt +++ b/source/blender/nodes/shader/CMakeLists.txt @@ -165,6 +165,7 @@ if(WITH_MATERIALX) materialx/nodes/huesatval.cc materialx/nodes/invert.cc materialx/nodes/light_falloff.cc + materialx/nodes/light_path.cc materialx/nodes/map_range.cc materialx/nodes/math.cc materialx/nodes/mix_rgb.cc diff --git a/source/blender/nodes/shader/materialx/nodes/light_falloff.cc b/source/blender/nodes/shader/materialx/nodes/light_falloff.cc index 50e428f987e1..81186747540b 100644 --- a/source/blender/nodes/shader/materialx/nodes/light_falloff.cc +++ b/source/blender/nodes/shader/materialx/nodes/light_falloff.cc @@ -11,7 +11,8 @@ NodeItem LightFalloffNodeParser::compute() NodeItem strength = get_input_value("Strength", NodeItem::Type::Float); NodeItem smooth = get_input_value("Smooth", NodeItem::Type::Float); - /* This node isn't supported by MaterialX. This formula was given from OSL shader code in Cycles node_light_falloff.osl. Considered ray_length=1.0f. */ + /* This node isn't supported by MaterialX. This formula was given from OSL shader code in Cycles + * node_light_falloff.osl. Considered ray_length=1.0f. */ strength = strength * val(1.0f) / (smooth + val(1.0f)); return strength; diff --git a/source/blender/nodes/shader/materialx/nodes/light_path.cc b/source/blender/nodes/shader/materialx/nodes/light_path.cc new file mode 100644 index 000000000000..0c58f89d6bf6 --- /dev/null +++ b/source/blender/nodes/shader/materialx/nodes/light_path.cc @@ -0,0 +1,21 @@ +/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation + * + * SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "node_parser.h" + +namespace blender::nodes::materialx { + +NodeItem LightPathNodeParser::compute() +{ + /* This node isn't supported by MaterialX. Only default values returned. */ + if (STREQ(socket_out_->name, "Is Camera Ray")) { + return val(1.0f); + } + if (STREQ(socket_out_->name, "Ray Length")) { + return val(1.0f); + } + return val(0.0f); +} + +} // namespace blender::nodes::materialx diff --git a/source/blender/nodes/shader/materialx/nodes/node_parser.cc b/source/blender/nodes/shader/materialx/nodes/node_parser.cc index a0f5078329bb..27079d115645 100644 --- a/source/blender/nodes/shader/materialx/nodes/node_parser.cc +++ b/source/blender/nodes/shader/materialx/nodes/node_parser.cc @@ -158,6 +158,7 @@ NodeItem NodeParser::get_input_link(const bNodeSocket &socket, NodeItem::Type to CASE_NODE_TYPE(SH_NODE_HUE_SAT, HueSatValNodeParser) CASE_NODE_TYPE(SH_NODE_INVERT, InvertNodeParser) CASE_NODE_TYPE(SH_NODE_LIGHT_FALLOFF, LightFalloffNodeParser) + CASE_NODE_TYPE(SH_NODE_LIGHT_PATH, LightPathNodeParser) CASE_NODE_TYPE(SH_NODE_MAP_RANGE, MapRangeNodeParser) CASE_NODE_TYPE(SH_NODE_MATH, MathNodeParser) CASE_NODE_TYPE(SH_NODE_MIX_RGB_LEGACY, MixRGBNodeParser) diff --git a/source/blender/nodes/shader/materialx/nodes/node_parser.h b/source/blender/nodes/shader/materialx/nodes/node_parser.h index a6710a16680b..a9e1c801fe37 100644 --- a/source/blender/nodes/shader/materialx/nodes/node_parser.h +++ b/source/blender/nodes/shader/materialx/nodes/node_parser.h @@ -100,6 +100,7 @@ DECLARE_NODE_PARSER(GammaNodeParser) DECLARE_NODE_PARSER(HueSatValNodeParser) DECLARE_NODE_PARSER(InvertNodeParser) DECLARE_NODE_PARSER(LightFalloffNodeParser) +DECLARE_NODE_PARSER(LightPathNodeParser) DECLARE_NODE_PARSER(MapRangeNodeParser) DECLARE_NODE_PARSER(MathNodeParser) DECLARE_NODE_PARSER(MixRGBNodeParser) -- 2.30.2 From be06938861e6db41d638b62d2b11be386b964a81 Mon Sep 17 00:00:00 2001 From: "georgiy.m.markelov@gmail.com" Date: Mon, 11 Sep 2023 16:11:23 +0300 Subject: [PATCH 04/10] MaterialX: added RGB Curves node --- source/blender/nodes/shader/CMakeLists.txt | 1 + .../nodes/shader/materialx/nodes/curves.cc | 15 +++++++++++++++ .../nodes/shader/materialx/nodes/node_parser.cc | 1 + .../nodes/shader/materialx/nodes/node_parser.h | 1 + 4 files changed, 18 insertions(+) create mode 100644 source/blender/nodes/shader/materialx/nodes/curves.cc diff --git a/source/blender/nodes/shader/CMakeLists.txt b/source/blender/nodes/shader/CMakeLists.txt index c80ff5b6ba6a..0525b06d79f7 100644 --- a/source/blender/nodes/shader/CMakeLists.txt +++ b/source/blender/nodes/shader/CMakeLists.txt @@ -160,6 +160,7 @@ if(WITH_MATERIALX) materialx/nodes/bsdf_translucent.cc materialx/nodes/bsdf_transparent.cc materialx/nodes/clamp.cc + materialx/nodes/curves.cc materialx/nodes/gamma.cc materialx/nodes/emission.cc materialx/nodes/huesatval.cc diff --git a/source/blender/nodes/shader/materialx/nodes/curves.cc b/source/blender/nodes/shader/materialx/nodes/curves.cc new file mode 100644 index 000000000000..a324afe55a9c --- /dev/null +++ b/source/blender/nodes/shader/materialx/nodes/curves.cc @@ -0,0 +1,15 @@ +/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation + * + * SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "node_parser.h" + +namespace blender::nodes::materialx { + +NodeItem CurvesRGBNodeParser::compute() +{ + /* TODO: implement */ + return get_input_value("Color", NodeItem::Type::Color4); +} + +} // namespace blender::nodes::materialx diff --git a/source/blender/nodes/shader/materialx/nodes/node_parser.cc b/source/blender/nodes/shader/materialx/nodes/node_parser.cc index 27079d115645..2cc283355809 100644 --- a/source/blender/nodes/shader/materialx/nodes/node_parser.cc +++ b/source/blender/nodes/shader/materialx/nodes/node_parser.cc @@ -152,6 +152,7 @@ NodeItem NodeParser::get_input_link(const bNodeSocket &socket, NodeItem::Type to CASE_NODE_TYPE(SH_NODE_BLACKBODY, BlackbodyNodeParser) CASE_NODE_TYPE(SH_NODE_BRIGHTCONTRAST, BrightContrastNodeParser) CASE_NODE_TYPE(SH_NODE_CLAMP, ClampNodeParser) + CASE_NODE_TYPE(SH_NODE_CURVE_RGB, CurvesRGBNodeParser) CASE_NODE_TYPE(SH_NODE_GAMMA, GammaNodeParser) CASE_NODE_TYPE(SH_NODE_COMBINE_COLOR, CombineColorNodeParser) CASE_NODE_TYPE(SH_NODE_COMBXYZ, CombineXYZNodeParser) diff --git a/source/blender/nodes/shader/materialx/nodes/node_parser.h b/source/blender/nodes/shader/materialx/nodes/node_parser.h index a9e1c801fe37..3c8da7aea5e2 100644 --- a/source/blender/nodes/shader/materialx/nodes/node_parser.h +++ b/source/blender/nodes/shader/materialx/nodes/node_parser.h @@ -94,6 +94,7 @@ template NodeItem NodeParser::val(const T &data) const DECLARE_NODE_PARSER(BlackbodyNodeParser) DECLARE_NODE_PARSER(BrightContrastNodeParser) DECLARE_NODE_PARSER(ClampNodeParser) +DECLARE_NODE_PARSER(CurvesRGBNodeParser) DECLARE_NODE_PARSER(CombineColorNodeParser) DECLARE_NODE_PARSER(CombineXYZNodeParser) DECLARE_NODE_PARSER(GammaNodeParser) -- 2.30.2 From 11188a7277eedc1880d9125600d3e06b3056e428 Mon Sep 17 00:00:00 2001 From: "georgiy.m.markelov@gmail.com" Date: Mon, 11 Sep 2023 16:49:53 +0300 Subject: [PATCH 05/10] MaterialX: added CurvesFloat node --- source/blender/nodes/shader/materialx/nodes/curves.cc | 6 ++++++ source/blender/nodes/shader/materialx/nodes/node_parser.cc | 1 + source/blender/nodes/shader/materialx/nodes/node_parser.h | 1 + 3 files changed, 8 insertions(+) diff --git a/source/blender/nodes/shader/materialx/nodes/curves.cc b/source/blender/nodes/shader/materialx/nodes/curves.cc index a324afe55a9c..b8491e65e636 100644 --- a/source/blender/nodes/shader/materialx/nodes/curves.cc +++ b/source/blender/nodes/shader/materialx/nodes/curves.cc @@ -6,6 +6,12 @@ namespace blender::nodes::materialx { +NodeItem CurvesFloatNodeParser::compute() +{ + /* TODO: implement */ + return get_input_value("Value", NodeItem::Type::Float); +} + NodeItem CurvesRGBNodeParser::compute() { /* TODO: implement */ diff --git a/source/blender/nodes/shader/materialx/nodes/node_parser.cc b/source/blender/nodes/shader/materialx/nodes/node_parser.cc index 2cc283355809..571d9af2013a 100644 --- a/source/blender/nodes/shader/materialx/nodes/node_parser.cc +++ b/source/blender/nodes/shader/materialx/nodes/node_parser.cc @@ -152,6 +152,7 @@ NodeItem NodeParser::get_input_link(const bNodeSocket &socket, NodeItem::Type to CASE_NODE_TYPE(SH_NODE_BLACKBODY, BlackbodyNodeParser) CASE_NODE_TYPE(SH_NODE_BRIGHTCONTRAST, BrightContrastNodeParser) CASE_NODE_TYPE(SH_NODE_CLAMP, ClampNodeParser) + CASE_NODE_TYPE(SH_NODE_CURVE_FLOAT, CurvesFloatNodeParser) CASE_NODE_TYPE(SH_NODE_CURVE_RGB, CurvesRGBNodeParser) CASE_NODE_TYPE(SH_NODE_GAMMA, GammaNodeParser) CASE_NODE_TYPE(SH_NODE_COMBINE_COLOR, CombineColorNodeParser) diff --git a/source/blender/nodes/shader/materialx/nodes/node_parser.h b/source/blender/nodes/shader/materialx/nodes/node_parser.h index 3c8da7aea5e2..52861734fcd1 100644 --- a/source/blender/nodes/shader/materialx/nodes/node_parser.h +++ b/source/blender/nodes/shader/materialx/nodes/node_parser.h @@ -94,6 +94,7 @@ template NodeItem NodeParser::val(const T &data) const DECLARE_NODE_PARSER(BlackbodyNodeParser) DECLARE_NODE_PARSER(BrightContrastNodeParser) DECLARE_NODE_PARSER(ClampNodeParser) +DECLARE_NODE_PARSER(CurvesFloatNodeParser) DECLARE_NODE_PARSER(CurvesRGBNodeParser) DECLARE_NODE_PARSER(CombineColorNodeParser) DECLARE_NODE_PARSER(CombineXYZNodeParser) -- 2.30.2 From 7db052891ad832b9ce7e2c75fcfbf2173ea2a45e Mon Sep 17 00:00:00 2001 From: "georgiy.m.markelov@gmail.com" Date: Mon, 11 Sep 2023 17:23:27 +0300 Subject: [PATCH 06/10] MaterialX: added Wavelength node --- source/blender/nodes/shader/CMakeLists.txt | 1 + source/blender/nodes/shader/materialx/nodes/node_parser.cc | 1 + source/blender/nodes/shader/materialx/nodes/node_parser.h | 1 + 3 files changed, 3 insertions(+) diff --git a/source/blender/nodes/shader/CMakeLists.txt b/source/blender/nodes/shader/CMakeLists.txt index 0525b06d79f7..4c619589507c 100644 --- a/source/blender/nodes/shader/CMakeLists.txt +++ b/source/blender/nodes/shader/CMakeLists.txt @@ -184,6 +184,7 @@ if(WITH_MATERIALX) materialx/nodes/tex_image.cc materialx/nodes/tex_noise.cc materialx/nodes/vector_math.cc + materialx/nodes/wavelength.cc materialx/material.h materialx/nodes/node_item.h diff --git a/source/blender/nodes/shader/materialx/nodes/node_parser.cc b/source/blender/nodes/shader/materialx/nodes/node_parser.cc index 571d9af2013a..5364b3247067 100644 --- a/source/blender/nodes/shader/materialx/nodes/node_parser.cc +++ b/source/blender/nodes/shader/materialx/nodes/node_parser.cc @@ -173,6 +173,7 @@ NodeItem NodeParser::get_input_link(const bNodeSocket &socket, NodeItem::Type to CASE_NODE_TYPE(SH_NODE_TEX_IMAGE, TexImageNodeParser) CASE_NODE_TYPE(SH_NODE_TEX_NOISE, TexNoiseNodeParser) CASE_NODE_TYPE(SH_NODE_VECTOR_MATH, VectorMathNodeParser) + CASE_NODE_TYPE(SH_NODE_WAVELENGTH, WavelengthNodeParser) default: CLOG_WARN(LOG_MATERIALX_SHADER, diff --git a/source/blender/nodes/shader/materialx/nodes/node_parser.h b/source/blender/nodes/shader/materialx/nodes/node_parser.h index 52861734fcd1..d91f4e707c34 100644 --- a/source/blender/nodes/shader/materialx/nodes/node_parser.h +++ b/source/blender/nodes/shader/materialx/nodes/node_parser.h @@ -115,6 +115,7 @@ DECLARE_NODE_PARSER(TexEnvironmentNodeParser) DECLARE_NODE_PARSER(TexImageNodeParser) DECLARE_NODE_PARSER(TexNoiseNodeParser) DECLARE_NODE_PARSER(VectorMathNodeParser) +DECLARE_NODE_PARSER(WavelengthNodeParser) DECLARE_SHADER_NODE_PARSER(AddShaderNodeParser) DECLARE_SHADER_NODE_PARSER(BSDFDiffuseNodeParser) -- 2.30.2 From 293eb1397c8086644b935eafbf5353aff575b48e Mon Sep 17 00:00:00 2001 From: "georgiy.m.markelov@gmail.com" Date: Mon, 11 Sep 2023 17:24:03 +0300 Subject: [PATCH 07/10] MaterialX: added Wavelength node source file --- .../nodes/shader/materialx/nodes/wavelength.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 source/blender/nodes/shader/materialx/nodes/wavelength.cc diff --git a/source/blender/nodes/shader/materialx/nodes/wavelength.cc b/source/blender/nodes/shader/materialx/nodes/wavelength.cc new file mode 100644 index 000000000000..892504e17277 --- /dev/null +++ b/source/blender/nodes/shader/materialx/nodes/wavelength.cc @@ -0,0 +1,15 @@ +/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation + * + * SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "node_parser.h" + +namespace blender::nodes::materialx { + +NodeItem WavelengthNodeParser::compute() +{ + /* TODO: implement */ + return empty(); +} + +} // namespace blender::nodes::materialx -- 2.30.2 From 13f2bd891c7fd08bad369edfb9c278254d660f68 Mon Sep 17 00:00:00 2001 From: "georgiy.m.markelov@gmail.com" Date: Mon, 11 Sep 2023 17:33:11 +0300 Subject: [PATCH 08/10] MaterialX: added ColorRamp node --- source/blender/nodes/shader/CMakeLists.txt | 1 + .../nodes/shader/materialx/nodes/color_ramp.cc | 15 +++++++++++++++ .../nodes/shader/materialx/nodes/node_parser.cc | 1 + .../nodes/shader/materialx/nodes/node_parser.h | 1 + 4 files changed, 18 insertions(+) create mode 100644 source/blender/nodes/shader/materialx/nodes/color_ramp.cc diff --git a/source/blender/nodes/shader/CMakeLists.txt b/source/blender/nodes/shader/CMakeLists.txt index 4c619589507c..0d37eb5f5bdf 100644 --- a/source/blender/nodes/shader/CMakeLists.txt +++ b/source/blender/nodes/shader/CMakeLists.txt @@ -160,6 +160,7 @@ if(WITH_MATERIALX) materialx/nodes/bsdf_translucent.cc materialx/nodes/bsdf_transparent.cc materialx/nodes/clamp.cc + materialx/nodes/color_ramp.cc materialx/nodes/curves.cc materialx/nodes/gamma.cc materialx/nodes/emission.cc diff --git a/source/blender/nodes/shader/materialx/nodes/color_ramp.cc b/source/blender/nodes/shader/materialx/nodes/color_ramp.cc new file mode 100644 index 000000000000..b95f272c21ce --- /dev/null +++ b/source/blender/nodes/shader/materialx/nodes/color_ramp.cc @@ -0,0 +1,15 @@ +/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation + * + * SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "node_parser.h" + +namespace blender::nodes::materialx { + +NodeItem ColorRampNodeParser::compute() +{ + /* TODO: implement */ + return empty(); +} + +} // namespace blender::nodes::materialx diff --git a/source/blender/nodes/shader/materialx/nodes/node_parser.cc b/source/blender/nodes/shader/materialx/nodes/node_parser.cc index 5364b3247067..f68ec48949d0 100644 --- a/source/blender/nodes/shader/materialx/nodes/node_parser.cc +++ b/source/blender/nodes/shader/materialx/nodes/node_parser.cc @@ -152,6 +152,7 @@ NodeItem NodeParser::get_input_link(const bNodeSocket &socket, NodeItem::Type to CASE_NODE_TYPE(SH_NODE_BLACKBODY, BlackbodyNodeParser) CASE_NODE_TYPE(SH_NODE_BRIGHTCONTRAST, BrightContrastNodeParser) CASE_NODE_TYPE(SH_NODE_CLAMP, ClampNodeParser) + CASE_NODE_TYPE(SH_NODE_VALTORGB, ColorRampNodeParser) CASE_NODE_TYPE(SH_NODE_CURVE_FLOAT, CurvesFloatNodeParser) CASE_NODE_TYPE(SH_NODE_CURVE_RGB, CurvesRGBNodeParser) CASE_NODE_TYPE(SH_NODE_GAMMA, GammaNodeParser) diff --git a/source/blender/nodes/shader/materialx/nodes/node_parser.h b/source/blender/nodes/shader/materialx/nodes/node_parser.h index d91f4e707c34..a327352629fd 100644 --- a/source/blender/nodes/shader/materialx/nodes/node_parser.h +++ b/source/blender/nodes/shader/materialx/nodes/node_parser.h @@ -94,6 +94,7 @@ template NodeItem NodeParser::val(const T &data) const DECLARE_NODE_PARSER(BlackbodyNodeParser) DECLARE_NODE_PARSER(BrightContrastNodeParser) DECLARE_NODE_PARSER(ClampNodeParser) +DECLARE_NODE_PARSER(ColorRampNodeParser) DECLARE_NODE_PARSER(CurvesFloatNodeParser) DECLARE_NODE_PARSER(CurvesRGBNodeParser) DECLARE_NODE_PARSER(CombineColorNodeParser) -- 2.30.2 From 8043a1d45e9223b89669eb83049d6ce2d702830d Mon Sep 17 00:00:00 2001 From: "georgiy.m.markelov@gmail.com" Date: Mon, 11 Sep 2023 17:35:31 +0300 Subject: [PATCH 09/10] MaterialX: rearrange code --- .../blender/nodes/shader/materialx/nodes/curves.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/blender/nodes/shader/materialx/nodes/curves.cc b/source/blender/nodes/shader/materialx/nodes/curves.cc index b8491e65e636..e8ff16f6e80f 100644 --- a/source/blender/nodes/shader/materialx/nodes/curves.cc +++ b/source/blender/nodes/shader/materialx/nodes/curves.cc @@ -6,16 +6,16 @@ namespace blender::nodes::materialx { -NodeItem CurvesFloatNodeParser::compute() -{ - /* TODO: implement */ - return get_input_value("Value", NodeItem::Type::Float); -} - NodeItem CurvesRGBNodeParser::compute() { /* TODO: implement */ return get_input_value("Color", NodeItem::Type::Color4); } +NodeItem CurvesFloatNodeParser::compute() +{ + /* TODO: implement */ + return get_input_value("Value", NodeItem::Type::Float); +} + } // namespace blender::nodes::materialx -- 2.30.2 From 950f2b200646c651f1cfcd0e29ca0044ffb6577a Mon Sep 17 00:00:00 2001 From: "georgiy.m.markelov@gmail.com" Date: Mon, 11 Sep 2023 18:35:53 +0300 Subject: [PATCH 10/10] MaterialX: fix review comments --- source/blender/nodes/shader/materialx/nodes/gamma.cc | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/source/blender/nodes/shader/materialx/nodes/gamma.cc b/source/blender/nodes/shader/materialx/nodes/gamma.cc index fefffc0feb98..ef4b88e05943 100644 --- a/source/blender/nodes/shader/materialx/nodes/gamma.cc +++ b/source/blender/nodes/shader/materialx/nodes/gamma.cc @@ -8,13 +8,10 @@ namespace blender::nodes::materialx { NodeItem GammaNodeParser::compute() { - NodeItem color = get_input_value("Color", NodeItem::Type::Color3); + NodeItem color = get_input_value("Color", NodeItem::Type::Color4); NodeItem gamma = get_input_value("Gamma", NodeItem::Type::Float); - NodeItem res = create_node("power", NodeItem::Type::Color3); - res.set_input("in1", color); - res.set_input("in2", gamma); - return res; + return color ^ gamma; } } // namespace blender::nodes::materialx -- 2.30.2