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);
69 ntype.
declare = file_ns::node_declare;
70 ntype.
gpu_fn = file_ns::node_shader_gpu_mix_shader;
#define NODE_CLASS_SHADER
bool GPU_stack_link(GPUMaterial *mat, const bNode *node, const char *name, GPUNodeStack *in, GPUNodeStack *out,...)
local_group_size(16, 16) .push_constant(Type b
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, int type, const char *name, short nclass)
NodeMaterialXFunction materialx_fn
NodeGPUExecFunction gpu_fn
NodeDeclareFunction declare