17 "Blend weight to use for mixing two shaders. "
18 "At zero it uses the first shader entirely and at one the second shader");
36 if (!
ELEM(to_type_, NodeItem::Type::BSDF, NodeItem::Type::EDF, NodeItem::Type::SurfaceOpacity)) {
40 NodeItem shader1 = get_input_link(1, to_type_);
41 NodeItem shader2 = get_input_link(2, to_type_);
42 if (!shader1 && !shader2) {
46 NodeItem fac = get_input_value(0, NodeItem::Type::Float);
48 if (shader1 && !shader2) {
49 return shader1 * (val(1.0f) - fac);
51 if (!shader1 && shader2) {
54 return fac.mix(shader1, shader2);
70 ntype.
ui_description =
"Mix two shaders together. Typically used for material layering";
73 ntype.
declare = file_ns::node_declare;
74 ntype.
gpu_fn = file_ns::node_shader_gpu_mix_shader;
#define NODE_CLASS_SHADER
#define SH_NODE_MIX_SHADER
bool GPU_stack_link(GPUMaterial *mat, const bNode *node, const char *name, GPUNodeStack *in, GPUNodeStack *out,...)
void node_register_type(bNodeType &ntype)
static void node_declare(NodeDeclarationBuilder &b)
static int node_shader_gpu_mix_shader(GPUMaterial *mat, bNode *node, bNodeExecData *, GPUNodeStack *in, GPUNodeStack *out)
#define NODE_SHADER_MATERIALX_BEGIN
#define NODE_SHADER_MATERIALX_END
void register_node_type_sh_mix_shader()
void sh_node_type_base(blender::bke::bNodeType *ntype, std::string idname, const std::optional< int16_t > legacy_type)
NodeMaterialXFunction materialx_fn
std::string ui_description
NodeGPUExecFunction gpu_fn
const char * enum_name_legacy
NodeDeclareFunction declare