diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h index e14067f138e4..3e79e0547d01 100644 --- a/source/blender/blenkernel/BKE_node.h +++ b/source/blender/blenkernel/BKE_node.h @@ -225,7 +225,7 @@ typedef int (*NodeGPUExecFunction)(struct GPUMaterial *mat, struct bNodeExecData *execdata, struct GPUNodeStack *in, struct GPUNodeStack *out); -typedef void (*NodeMaterialXExecFunction)(void *data, +typedef void (*NodeMaterialXFunction)(void *data, struct bNode *node, struct bNodeSocket *out); @@ -343,7 +343,7 @@ typedef struct bNodeType { /* gpu */ NodeGPUExecFunction gpu_fn; /* MaterialX */ - NodeMaterialXExecFunction materialx_fn; + NodeMaterialXFunction materialx_fn; /* Get an instance of this node's compositor operation. Freeing the instance is the * responsibility of the caller. */ diff --git a/source/blender/io/usd/CMakeLists.txt b/source/blender/io/usd/CMakeLists.txt index d913410f8341..e1aeffb5349b 100644 --- a/source/blender/io/usd/CMakeLists.txt +++ b/source/blender/io/usd/CMakeLists.txt @@ -210,6 +210,7 @@ if(WITH_OPENVDB) endif() if(WITH_MATERIALX) + add_definitions(-DWITH_MATERIALX) list(APPEND LIB MaterialXCore) endif() diff --git a/source/blender/io/usd/hydra/material.cc b/source/blender/io/usd/hydra/material.cc index e986e6e20164..a992dbdbfa36 100644 --- a/source/blender/io/usd/hydra/material.cc +++ b/source/blender/io/usd/hydra/material.cc @@ -12,8 +12,10 @@ #include #include -#include -#include +#ifdef WITH_MATERIALX +# include +# include +#endif #include "MEM_guardedalloc.h" @@ -33,8 +35,9 @@ #include "intern/usd_exporter_context.h" #include "intern/usd_writer_material.h" -#include "shader/materialx/material.h" - +#ifdef WITH_MATERIALX +# include "shader/materialx/material.h" +#endif namespace blender::io::hydra { MaterialData::MaterialData(HydraSceneDelegate *scene_delegate, @@ -73,6 +76,7 @@ void MaterialData::init() image_cache_file_path()}; /* Create USD material. */ pxr::UsdShadeMaterial usd_material; +#ifdef WITH_MATERIALX if (scene_delegate_->use_materialx) { MaterialX::DocumentPtr doc = blender::nodes::materialx::export_to_materialx( scene_delegate_->depsgraph, (Material *)id); @@ -84,7 +88,9 @@ void MaterialData::init() } } } - else { + else +#endif + { usd_material = usd::create_usd_material(export_context, material_path, (Material *)id, "st"); } diff --git a/source/blender/nodes/shader/CMakeLists.txt b/source/blender/nodes/shader/CMakeLists.txt index 98e9f7db99ae..25990bdcd1ab 100644 --- a/source/blender/nodes/shader/CMakeLists.txt +++ b/source/blender/nodes/shader/CMakeLists.txt @@ -16,6 +16,7 @@ set(INC ../../makesrna ../../render ../../windowmanager + ../../../../intern/clog ../../../../intern/sky/include # RNA_prototypes.h ${CMAKE_BINARY_DIR}/source/blender/makesrna @@ -24,8 +25,7 @@ set(INC if(WITH_HYDRA) list(APPEND INC ../../io/usd - ../../../../intern/clog -) + ) add_definitions(-DWITH_HYDRA) endif() @@ -145,6 +145,7 @@ set(LIB ) if(WITH_MATERIALX) + add_definitions(-DWITH_MATERIALX) list(APPEND SRC materialx/material.cc materialx/node_item.cc diff --git a/source/blender/nodes/shader/materialx/node_item.h b/source/blender/nodes/shader/materialx/node_item.h index f9e45822f66e..704e70832a47 100644 --- a/source/blender/nodes/shader/materialx/node_item.h +++ b/source/blender/nodes/shader/materialx/node_item.h @@ -8,6 +8,9 @@ namespace blender::nodes::materialx { +/* This class serves as abstraction from MateralX API. It implements arithmetic operations, + * convertions between different types, adding new nodes, setting inputs, etc. + * All work should be done via this class instead of using MaterialX API directly. */ class NodeItem { public: enum class Type { diff --git a/source/blender/nodes/shader/node_shader_util.hh b/source/blender/nodes/shader/node_shader_util.hh index a19b849136e7..fce47c0e7d7b 100644 --- a/source/blender/nodes/shader/node_shader_util.hh +++ b/source/blender/nodes/shader/node_shader_util.hh @@ -22,7 +22,12 @@ #include "node_shader_register.hh" -#include "materialx/node_parser.h" +#ifdef WITH_MATERIALX +# include "materialx/node_parser.h" +#else +# define NODE_SHADER_MATERIALX_BEGIN NodeMaterialXFunction node_shader_materialx = nullptr; +# define NODE_SHADER_MATERIALX_END +#endif struct bContext; typedef struct bContext bContext; diff --git a/source/blender/nodes/shader/nodes/node_shader_add_shader.cc b/source/blender/nodes/shader/nodes/node_shader_add_shader.cc index ae520a0131e1..7f5ba0162d79 100644 --- a/source/blender/nodes/shader/nodes/node_shader_add_shader.cc +++ b/source/blender/nodes/shader/nodes/node_shader_add_shader.cc @@ -23,6 +23,7 @@ static int node_shader_gpu_add_shader(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { NodeItem res = empty(); switch (to_type_) { @@ -55,6 +56,7 @@ NODE_SHADER_MATERIALX_BEGIN } return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_add_shader_cc @@ -69,6 +71,7 @@ void register_node_type_sh_add_shader() sh_node_type_base(&ntype, SH_NODE_ADD_SHADER, "Add Shader", NODE_CLASS_SHADER); ntype.declare = file_ns::node_declare; ntype.gpu_fn = file_ns::node_shader_gpu_add_shader; + ntype.materialx_fn = file_ns::node_shader_materialx; nodeRegisterType(&ntype); } diff --git a/source/blender/nodes/shader/nodes/node_shader_blackbody.cc b/source/blender/nodes/shader/nodes/node_shader_blackbody.cc index a84b0d3414e2..d88ae1d5d545 100644 --- a/source/blender/nodes/shader/nodes/node_shader_blackbody.cc +++ b/source/blender/nodes/shader/nodes/node_shader_blackbody.cc @@ -32,6 +32,7 @@ static int node_shader_gpu_blackbody(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { /* TODO: This node doesn't have an implementation in MaterialX 1.38.6. * It's added in MaterialX 1.38.8. Uncomment this code after switching to 1.38.8. @@ -43,6 +44,7 @@ NODE_SHADER_MATERIALX_BEGIN * return res; */ return empty(); } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_blackbody_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_brightness.cc b/source/blender/nodes/shader/nodes/node_shader_brightness.cc index 1172ebf1b926..1abc0c783ad4 100644 --- a/source/blender/nodes/shader/nodes/node_shader_brightness.cc +++ b/source/blender/nodes/shader/nodes/node_shader_brightness.cc @@ -24,6 +24,7 @@ static int gpu_shader_brightcontrast(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { NodeItem color = get_input_value("Color", NodeItem::Type::Color3); NodeItem bright = get_input_value("Bright", NodeItem::Type::Float); @@ -32,6 +33,7 @@ NODE_SHADER_MATERIALX_BEGIN /* This formula was given from OSL shader code in Cycles. */ return (bright + color * (contrast + val(1.0f)) - contrast * val(0.5f)).max(val(0.0f)); } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_brightness_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.cc b/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.cc index 3e05d4fd2027..353edc5ef58e 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.cc +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.cc @@ -35,6 +35,7 @@ static int node_shader_gpu_bsdf_diffuse(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { if (to_type_ != NodeItem::Type::BSDF) { return empty(); @@ -52,6 +53,7 @@ NODE_SHADER_MATERIALX_BEGIN } return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_bsdf_diffuse_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.cc b/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.cc index 55d55a8ca37e..3c31389a0847 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.cc +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.cc @@ -254,6 +254,7 @@ static void node_shader_update_principled(bNodeTree *ntree, bNode *node) } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { if (to_type_ != NodeItem::Type::SurfaceShader) { /* TODO: implement for BSDF and EDF */ @@ -344,6 +345,7 @@ NODE_SHADER_MATERIALX_BEGIN return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_bsdf_principled_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_clamp.cc b/source/blender/nodes/shader/nodes/node_shader_clamp.cc index 576b8eebee40..f294d8de7f83 100644 --- a/source/blender/nodes/shader/nodes/node_shader_clamp.cc +++ b/source/blender/nodes/shader/nodes/node_shader_clamp.cc @@ -71,6 +71,7 @@ static void sh_node_clamp_build_multi_function(NodeMultiFunctionBuilder &builder } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { auto type = node_->custom1; NodeItem value = get_input_value("Value", NodeItem::Type::Float); @@ -87,6 +88,7 @@ NODE_SHADER_MATERIALX_BEGIN } return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_clamp_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_color_ramp.cc b/source/blender/nodes/shader/nodes/node_shader_color_ramp.cc index dbac50fa0e01..1f4aace65c32 100644 --- a/source/blender/nodes/shader/nodes/node_shader_color_ramp.cc +++ b/source/blender/nodes/shader/nodes/node_shader_color_ramp.cc @@ -137,10 +137,12 @@ static void sh_node_valtorgb_build_multi_function(nodes::NodeMultiFunctionBuilde } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { /* TODO: Implement */ return empty(); } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_color_ramp_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_curves.cc b/source/blender/nodes/shader/nodes/node_shader_curves.cc index 046d16d84b1e..a59b99e7c4f7 100644 --- a/source/blender/nodes/shader/nodes/node_shader_curves.cc +++ b/source/blender/nodes/shader/nodes/node_shader_curves.cc @@ -110,10 +110,12 @@ static void sh_node_curve_vec_build_multi_function(NodeMultiFunctionBuilder &bui } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { /* TODO: implement */ return get_input_value("Value", NodeItem::Type::Vector3); } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_curves_cc::vec @@ -260,10 +262,12 @@ static void sh_node_curve_rgb_build_multi_function(NodeMultiFunctionBuilder &bui } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { /* TODO: implement */ return get_input_value("Color", NodeItem::Type::Color4); } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_curves_cc::rgb @@ -386,10 +390,12 @@ static void sh_node_curve_float_build_multi_function(NodeMultiFunctionBuilder &b } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { /* TODO: implement */ return get_input_value("Value", NodeItem::Type::Float); } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_curves_cc::flt diff --git a/source/blender/nodes/shader/nodes/node_shader_emission.cc b/source/blender/nodes/shader/nodes/node_shader_emission.cc index 5f2778c8cb54..dbd56fedc405 100644 --- a/source/blender/nodes/shader/nodes/node_shader_emission.cc +++ b/source/blender/nodes/shader/nodes/node_shader_emission.cc @@ -25,6 +25,7 @@ static int node_shader_gpu_emission(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { if (to_type_ != NodeItem::Type::EDF) { return empty(); @@ -37,6 +38,7 @@ NODE_SHADER_MATERIALX_BEGIN res.set_input("color", color * strength); return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_emission_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_gamma.cc b/source/blender/nodes/shader/nodes/node_shader_gamma.cc index 8492b44fc911..13964192252e 100644 --- a/source/blender/nodes/shader/nodes/node_shader_gamma.cc +++ b/source/blender/nodes/shader/nodes/node_shader_gamma.cc @@ -23,11 +23,13 @@ static int node_shader_gpu_gamma(GPUMaterial *mat, return GPU_stack_link(mat, node, "node_gamma", in, out); } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { NodeItem color = get_input_value("Color", NodeItem::Type::Color4); NodeItem gamma = get_input_value("Gamma", NodeItem::Type::Float); return color ^ gamma; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_gamma_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_hueSatVal.cc b/source/blender/nodes/shader/nodes/node_shader_hueSatVal.cc index afcef6cd59ce..2c00df75e91a 100644 --- a/source/blender/nodes/shader/nodes/node_shader_hueSatVal.cc +++ b/source/blender/nodes/shader/nodes/node_shader_hueSatVal.cc @@ -31,6 +31,7 @@ static int gpu_shader_hue_sat(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { /* TODO: implement fac */ NodeItem hue = get_input_value("Hue", NodeItem::Type::Float); @@ -52,6 +53,7 @@ NODE_SHADER_MATERIALX_BEGIN res.set_input("amount", combine); return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_hueSatVal_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_invert.cc b/source/blender/nodes/shader/nodes/node_shader_invert.cc index ed0a520e9744..693950aa85dd 100644 --- a/source/blender/nodes/shader/nodes/node_shader_invert.cc +++ b/source/blender/nodes/shader/nodes/node_shader_invert.cc @@ -27,11 +27,13 @@ static int gpu_shader_invert(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { NodeItem fac = get_input_value("Fac", NodeItem::Type::Float); NodeItem color = get_input_value("Color", NodeItem::Type::Color3); return fac.blend(color, fac.val(1.0f) - color); } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_invert_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_light_falloff.cc b/source/blender/nodes/shader/nodes/node_shader_light_falloff.cc index 41eac7dfbf19..bd5db49387f0 100644 --- a/source/blender/nodes/shader/nodes/node_shader_light_falloff.cc +++ b/source/blender/nodes/shader/nodes/node_shader_light_falloff.cc @@ -25,6 +25,7 @@ static int node_shader_gpu_light_falloff(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { NodeItem strength = get_input_value("Strength", NodeItem::Type::Float); NodeItem smooth = get_input_value("Smooth", NodeItem::Type::Float); @@ -33,6 +34,7 @@ NODE_SHADER_MATERIALX_BEGIN * node_light_falloff.osl. Considered ray_length=1.0f. */ return strength * val(1.0f) / (smooth + val(1.0f)); } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_light_falloff_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_light_path.cc b/source/blender/nodes/shader/nodes/node_shader_light_path.cc index f3f3b314031d..654688190dc4 100644 --- a/source/blender/nodes/shader/nodes/node_shader_light_path.cc +++ b/source/blender/nodes/shader/nodes/node_shader_light_path.cc @@ -33,6 +33,7 @@ static int node_shader_gpu_light_path(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { /* This node isn't supported by MaterialX. Only default values returned. */ if (STREQ(socket_out_->name, "Is Camera Ray")) { @@ -43,6 +44,7 @@ NODE_SHADER_MATERIALX_BEGIN } return val(0.0f); } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_light_path_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_map_range.cc b/source/blender/nodes/shader/nodes/node_shader_map_range.cc index e2c8123d3fc6..4823208e6e1c 100644 --- a/source/blender/nodes/shader/nodes/node_shader_map_range.cc +++ b/source/blender/nodes/shader/nodes/node_shader_map_range.cc @@ -443,6 +443,7 @@ static void sh_node_map_range_build_multi_function(NodeMultiFunctionBuilder &bui } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { /* TODO: Implement steps */ @@ -483,6 +484,7 @@ NODE_SHADER_MATERIALX_BEGIN res.set_input("doclamp", val(bool(map_range->clamp))); return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_map_range_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_math.cc b/source/blender/nodes/shader/nodes/node_shader_math.cc index aacf978c962a..437b830d6a39 100644 --- a/source/blender/nodes/shader/nodes/node_shader_math.cc +++ b/source/blender/nodes/shader/nodes/node_shader_math.cc @@ -178,6 +178,7 @@ static void sh_node_math_build_multi_function(NodeMultiFunctionBuilder &builder) } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { CLG_LogRef *LOG_MATERIALX_SHADER = materialx::LOG_MATERIALX_SHADER; @@ -339,6 +340,7 @@ NODE_SHADER_MATERIALX_BEGIN return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_math_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_mix_rgb.cc b/source/blender/nodes/shader/nodes/node_shader_mix_rgb.cc index 2a3095468189..322e06d74c3e 100644 --- a/source/blender/nodes/shader/nodes/node_shader_mix_rgb.cc +++ b/source/blender/nodes/shader/nodes/node_shader_mix_rgb.cc @@ -151,10 +151,12 @@ static void sh_node_mix_rgb_build_multi_function(NodeMultiFunctionBuilder &build } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { /* TODO: Implement */ return empty(); } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_mix_rgb_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_mix_shader.cc b/source/blender/nodes/shader/nodes/node_shader_mix_shader.cc index eae8ca96526b..434b54515f05 100644 --- a/source/blender/nodes/shader/nodes/node_shader_mix_shader.cc +++ b/source/blender/nodes/shader/nodes/node_shader_mix_shader.cc @@ -24,6 +24,7 @@ static int node_shader_gpu_mix_shader(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { NodeItem res = empty(); switch (to_type_) { @@ -60,6 +61,7 @@ NODE_SHADER_MATERIALX_BEGIN } return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_mix_shader_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_normal_map.cc b/source/blender/nodes/shader/nodes/node_shader_normal_map.cc index 0e54a44a1740..44c162913f2d 100644 --- a/source/blender/nodes/shader/nodes/node_shader_normal_map.cc +++ b/source/blender/nodes/shader/nodes/node_shader_normal_map.cc @@ -123,6 +123,7 @@ static int gpu_shader_normal_map(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { NodeShaderNormalMap *normal_map_node = static_cast(node_->storage); NodeItem color = get_input_value("Color", NodeItem::Type::Color3); @@ -152,6 +153,7 @@ NODE_SHADER_MATERIALX_BEGIN res.set_input("space", val(space)); return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_normal_map_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_output_material.cc b/source/blender/nodes/shader/nodes/node_shader_output_material.cc index db008c872622..1167bfb96772 100644 --- a/source/blender/nodes/shader/nodes/node_shader_output_material.cc +++ b/source/blender/nodes/shader/nodes/node_shader_output_material.cc @@ -44,6 +44,7 @@ static int node_shader_gpu_output_material(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { NodeItem bsdf = get_input_link("Surface", NodeItem::Type::BSDF); NodeItem edf = get_input_link("Surface", NodeItem::Type::EDF); @@ -64,6 +65,7 @@ NODE_SHADER_MATERIALX_BEGIN res.set_input("surfaceshader", surface); return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_output_material_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_rgb_to_bw.cc b/source/blender/nodes/shader/nodes/node_shader_rgb_to_bw.cc index e7bb9c948e00..77407b3b5156 100644 --- a/source/blender/nodes/shader/nodes/node_shader_rgb_to_bw.cc +++ b/source/blender/nodes/shader/nodes/node_shader_rgb_to_bw.cc @@ -28,6 +28,7 @@ static int gpu_shader_rgbtobw(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { NodeItem color = get_input_value("Color", NodeItem::Type::Color4); @@ -35,6 +36,7 @@ NODE_SHADER_MATERIALX_BEGIN res.set_input("in", color); return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_rgb_to_bw_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_sepcomb_color.cc b/source/blender/nodes/shader/nodes/node_shader_sepcomb_color.cc index e566eb838f47..e82856ab18e7 100644 --- a/source/blender/nodes/shader/nodes/node_shader_sepcomb_color.cc +++ b/source/blender/nodes/shader/nodes/node_shader_sepcomb_color.cc @@ -69,6 +69,7 @@ static int gpu_shader_sepcolor(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { int mode = static_cast(node_->storage)->mode; NodeItem color = get_input_value("Color", NodeItem::Type::Color3); @@ -91,6 +92,7 @@ NODE_SHADER_MATERIALX_BEGIN int index = STREQ(socket_out_->name, "Red") ? 0 : STREQ(socket_out_->name, "Green") ? 1 : 2; return convert.extract(index); } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_separate_color_cc @@ -163,6 +165,7 @@ static int gpu_shader_combcolor(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { int mode = static_cast(node_->storage)->mode; NodeItem red = get_input_value("Red", NodeItem::Type::Float); @@ -190,6 +193,7 @@ NODE_SHADER_MATERIALX_BEGIN } return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_combine_color_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_sepcomb_xyz.cc b/source/blender/nodes/shader/nodes/node_shader_sepcomb_xyz.cc index bb4530c9fe10..b9f0b568e517 100644 --- a/source/blender/nodes/shader/nodes/node_shader_sepcomb_xyz.cc +++ b/source/blender/nodes/shader/nodes/node_shader_sepcomb_xyz.cc @@ -91,11 +91,13 @@ static void sh_node_sepxyz_build_multi_function(NodeMultiFunctionBuilder &builde } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { NodeItem vector = get_input_value("Vector", NodeItem::Type::Vector3); int index = STREQ(socket_out_->name, "X") ? 0 : STREQ(socket_out_->name, "Y") ? 1 : 2; return vector.extract(index); } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_sepcomb_xyz_cc::sep @@ -145,6 +147,7 @@ static void sh_node_combxyz_build_multi_function(NodeMultiFunctionBuilder &build } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { NodeItem x = get_input_value("X", NodeItem::Type::Float); NodeItem y = get_input_value("Y", NodeItem::Type::Float); @@ -156,6 +159,7 @@ NODE_SHADER_MATERIALX_BEGIN res.set_input("in3", z); return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_sepcomb_xyz_cc::comb diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_checker.cc b/source/blender/nodes/shader/nodes/node_shader_tex_checker.cc index 3ecfb83f0483..40dd136fafc8 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_checker.cc +++ b/source/blender/nodes/shader/nodes/node_shader_tex_checker.cc @@ -103,6 +103,7 @@ static void sh_node_tex_checker_build_multi_function(NodeMultiFunctionBuilder &b } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { NodeItem vector = get_input_link("Vector", NodeItem::Type::Vector2); if (!vector) { @@ -120,6 +121,7 @@ NODE_SHADER_MATERIALX_BEGIN return (vector.extract(0).floor() + vector.extract(1).floor()) .if_else(NodeItem::CompareOp::Eq, val(1.0f), value1, value2); } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_tex_checker_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_environment.cc b/source/blender/nodes/shader/nodes/node_shader_tex_environment.cc index ff9935c411c4..cc828b8bdf4c 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_environment.cc +++ b/source/blender/nodes/shader/nodes/node_shader_tex_environment.cc @@ -128,10 +128,12 @@ static int node_shader_gpu_tex_environment(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { /* TODO: Implement */ return empty(); } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_tex_environment_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_image.cc b/source/blender/nodes/shader/nodes/node_shader_tex_image.cc index 0e8ecf3aba3b..c683db52e4ac 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_image.cc +++ b/source/blender/nodes/shader/nodes/node_shader_tex_image.cc @@ -177,6 +177,7 @@ static int node_shader_gpu_tex_image(GPUMaterial *mat, } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { NodeItem res = val(MaterialX::Color4(1.0f, 0.0f, 1.0f, 1.0f)); @@ -243,6 +244,7 @@ NODE_SHADER_MATERIALX_BEGIN } return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_tex_image_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_noise.cc b/source/blender/nodes/shader/nodes/node_shader_tex_noise.cc index bc6ff5a5cff0..8fe27900be4c 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_noise.cc +++ b/source/blender/nodes/shader/nodes/node_shader_tex_noise.cc @@ -258,6 +258,7 @@ static void sh_node_noise_build_multi_function(NodeMultiFunctionBuilder &builder } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { NodeItem scale = get_input_value("Scale", NodeItem::Type::Float); NodeItem detail = get_input_value("Detail", NodeItem::Type::Float); @@ -274,6 +275,7 @@ NODE_SHADER_MATERIALX_BEGIN res.set_input("lacunarity", lacunarity); return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_tex_noise_cc diff --git a/source/blender/nodes/shader/nodes/node_shader_vector_math.cc b/source/blender/nodes/shader/nodes/node_shader_vector_math.cc index bf072379705b..fc1d5e917195 100644 --- a/source/blender/nodes/shader/nodes/node_shader_vector_math.cc +++ b/source/blender/nodes/shader/nodes/node_shader_vector_math.cc @@ -317,6 +317,7 @@ static void sh_node_vector_math_build_multi_function(NodeMultiFunctionBuilder &b } NODE_SHADER_MATERIALX_BEGIN +#ifdef WITH_MATERIALX { CLG_LogRef *LOG_MATERIALX_SHADER = materialx::LOG_MATERIALX_SHADER; @@ -429,6 +430,7 @@ NODE_SHADER_MATERIALX_BEGIN return res; } +#endif NODE_SHADER_MATERIALX_END } // namespace blender::nodes::node_shader_vector_math_cc