11 b.add_input<
decl::Color>(
"Base Color").default_value({0.8f, 0.8f, 0.8f, 1.0f});
12 b.add_input<
decl::Color>(
"Specular").default_value({0.03f, 0.03f, 0.03f, 1.0f});
18 b.add_input<
decl::Color>(
"Emissive Color").default_value({0.0f, 0.0f, 0.0f, 1.0f});
40#define socket_not_zero(sock) (in[sock].link || (clamp_f(in[sock].vec[0], 0.0f, 1.0f) > 1e-5f))
50 GPU_link(mat,
"world_normals_get", &in[5].link);
55 GPU_link(mat,
"world_normals_get", &in[8].link);
65 if (use_transparency) {
71 float use_coat_f = use_coat ? 1.0f : 0.0f;
85 ntype.
declare = file_ns::node_declare;
87 ntype.
gpu_fn = file_ns::node_shader_gpu_eevee_specular;
#define SH_NODE_EEVEE_SPECULAR
#define NODE_CLASS_SHADER
bool GPU_stack_link(GPUMaterial *mat, const bNode *node, const char *name, GPUNodeStack *in, GPUNodeStack *out,...)
GPUNodeLink * GPU_constant(const float *num)
@ GPU_MATFLAG_TRANSPARENT
void GPU_material_flag_set(GPUMaterial *mat, eGPUMaterialFlag flag)
bool GPU_link(GPUMaterial *mat, const char *name,...)
local_group_size(16, 16) .push_constant(Type b
void node_register_type(bNodeType *ntype)
static int node_shader_gpu_eevee_specular(GPUMaterial *mat, bNode *node, bNodeExecData *, GPUNodeStack *in, GPUNodeStack *out)
static void node_declare(NodeDeclarationBuilder &b)
#define socket_not_zero(sock)
void register_node_type_sh_eevee_specular()
void sh_node_type_base(blender::bke::bNodeType *ntype, int type, const char *name, short nclass)
bool object_eevee_shader_nodes_poll(const bContext *C)
bool(* add_ui_poll)(const bContext *C)
NodeGPUExecFunction gpu_fn
NodeDeclareFunction declare