28 if (!
ELEM(to_type_, NodeItem::Type::BSDF, NodeItem::Type::EDF, NodeItem::Type::SurfaceOpacity)) {
32 NodeItem shader1 = get_input_link(0, to_type_);
33 NodeItem shader2 = get_input_link(1, to_type_);
34 if (!shader1 && !shader2) {
38 if (shader1 && !shader2) {
41 if (!shader1 && shader2) {
44 if (to_type_ == NodeItem::Type::SurfaceOpacity) {
45 return (shader1 + shader2) * val(0.5f);
47 return shader1 + shader2;
62 ntype.
declare = file_ns::node_declare;
63 ntype.
gpu_fn = file_ns::node_shader_gpu_add_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 int node_shader_gpu_add_shader(GPUMaterial *mat, bNode *node, bNodeExecData *, GPUNodeStack *in, GPUNodeStack *out)
static void node_declare(NodeDeclarationBuilder &b)
#define NODE_SHADER_MATERIALX_BEGIN
#define NODE_SHADER_MATERIALX_END
void register_node_type_sh_add_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