Revert moving all shader nodes to c++
This reverts to following commits: * rB5cad004d716da02f511bd34983ac7da820308676 * rB97e3a2d935ba9b21b127eda7ca104d4bcf4e48bd * rBf60b95b5320f8d6abe6a629fe8fc4f1b94d0d91c * rB0bd3cad04edf4bf9b9d3b1353f955534aa5e6740 * rBf72cc47d8edf849af98e196f721022bacf86a5e7 * rB3f7014ecc9d523997062eadd62888af5fc70a2b6 * rB0578921063fbb081239439062215f2538a31af4b * rBc20098e6ec6adee874a12e510aa4a56d89f92838 * rBd5efda72f501ad95679d7ac554086a1fb18c1ac0 The original move to c++ that the other commits depended upon had some issues that should be fixed before committing it again. The issues were reported in T93797, T93809 and T93798. We should also find a better rule for not using c-style casts going forward, although that wouldn't have been reason enough to revert the commits. Introducing something like a `MEM_new<T>` and `MEM_delete<T>` function might help with the the most common case of casting the return type of `MEM_malloc`. Going forward, I recommend first committing the changes that don't require converting files to c++. Then convert the shading node files in smaller chunks. Especially don't mix fairly low risk changes like moving some simple nodes, with higher risk changes.
This commit is contained in:
parent
ae5a89e80a
commit
0f48b37aae
Notes:
blender-bot
2023-02-14 05:16:25 +01:00
Referenced by issue #93798, Eevee: Group node shaders do not get compiled when using Mix Shader node
|
@ -5592,7 +5592,7 @@ static void registerShaderNodes()
|
|||
register_node_type_sh_wavelength();
|
||||
register_node_type_sh_blackbody();
|
||||
register_node_type_sh_mix_rgb();
|
||||
register_node_type_sh_color_ramp();
|
||||
register_node_type_sh_valtorgb();
|
||||
register_node_type_sh_rgbtobw();
|
||||
register_node_type_sh_shadertorgb();
|
||||
register_node_type_sh_normal();
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
# ***** END GPL LICENSE BLOCK *****
|
||||
|
||||
add_subdirectory(geometry)
|
||||
add_subdirectory(shader)
|
||||
|
||||
set(INC
|
||||
.
|
||||
|
@ -158,6 +157,99 @@ set(SRC
|
|||
function/nodes/node_fn_value_to_string.cc
|
||||
function/node_function_util.cc
|
||||
|
||||
shader/nodes/node_shader_add_shader.c
|
||||
shader/nodes/node_shader_ambient_occlusion.c
|
||||
shader/nodes/node_shader_attribute.c
|
||||
shader/nodes/node_shader_background.c
|
||||
shader/nodes/node_shader_bevel.c
|
||||
shader/nodes/node_shader_blackbody.c
|
||||
shader/nodes/node_shader_brightness.c
|
||||
shader/nodes/node_shader_bsdf_anisotropic.c
|
||||
shader/nodes/node_shader_bsdf_diffuse.c
|
||||
shader/nodes/node_shader_bsdf_glass.c
|
||||
shader/nodes/node_shader_bsdf_glossy.c
|
||||
shader/nodes/node_shader_bsdf_hair.c
|
||||
shader/nodes/node_shader_bsdf_hair_principled.c
|
||||
shader/nodes/node_shader_bsdf_principled.c
|
||||
shader/nodes/node_shader_bsdf_refraction.c
|
||||
shader/nodes/node_shader_bsdf_toon.c
|
||||
shader/nodes/node_shader_bsdf_translucent.c
|
||||
shader/nodes/node_shader_bsdf_transparent.c
|
||||
shader/nodes/node_shader_bsdf_velvet.c
|
||||
shader/nodes/node_shader_bump.c
|
||||
shader/nodes/node_shader_camera.c
|
||||
shader/nodes/node_shader_clamp.cc
|
||||
shader/nodes/node_shader_common.c
|
||||
shader/nodes/node_shader_curves.cc
|
||||
shader/nodes/node_shader_displacement.c
|
||||
shader/nodes/node_shader_eevee_specular.c
|
||||
shader/nodes/node_shader_emission.c
|
||||
shader/nodes/node_shader_fresnel.c
|
||||
shader/nodes/node_shader_gamma.c
|
||||
shader/nodes/node_shader_geometry.c
|
||||
shader/nodes/node_shader_hair_info.c
|
||||
shader/nodes/node_shader_holdout.c
|
||||
shader/nodes/node_shader_hueSatVal.c
|
||||
shader/nodes/node_shader_ies_light.c
|
||||
shader/nodes/node_shader_invert.c
|
||||
shader/nodes/node_shader_layer_weight.c
|
||||
shader/nodes/node_shader_light_falloff.c
|
||||
shader/nodes/node_shader_light_path.c
|
||||
shader/nodes/node_shader_map_range.cc
|
||||
shader/nodes/node_shader_mapping.c
|
||||
shader/nodes/node_shader_math.cc
|
||||
shader/nodes/node_shader_mixRgb.cc
|
||||
shader/nodes/node_shader_mix_shader.c
|
||||
shader/nodes/node_shader_normal.c
|
||||
shader/nodes/node_shader_normal_map.c
|
||||
shader/nodes/node_shader_object_info.c
|
||||
shader/nodes/node_shader_output_aov.c
|
||||
shader/nodes/node_shader_output_light.c
|
||||
shader/nodes/node_shader_output_linestyle.c
|
||||
shader/nodes/node_shader_output_material.c
|
||||
shader/nodes/node_shader_output_world.c
|
||||
shader/nodes/node_shader_particle_info.c
|
||||
shader/nodes/node_shader_rgb.c
|
||||
shader/nodes/node_shader_script.c
|
||||
shader/nodes/node_shader_sepcombHSV.c
|
||||
shader/nodes/node_shader_sepcombRGB.cc
|
||||
shader/nodes/node_shader_sepcombXYZ.cc
|
||||
shader/nodes/node_shader_shaderToRgb.c
|
||||
shader/nodes/node_shader_squeeze.c
|
||||
shader/nodes/node_shader_subsurface_scattering.c
|
||||
shader/nodes/node_shader_tangent.c
|
||||
shader/nodes/node_shader_tex_brick.cc
|
||||
shader/nodes/node_shader_tex_checker.cc
|
||||
shader/nodes/node_shader_tex_coord.c
|
||||
shader/nodes/node_shader_tex_environment.c
|
||||
shader/nodes/node_shader_tex_gradient.cc
|
||||
shader/nodes/node_shader_tex_image.cc
|
||||
shader/nodes/node_shader_tex_magic.cc
|
||||
shader/nodes/node_shader_tex_musgrave.cc
|
||||
shader/nodes/node_shader_tex_noise.cc
|
||||
shader/nodes/node_shader_tex_pointdensity.c
|
||||
shader/nodes/node_shader_tex_sky.c
|
||||
shader/nodes/node_shader_tex_voronoi.cc
|
||||
shader/nodes/node_shader_tex_wave.cc
|
||||
shader/nodes/node_shader_tex_white_noise.cc
|
||||
shader/nodes/node_shader_uvAlongStroke.c
|
||||
shader/nodes/node_shader_uvmap.c
|
||||
shader/nodes/node_shader_valToRgb.cc
|
||||
shader/nodes/node_shader_value.cc
|
||||
shader/nodes/node_shader_vectTransform.c
|
||||
shader/nodes/node_shader_vector_displacement.c
|
||||
shader/nodes/node_shader_vector_math.cc
|
||||
shader/nodes/node_shader_vector_rotate.cc
|
||||
shader/nodes/node_shader_vertex_color.c
|
||||
shader/nodes/node_shader_volume_absorption.c
|
||||
shader/nodes/node_shader_volume_info.c
|
||||
shader/nodes/node_shader_volume_principled.c
|
||||
shader/nodes/node_shader_volume_scatter.c
|
||||
shader/nodes/node_shader_wavelength.c
|
||||
shader/nodes/node_shader_wireframe.c
|
||||
shader/node_shader_tree.c
|
||||
shader/node_shader_util.cc
|
||||
|
||||
texture/nodes/node_texture_at.c
|
||||
texture/nodes/node_texture_bricks.c
|
||||
texture/nodes/node_texture_checker.c
|
||||
|
@ -200,7 +292,7 @@ set(SRC
|
|||
|
||||
composite/node_composite_util.hh
|
||||
function/node_function_util.hh
|
||||
shader/node_shader_util.hh
|
||||
shader/node_shader_util.h
|
||||
texture/node_texture_util.h
|
||||
|
||||
NOD_common.h
|
||||
|
@ -229,8 +321,8 @@ set(SRC
|
|||
set(LIB
|
||||
bf_bmesh
|
||||
bf_functions
|
||||
bf_intern_sky
|
||||
bf_nodes_geometry
|
||||
bf_nodes_shader
|
||||
)
|
||||
|
||||
if(WITH_BULLET)
|
||||
|
|
|
@ -42,7 +42,7 @@ void register_node_type_sh_camera(void);
|
|||
void register_node_type_sh_value(void);
|
||||
void register_node_type_sh_rgb(void);
|
||||
void register_node_type_sh_mix_rgb(void);
|
||||
void register_node_type_sh_color_ramp(void);
|
||||
void register_node_type_sh_valtorgb(void);
|
||||
void register_node_type_sh_rgbtobw(void);
|
||||
void register_node_type_sh_shadertorgb(void);
|
||||
void register_node_type_sh_normal(void);
|
||||
|
|
|
@ -213,22 +213,6 @@ class Image : public IDSocketDeclaration {
|
|||
Image();
|
||||
};
|
||||
|
||||
class ShaderBuilder;
|
||||
|
||||
class Shader : public SocketDeclaration {
|
||||
private:
|
||||
friend ShaderBuilder;
|
||||
|
||||
public:
|
||||
using Builder = ShaderBuilder;
|
||||
|
||||
bNodeSocket &build(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out) const override;
|
||||
bool matches(const bNodeSocket &socket) const override;
|
||||
};
|
||||
|
||||
class ShaderBuilder : public SocketDeclarationBuilder<Shader> {
|
||||
};
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name #FloatBuilder Inline Methods
|
||||
* \{ */
|
||||
|
|
|
@ -212,7 +212,7 @@ static bool composite_node_tree_socket_type_valid(bNodeTreeType *UNUSED(ntreetyp
|
|||
|
||||
bNodeTreeType *ntreeType_Composite;
|
||||
|
||||
void register_node_tree_type_cmp()
|
||||
void register_node_tree_type_cmp(void)
|
||||
{
|
||||
bNodeTreeType *tt = ntreeType_Composite = (bNodeTreeType *)MEM_callocN(
|
||||
sizeof(bNodeTreeType), "compositor node tree type");
|
||||
|
|
|
@ -42,7 +42,7 @@ static void node_alphaover_init(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = MEM_callocN(sizeof(NodeTwoFloats), "NodeTwoFloats");
|
||||
}
|
||||
|
||||
void register_node_type_cmp_alphaover()
|
||||
void register_node_type_cmp_alphaover(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ static void node_composit_init_antialiasing(bNodeTree *UNUSED(ntree), bNode *nod
|
|||
node->storage = data;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_antialiasing()
|
||||
void register_node_type_cmp_antialiasing(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ static void node_composit_init_bilateralblur(bNodeTree *UNUSED(ntree), bNode *no
|
|||
nbbd->sigma_space = 5.0;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_bilateralblur()
|
||||
void register_node_type_cmp_bilateralblur(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ static void node_composit_init_blur(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = data;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_blur()
|
||||
void register_node_type_cmp_blur(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ static void node_composit_init_bokehblur(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->custom4 = 16.0f;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_bokehblur()
|
||||
void register_node_type_cmp_bokehblur(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ static void node_composit_init_bokehimage(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = data;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_bokehimage()
|
||||
void register_node_type_cmp_bokehimage(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ static void node_composit_init_boxmask(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = data;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_boxmask()
|
||||
void register_node_type_cmp_boxmask(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ static void node_composit_init_brightcontrast(bNodeTree *UNUSED(ntree), bNode *n
|
|||
node->custom1 = 1;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_brightcontrast()
|
||||
void register_node_type_cmp_brightcontrast(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ static void node_composit_init_channel_matte(bNodeTree *UNUSED(ntree), bNode *no
|
|||
node->custom2 = 2; /* Green Channel. */
|
||||
}
|
||||
|
||||
void register_node_type_cmp_channel_matte()
|
||||
void register_node_type_cmp_channel_matte(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ static void node_composit_init_chroma_matte(bNodeTree *UNUSED(ntree), bNode *nod
|
|||
c->fstrength = 1.0f;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_chroma_matte()
|
||||
void register_node_type_cmp_chroma_matte(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ static void node_composit_init_color_matte(bNodeTree *UNUSED(ntree), bNode *node
|
|||
c->fstrength = 1.0f;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_color_matte()
|
||||
void register_node_type_cmp_color_matte(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ static void node_composit_init_color_spill(bNodeTree *UNUSED(ntree), bNode *node
|
|||
ncs->unspill = 0; /* do not use unspill */
|
||||
}
|
||||
|
||||
void register_node_type_cmp_color_spill()
|
||||
void register_node_type_cmp_color_spill(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ static void node_composit_init_colorbalance(bNodeTree *UNUSED(ntree), bNode *nod
|
|||
node->storage = n;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_colorbalance()
|
||||
void register_node_type_cmp_colorbalance(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ static void node_composit_init_colorcorrection(bNodeTree *UNUSED(ntree), bNode *
|
|||
node->storage = n;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_colorcorrection()
|
||||
void register_node_type_cmp_colorcorrection(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -32,13 +32,14 @@
|
|||
|
||||
#include "RNA_access.h"
|
||||
|
||||
void register_node_type_cmp_group()
|
||||
void register_node_type_cmp_group(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
/* NOTE: Cannot use sh_node_type_base for node group, because it would map the node type
|
||||
* to the shared NODE_GROUP integer type id. */
|
||||
node_type_base_custom(&ntype, "CompositorNodeGroup", "Group", NODE_CLASS_GROUP, 0);
|
||||
node_type_base_custom(
|
||||
&ntype, "CompositorNodeGroup", "Group", NODE_CLASS_GROUP, 0);
|
||||
ntype.type = NODE_GROUP;
|
||||
ntype.poll = cmp_node_poll_default;
|
||||
ntype.poll_instance = node_group_poll_instance;
|
||||
|
|
|
@ -36,7 +36,7 @@ static void cmp_node_composite_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_composite()
|
||||
void register_node_type_cmp_composite(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ static void cmp_node_cornerpin_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_cornerpin()
|
||||
void register_node_type_cmp_cornerpin(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ static void node_composit_init_crop(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
nxy->y2 = 0;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_crop()
|
||||
void register_node_type_cmp_crop(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -297,8 +297,8 @@ static bool node_poll_cryptomatte(bNodeType *UNUSED(ntype),
|
|||
}
|
||||
|
||||
if (scene == nullptr) {
|
||||
*r_disabled_hint = TIP_(
|
||||
"The node tree must be the compositing node tree of any scene in the file");
|
||||
*r_disabled_hint =
|
||||
TIP_("The node tree must be the compositing node tree of any scene in the file");
|
||||
}
|
||||
return scene != nullptr;
|
||||
}
|
||||
|
@ -306,7 +306,7 @@ static bool node_poll_cryptomatte(bNodeType *UNUSED(ntype),
|
|||
return false;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_cryptomatte()
|
||||
void register_node_type_cmp_cryptomatte(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
@ -361,7 +361,7 @@ int ntreeCompositCryptomatteRemoveSocket(bNodeTree *ntree, bNode *node)
|
|||
return 1;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_cryptomatte_legacy()
|
||||
void register_node_type_cmp_cryptomatte_legacy(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ static void node_composit_init_curves_time(bNodeTree *UNUSED(ntree), bNode *node
|
|||
node->storage = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
void register_node_type_cmp_curve_time()
|
||||
void register_node_type_cmp_curve_time(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
@ -72,7 +72,7 @@ static void node_composit_init_curve_vec(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = BKE_curvemapping_add(3, -1.0f, -1.0f, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
void register_node_type_cmp_curve_vec()
|
||||
void register_node_type_cmp_curve_vec(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
@ -106,7 +106,7 @@ static void node_composit_init_curve_rgb(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = BKE_curvemapping_add(4, 0.0f, 0.0f, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
void register_node_type_cmp_curve_rgb()
|
||||
void register_node_type_cmp_curve_rgb(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ static void node_composit_init_defocus(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = nbd;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_defocus()
|
||||
void register_node_type_cmp_defocus(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ static void node_composit_init_denonise(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = ndg;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_denoise()
|
||||
void register_node_type_cmp_denoise(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ static void node_composit_init_despeckle(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->custom4 = 0.5f;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_despeckle()
|
||||
void register_node_type_cmp_despeckle(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ static void node_composit_init_diff_matte(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
c->t2 = 0.1f;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_diff_matte()
|
||||
void register_node_type_cmp_diff_matte(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ static void node_composit_init_dilateerode(bNodeTree *UNUSED(ntree), bNode *node
|
|||
node->storage = data;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_dilateerode()
|
||||
void register_node_type_cmp_dilateerode(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ static void node_composit_init_dblur(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
ndbd->center_y = 0.5;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_dblur()
|
||||
void register_node_type_cmp_dblur(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ static void cmp_node_displace_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_displace()
|
||||
void register_node_type_cmp_displace(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ static void node_composit_init_distance_matte(bNodeTree *UNUSED(ntree), bNode *n
|
|||
c->t2 = 0.1f;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_distance_matte()
|
||||
void register_node_type_cmp_distance_matte(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ static void cmp_node_double_edge_mask_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_doubleedgemask()
|
||||
void register_node_type_cmp_doubleedgemask(void)
|
||||
{
|
||||
static bNodeType ntype; /* Allocate a node type data structure. */
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ static void node_composit_init_ellipsemask(bNodeTree *UNUSED(ntree), bNode *node
|
|||
node->storage = data;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_ellipsemask()
|
||||
void register_node_type_cmp_ellipsemask(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ static void cmp_node_exposure_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_exposure()
|
||||
void register_node_type_cmp_exposure(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ static void cmp_node_filter_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_filter()
|
||||
void register_node_type_cmp_filter(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ static void cmp_node_flip_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_flip()
|
||||
void register_node_type_cmp_flip(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ static void cmp_node_gamma_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_gamma()
|
||||
void register_node_type_cmp_gamma(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ static void node_composit_init_glare(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = ndg;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_glare()
|
||||
void register_node_type_cmp_glare(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ static void cmp_node_huesatval_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_hue_sat()
|
||||
void register_node_type_cmp_hue_sat(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ static void node_composit_init_huecorrect(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
cumapping->cur = 1;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_huecorrect()
|
||||
void register_node_type_cmp_huecorrect(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ static void cmp_node_idmask_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_idmask()
|
||||
void register_node_type_cmp_idmask(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -443,7 +443,7 @@ static void node_composit_copy_image(bNodeTree *UNUSED(dest_ntree),
|
|||
}
|
||||
}
|
||||
|
||||
void register_node_type_cmp_image()
|
||||
void register_node_type_cmp_image(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
@ -555,7 +555,7 @@ static void cmp_node_rlayers_update(bNodeTree *ntree, bNode *node)
|
|||
cmp_node_update_default(ntree, node);
|
||||
}
|
||||
|
||||
void register_node_type_cmp_rlayers()
|
||||
void register_node_type_cmp_rlayers(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ static void cmp_node_inpaint_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_inpaint()
|
||||
void register_node_type_cmp_inpaint(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ static void node_composit_init_invert(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
}
|
||||
|
||||
/* custom1 = mix type */
|
||||
void register_node_type_cmp_invert()
|
||||
void register_node_type_cmp_invert(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ static void node_composit_init_keying(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = data;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_keying()
|
||||
void register_node_type_cmp_keying(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ static void node_composit_init_keyingscreen(bNodeTree *UNUSED(ntree), bNode *nod
|
|||
node->storage = data;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_keyingscreen()
|
||||
void register_node_type_cmp_keyingscreen(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ static void node_composit_init_lensdist(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = nld;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_lensdist()
|
||||
void register_node_type_cmp_lensdist(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ static void node_composit_init_view_levels(bNodeTree *UNUSED(ntree), bNode *node
|
|||
node->custom1 = 1; /* All channels. */
|
||||
}
|
||||
|
||||
void register_node_type_cmp_view_levels()
|
||||
void register_node_type_cmp_view_levels(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ static void node_composit_init_luma_matte(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
c->t2 = 0.0f;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_luma_matte()
|
||||
void register_node_type_cmp_luma_matte(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ static void cmp_node_map_range_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_map_range()
|
||||
void register_node_type_cmp_map_range(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ static void cmp_node_map_uv_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_mapuv()
|
||||
void register_node_type_cmp_mapuv(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ static void node_composit_init_map_value(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = BKE_texture_mapping_add(TEXMAP_TYPE_POINT);
|
||||
}
|
||||
|
||||
void register_node_type_cmp_map_value()
|
||||
void register_node_type_cmp_map_value(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ static void node_mask_label(bNodeTree *UNUSED(ntree), bNode *node, char *label,
|
|||
}
|
||||
}
|
||||
|
||||
void register_node_type_cmp_mask()
|
||||
void register_node_type_cmp_mask(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ static void cmp_node_math_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_math()
|
||||
void register_node_type_cmp_math(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ static void cmp_node_mixrgb_declare(NodeDeclarationBuilder &b)
|
|||
} // namespace blender::nodes
|
||||
|
||||
/* custom1 = mix type */
|
||||
void register_node_type_cmp_mix_rgb()
|
||||
void register_node_type_cmp_mix_rgb(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ static void init(const bContext *C, PointerRNA *ptr)
|
|||
user->framenr = 1;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_movieclip()
|
||||
void register_node_type_cmp_movieclip(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ static void storage_copy(bNodeTree *UNUSED(dest_ntree), bNode *dest_node, const
|
|||
}
|
||||
}
|
||||
|
||||
void register_node_type_cmp_moviedistortion()
|
||||
void register_node_type_cmp_moviedistortion(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ static void cmp_node_normal_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_normal()
|
||||
void register_node_type_cmp_normal(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ static void cmp_node_normalize_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_normalize()
|
||||
void register_node_type_cmp_normalize(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -277,7 +277,7 @@ static void update_output_file(bNodeTree *ntree, bNode *node)
|
|||
}
|
||||
}
|
||||
|
||||
void register_node_type_cmp_output_file()
|
||||
void register_node_type_cmp_output_file(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ static void cmp_node_pixelate_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_pixelate()
|
||||
void register_node_type_cmp_pixelate(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ static void init(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = data;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_planetrackdeform()
|
||||
void register_node_type_cmp_planetrackdeform(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ static void cmp_node_posterize_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_posterize()
|
||||
void register_node_type_cmp_posterize(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ static void cmp_node_premulkey_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_premulkey()
|
||||
void register_node_type_cmp_premulkey(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ static void cmp_node_rgb_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_rgb()
|
||||
void register_node_type_cmp_rgb(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ static void node_composit_init_rotate(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->custom1 = 1; /* Bilinear Filter. */
|
||||
}
|
||||
|
||||
void register_node_type_cmp_rotate()
|
||||
void register_node_type_cmp_rotate(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ static void node_composite_update_scale(bNodeTree *ntree, bNode *node)
|
|||
}
|
||||
}
|
||||
|
||||
void register_node_type_cmp_scale()
|
||||
void register_node_type_cmp_scale(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ static void cmp_node_sephsva_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_sephsva()
|
||||
void register_node_type_cmp_sephsva(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
@ -62,7 +62,7 @@ static void cmp_node_combhsva_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_combhsva()
|
||||
void register_node_type_cmp_combhsva(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ static void cmp_node_seprgba_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_seprgba()
|
||||
void register_node_type_cmp_seprgba(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
@ -62,7 +62,7 @@ static void cmp_node_combrgba_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_combrgba()
|
||||
void register_node_type_cmp_combrgba(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ static void node_composit_init_mode_sepycca(bNodeTree *UNUSED(ntree), bNode *nod
|
|||
node->custom1 = 1; /* BLI_YCC_ITU_BT709 */
|
||||
}
|
||||
|
||||
void register_node_type_cmp_sepycca()
|
||||
void register_node_type_cmp_sepycca(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
@ -74,7 +74,7 @@ static void node_composit_init_mode_combycca(bNodeTree *UNUSED(ntree), bNode *no
|
|||
node->custom1 = 1; /* BLI_YCC_ITU_BT709 */
|
||||
}
|
||||
|
||||
void register_node_type_cmp_combycca()
|
||||
void register_node_type_cmp_combycca(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ static void cmp_node_sepyuva_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_sepyuva()
|
||||
void register_node_type_cmp_sepyuva(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
@ -63,7 +63,7 @@ static void cmp_node_combyuva_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_combyuva()
|
||||
void register_node_type_cmp_combyuva(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ static void node_composit_init_setalpha(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
settings->mode = CMP_NODE_SETALPHA_MODE_APPLY;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_setalpha()
|
||||
void register_node_type_cmp_setalpha(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ static void node_composit_init_splitviewer(bNodeTree *UNUSED(ntree), bNode *node
|
|||
node->id = (ID *)BKE_image_ensure_viewer(G.main, IMA_TYPE_COMPOSITE, "Viewer Node");
|
||||
}
|
||||
|
||||
void register_node_type_cmp_splitviewer()
|
||||
void register_node_type_cmp_splitviewer(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ static void init(const bContext *C, PointerRNA *ptr)
|
|||
node->custom1 = 1;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_stabilize2d()
|
||||
void register_node_type_cmp_stabilize2d(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ static void init(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = data;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_sunbeams()
|
||||
void register_node_type_cmp_sunbeams(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ static void cmp_node_switch_declare(NodeDeclarationBuilder &b)
|
|||
} // namespace blender::nodes
|
||||
|
||||
/* custom1 = mix type */
|
||||
void register_node_type_cmp_switch()
|
||||
void register_node_type_cmp_switch(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -137,7 +137,7 @@ static void init_switch_view(const bContext *C, PointerRNA *ptr)
|
|||
cmp_node_switch_view_sanitycheck(ntree, node);
|
||||
}
|
||||
|
||||
void register_node_type_cmp_switch_view()
|
||||
void register_node_type_cmp_switch_view(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ static void cmp_node_texture_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_texture()
|
||||
void register_node_type_cmp_texture(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ static void node_composit_init_tonemap(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = ntm;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_tonemap()
|
||||
void register_node_type_cmp_tonemap(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ static void init(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = data;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_trackpos()
|
||||
void register_node_type_cmp_trackpos(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ static void cmp_node_transform_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_transform()
|
||||
void register_node_type_cmp_transform(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ static void node_composit_init_translate(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = data;
|
||||
}
|
||||
|
||||
void register_node_type_cmp_translate()
|
||||
void register_node_type_cmp_translate(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ static void node_composit_init_valtorgb(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->storage = BKE_colorband_add(true);
|
||||
}
|
||||
|
||||
void register_node_type_cmp_valtorgb()
|
||||
void register_node_type_cmp_valtorgb(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
@ -66,7 +66,7 @@ static void cmp_node_rgbtobw_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_rgbtobw()
|
||||
void register_node_type_cmp_rgbtobw(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ static void cmp_node_value_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_value()
|
||||
void register_node_type_cmp_value(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ static void node_composit_init_vecblur(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
}
|
||||
|
||||
/* custom1: iterations, custom2: max_speed (0 = no_limit). */
|
||||
void register_node_type_cmp_vecblur()
|
||||
void register_node_type_cmp_vecblur(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ static void node_composit_init_viewer(bNodeTree *UNUSED(ntree), bNode *node)
|
|||
node->id = (ID *)BKE_image_ensure_viewer(G.main, IMA_TYPE_COMPOSITE, "Viewer Node");
|
||||
}
|
||||
|
||||
void register_node_type_cmp_viewer()
|
||||
void register_node_type_cmp_viewer(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ static void cmp_node_zcombine_declare(NodeDeclarationBuilder &b)
|
|||
|
||||
} // namespace blender::nodes
|
||||
|
||||
void register_node_type_cmp_zcombine()
|
||||
void register_node_type_cmp_zcombine(void)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
|
|
|
@ -376,29 +376,4 @@ GeometryBuilder &GeometryBuilder::only_instances(bool value)
|
|||
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name #Shader
|
||||
* \{ */
|
||||
|
||||
bNodeSocket &Shader::build(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out) const
|
||||
{
|
||||
bNodeSocket &socket = *nodeAddSocket(
|
||||
&ntree, &node, in_out, "NodeSocketShader", identifier_.c_str(), name_.c_str());
|
||||
this->set_common_flags(socket);
|
||||
return socket;
|
||||
}
|
||||
|
||||
bool Shader::matches(const bNodeSocket &socket) const
|
||||
{
|
||||
if (!this->matches_common_data(socket)) {
|
||||
return false;
|
||||
}
|
||||
if (socket.type != SOCK_SHADER) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/** \} */
|
||||
|
||||
} // namespace blender::nodes::decl
|
||||
|
|
|
@ -1,171 +0,0 @@
|
|||
# ***** BEGIN GPL LICENSE BLOCK *****
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ***** END GPL LICENSE BLOCK *****
|
||||
|
||||
set(INC
|
||||
.
|
||||
../
|
||||
../intern
|
||||
../../blenkernel
|
||||
../../blenlib
|
||||
../../blentranslation
|
||||
../../depsgraph
|
||||
../../functions
|
||||
../../gpu
|
||||
../../imbuf
|
||||
../../makesdna
|
||||
../../makesrna
|
||||
../../render
|
||||
../../windowmanager
|
||||
../../../../intern/guardedalloc
|
||||
../../../../intern/sky/include
|
||||
)
|
||||
|
||||
|
||||
set(SRC
|
||||
nodes/node_shader_add_shader.cc
|
||||
nodes/node_shader_ambient_occlusion.cc
|
||||
nodes/node_shader_attribute.cc
|
||||
nodes/node_shader_background.cc
|
||||
nodes/node_shader_bevel.cc
|
||||
nodes/node_shader_blackbody.cc
|
||||
nodes/node_shader_brightness.cc
|
||||
nodes/node_shader_bsdf_anisotropic.cc
|
||||
nodes/node_shader_bsdf_diffuse.cc
|
||||
nodes/node_shader_bsdf_glass.cc
|
||||
nodes/node_shader_bsdf_glossy.cc
|
||||
nodes/node_shader_bsdf_hair.cc
|
||||
nodes/node_shader_bsdf_hair_principled.cc
|
||||
nodes/node_shader_bsdf_principled.cc
|
||||
nodes/node_shader_bsdf_refraction.cc
|
||||
nodes/node_shader_bsdf_toon.cc
|
||||
nodes/node_shader_bsdf_translucent.cc
|
||||
nodes/node_shader_bsdf_transparent.cc
|
||||
nodes/node_shader_bsdf_velvet.cc
|
||||
nodes/node_shader_bump.cc
|
||||
nodes/node_shader_camera.cc
|
||||
nodes/node_shader_clamp.cc
|
||||
nodes/node_shader_color_ramp.cc
|
||||
nodes/node_shader_combine_hsv.cc
|
||||
nodes/node_shader_combine_rgb.cc
|
||||
nodes/node_shader_combine_xyz.cc
|
||||
nodes/node_shader_common.cc
|
||||
nodes/node_shader_curves.cc
|
||||
nodes/node_shader_displacement.cc
|
||||
nodes/node_shader_eevee_specular.cc
|
||||
nodes/node_shader_emission.cc
|
||||
nodes/node_shader_fresnel.cc
|
||||
nodes/node_shader_gamma.cc
|
||||
nodes/node_shader_geometry.cc
|
||||
nodes/node_shader_hair_info.cc
|
||||
nodes/node_shader_holdout.cc
|
||||
nodes/node_shader_hueSatVal.cc
|
||||
nodes/node_shader_ies_light.cc
|
||||
nodes/node_shader_invert.cc
|
||||
nodes/node_shader_layer_weight.cc
|
||||
nodes/node_shader_light_falloff.cc
|
||||
nodes/node_shader_light_path.cc
|
||||
nodes/node_shader_map_range.cc
|
||||
nodes/node_shader_mapping.cc
|
||||
nodes/node_shader_math.cc
|
||||
nodes/node_shader_mix_rgb.cc
|
||||
nodes/node_shader_mix_shader.cc
|
||||
nodes/node_shader_normal.cc
|
||||
nodes/node_shader_normal_map.cc
|
||||
nodes/node_shader_object_info.cc
|
||||
nodes/node_shader_output_aov.cc
|
||||
nodes/node_shader_output_light.cc
|
||||
nodes/node_shader_output_linestyle.cc
|
||||
nodes/node_shader_output_material.cc
|
||||
nodes/node_shader_output_world.cc
|
||||
nodes/node_shader_particle_info.cc
|
||||
nodes/node_shader_rgb.cc
|
||||
nodes/node_shader_rgb_to_bw.cc
|
||||
nodes/node_shader_script.cc
|
||||
nodes/node_shader_separate_hsv.cc
|
||||
nodes/node_shader_separate_rgb.cc
|
||||
nodes/node_shader_separate_xyz.cc
|
||||
nodes/node_shader_shader_to_rgb.cc
|
||||
nodes/node_shader_squeeze.cc
|
||||
nodes/node_shader_subsurface_scattering.cc
|
||||
nodes/node_shader_tangent.cc
|
||||
nodes/node_shader_tex_brick.cc
|
||||
nodes/node_shader_tex_checker.cc
|
||||
nodes/node_shader_tex_coord.cc
|
||||
nodes/node_shader_tex_environment.cc
|
||||
nodes/node_shader_tex_gradient.cc
|
||||
nodes/node_shader_tex_image.cc
|
||||
nodes/node_shader_tex_magic.cc
|
||||
nodes/node_shader_tex_musgrave.cc
|
||||
nodes/node_shader_tex_noise.cc
|
||||
nodes/node_shader_tex_pointdensity.cc
|
||||
nodes/node_shader_tex_sky.cc
|
||||
nodes/node_shader_tex_voronoi.cc
|
||||
nodes/node_shader_tex_wave.cc
|
||||
nodes/node_shader_tex_white_noise.cc
|
||||
nodes/node_shader_uv_along_stroke.cc
|
||||
nodes/node_shader_uvmap.cc
|
||||
nodes/node_shader_value.cc
|
||||
nodes/node_shader_vector_displacement.cc
|
||||
nodes/node_shader_vector_math.cc
|
||||
nodes/node_shader_vector_rotate.cc
|
||||
nodes/node_shader_vector_transform.cc
|
||||
nodes/node_shader_vertex_color.cc
|
||||
nodes/node_shader_volume_absorption.cc
|
||||
nodes/node_shader_volume_info.cc
|
||||
nodes/node_shader_volume_principled.cc
|
||||
nodes/node_shader_volume_scatter.cc
|
||||
nodes/node_shader_wavelength.cc
|
||||
nodes/node_shader_wireframe.cc
|
||||
|
||||
node_shader_tree.cc
|
||||
node_shader_util.cc
|
||||
)
|
||||
|
||||
set(LIB
|
||||
bf_functions
|
||||
bf_intern_sky
|
||||
)
|
||||
|
||||
if(WITH_PYTHON)
|
||||
list(APPEND INC
|
||||
../../python
|
||||
)
|
||||
list(APPEND INC_SYS
|
||||
${PYTHON_INCLUDE_DIRS}
|
||||
)
|
||||
list(APPEND LIB
|
||||
${PYTHON_LINKFLAGS}
|
||||
${PYTHON_LIBRARIES}
|
||||
)
|
||||
add_definitions(-DWITH_PYTHON)
|
||||
endif()
|
||||
|
||||
if(WITH_INTERNATIONAL)
|
||||
add_definitions(-DWITH_INTERNATIONAL)
|
||||
endif()
|
||||
|
||||
if(WITH_FREESTYLE)
|
||||
add_definitions(-DWITH_FREESTYLE)
|
||||
endif()
|
||||
|
||||
blender_add_lib(bf_nodes_shader "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
|
||||
|
||||
if(WITH_UNITY_BUILD)
|
||||
set_target_properties(bf_nodes_shader PROPERTIES UNITY_BUILD ON)
|
||||
set_target_properties(bf_nodes_shader PROPERTIES UNITY_BUILD_BATCH_SIZE 10)
|
||||
endif()
|
|
@ -21,7 +21,7 @@
|
|||
* \ingroup nodes
|
||||
*/
|
||||
|
||||
#include <cstring>
|
||||
#include <string.h>
|
||||
|
||||
#include "DNA_light_types.h"
|
||||
#include "DNA_linestyle_types.h"
|
||||
|
@ -56,12 +56,12 @@
|
|||
|
||||
#include "node_common.h"
|
||||
#include "node_exec.h"
|
||||
#include "node_shader_util.hh"
|
||||
#include "node_shader_util.h"
|
||||
#include "node_util.h"
|
||||
|
||||
struct nTreeTags {
|
||||
typedef struct nTreeTags {
|
||||
float ssr_id, sss_id;
|
||||
};
|
||||
} nTreeTags;
|
||||
|
||||
static void ntree_shader_tag_nodes(bNodeTree *ntree, bNode *output_node, nTreeTags *tags);
|
||||
|
||||
|
@ -91,7 +91,7 @@ static void shader_get_from_context(const bContext *C,
|
|||
if (ob) {
|
||||
*r_from = &ob->id;
|
||||
if (ob->type == OB_LAMP) {
|
||||
*r_id = (ID *)ob->data;
|
||||
*r_id = ob->data;
|
||||
*r_ntree = ((Light *)ob->data)->nodetree;
|
||||
}
|
||||
else {
|
||||
|
@ -107,7 +107,7 @@ static void shader_get_from_context(const bContext *C,
|
|||
else if (snode->shaderfrom == SNODE_SHADER_LINESTYLE) {
|
||||
FreestyleLineStyle *linestyle = BKE_linestyle_active_from_view_layer(view_layer);
|
||||
if (linestyle) {
|
||||
*r_from = nullptr;
|
||||
*r_from = NULL;
|
||||
*r_id = &linestyle->id;
|
||||
*r_ntree = linestyle->nodetree;
|
||||
}
|
||||
|
@ -115,7 +115,7 @@ static void shader_get_from_context(const bContext *C,
|
|||
#endif
|
||||
else { /* SNODE_SHADER_WORLD */
|
||||
if (scene->world) {
|
||||
*r_from = nullptr;
|
||||
*r_from = NULL;
|
||||
*r_id = &scene->world->id;
|
||||
*r_ntree = scene->world->nodetree;
|
||||
}
|
||||
|
@ -189,10 +189,10 @@ static bool shader_node_tree_socket_type_valid(bNodeTreeType *UNUSED(ntreetype),
|
|||
|
||||
bNodeTreeType *ntreeType_Shader;
|
||||
|
||||
void register_node_tree_type_sh()
|
||||
void register_node_tree_type_sh(void)
|
||||
{
|
||||
bNodeTreeType *tt = ntreeType_Shader = (bNodeTreeType *)MEM_callocN(sizeof(bNodeTreeType),
|
||||
"shader node tree type");
|
||||
bNodeTreeType *tt = ntreeType_Shader = MEM_callocN(sizeof(bNodeTreeType),
|
||||
"shader node tree type");
|
||||
|
||||
tt->type = NTREE_SHADER;
|
||||
strcpy(tt->idname, "ShaderNodeTree");
|
||||
|
@ -224,7 +224,7 @@ bNode *ntreeShaderOutputNode(bNodeTree *ntree, int target)
|
|||
|
||||
/* Find output node that matches type and target. If there are
|
||||
* multiple, we prefer exact target match and active nodes. */
|
||||
bNode *output_node = nullptr;
|
||||
bNode *output_node = NULL;
|
||||
|
||||
LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
|
||||
if (!ELEM(node->type, SH_NODE_OUTPUT_MATERIAL, SH_NODE_OUTPUT_WORLD, SH_NODE_OUTPUT_LIGHT)) {
|
||||
|
@ -232,7 +232,7 @@ bNode *ntreeShaderOutputNode(bNodeTree *ntree, int target)
|
|||
}
|
||||
|
||||
if (node->custom1 == SHD_OUTPUT_ALL) {
|
||||
if (output_node == nullptr) {
|
||||
if (output_node == NULL) {
|
||||
output_node = node;
|
||||
}
|
||||
else if (output_node->custom1 == SHD_OUTPUT_ALL) {
|
||||
|
@ -242,7 +242,7 @@ bNode *ntreeShaderOutputNode(bNodeTree *ntree, int target)
|
|||
}
|
||||
}
|
||||
else if (node->custom1 == target) {
|
||||
if (output_node == nullptr) {
|
||||
if (output_node == NULL) {
|
||||
output_node = node;
|
||||
}
|
||||
else if (output_node->custom1 == SHD_OUTPUT_ALL) {
|
||||
|
@ -260,12 +260,12 @@ bNode *ntreeShaderOutputNode(bNodeTree *ntree, int target)
|
|||
/* Find socket with a specified identifier. */
|
||||
static bNodeSocket *ntree_shader_node_find_socket(ListBase *sockets, const char *identifier)
|
||||
{
|
||||
LISTBASE_FOREACH (bNodeSocket *, sock, sockets) {
|
||||
for (bNodeSocket *sock = sockets->first; sock != NULL; sock = sock->next) {
|
||||
if (STREQ(sock->identifier, identifier)) {
|
||||
return sock;
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Find input socket with a specified identifier. */
|
||||
|
@ -294,37 +294,37 @@ static bool ntree_shader_expand_socket_default(bNodeTree *localtree,
|
|||
|
||||
switch (socket->type) {
|
||||
case SOCK_VECTOR:
|
||||
value_node = nodeAddStaticNode(nullptr, localtree, SH_NODE_RGB);
|
||||
value_node = nodeAddStaticNode(NULL, localtree, SH_NODE_RGB);
|
||||
value_socket = ntree_shader_node_find_output(value_node, "Color");
|
||||
BLI_assert(value_socket != nullptr);
|
||||
src_vector = (bNodeSocketValueVector *)socket->default_value;
|
||||
dst_rgba = (bNodeSocketValueRGBA *)value_socket->default_value;
|
||||
BLI_assert(value_socket != NULL);
|
||||
src_vector = socket->default_value;
|
||||
dst_rgba = value_socket->default_value;
|
||||
copy_v3_v3(dst_rgba->value, src_vector->value);
|
||||
dst_rgba->value[3] = 1.0f; /* should never be read */
|
||||
break;
|
||||
case SOCK_RGBA:
|
||||
value_node = nodeAddStaticNode(nullptr, localtree, SH_NODE_RGB);
|
||||
value_node = nodeAddStaticNode(NULL, localtree, SH_NODE_RGB);
|
||||
value_socket = ntree_shader_node_find_output(value_node, "Color");
|
||||
BLI_assert(value_socket != nullptr);
|
||||
src_rgba = (bNodeSocketValueRGBA *)socket->default_value;
|
||||
dst_rgba = (bNodeSocketValueRGBA *)value_socket->default_value;
|
||||
BLI_assert(value_socket != NULL);
|
||||
src_rgba = socket->default_value;
|
||||
dst_rgba = value_socket->default_value;
|
||||
copy_v4_v4(dst_rgba->value, src_rgba->value);
|
||||
break;
|
||||
case SOCK_INT:
|
||||
/* HACK: Support as float. */
|
||||
value_node = nodeAddStaticNode(nullptr, localtree, SH_NODE_VALUE);
|
||||
value_node = nodeAddStaticNode(NULL, localtree, SH_NODE_VALUE);
|
||||
value_socket = ntree_shader_node_find_output(value_node, "Value");
|
||||
BLI_assert(value_socket != nullptr);
|
||||
src_int = (bNodeSocketValueInt *)socket->default_value;
|
||||
dst_float = (bNodeSocketValueFloat *)value_socket->default_value;
|
||||
BLI_assert(value_socket != NULL);
|
||||
src_int = socket->default_value;
|
||||
dst_float = value_socket->default_value;
|
||||
dst_float->value = (float)(src_int->value);
|
||||
break;
|
||||
case SOCK_FLOAT:
|
||||
value_node = nodeAddStaticNode(nullptr, localtree, SH_NODE_VALUE);
|
||||
value_node = nodeAddStaticNode(NULL, localtree, SH_NODE_VALUE);
|
||||
value_socket = ntree_shader_node_find_output(value_node, "Value");
|
||||
BLI_assert(value_socket != nullptr);
|
||||
src_float = (bNodeSocketValueFloat *)socket->default_value;
|
||||
dst_float = (bNodeSocketValueFloat *)value_socket->default_value;
|
||||
BLI_assert(value_socket != NULL);
|
||||
src_float = socket->default_value;
|
||||
dst_float = value_socket->default_value;
|
||||
dst_float->value = src_float->value;
|
||||
break;
|
||||
default:
|
||||
|
@ -337,10 +337,11 @@ static bool ntree_shader_expand_socket_default(bNodeTree *localtree,
|
|||
static void ntree_shader_unlink_hidden_value_sockets(bNode *group_node, bNodeSocket *isock)
|
||||
{
|
||||
bNodeTree *group_ntree = (bNodeTree *)group_node->id;
|
||||
bNode *node;
|
||||
bool removed_link = false;
|
||||
|
||||
LISTBASE_FOREACH (bNode *, node, &group_ntree->nodes) {
|
||||
const bool is_group = ELEM(node->type, NODE_GROUP, NODE_CUSTOM_GROUP) && (node->id != nullptr);
|
||||
for (node = group_ntree->nodes.first; node; node = node->next) {
|
||||
const bool is_group = ELEM(node->type, NODE_GROUP, NODE_CUSTOM_GROUP) && (node->id != NULL);
|
||||
|
||||
LISTBASE_FOREACH (bNodeSocket *, sock, &node->inputs) {
|
||||
if (!is_group && (sock->flag & SOCK_HIDE_VALUE) == 0) {
|
||||
|
@ -374,7 +375,7 @@ static void ntree_shader_groups_expand_inputs(bNodeTree *localtree)
|
|||
bool link_added = false;
|
||||
|
||||
LISTBASE_FOREACH (bNode *, node, &localtree->nodes) {
|
||||
const bool is_group = ELEM(node->type, NODE_GROUP, NODE_CUSTOM_GROUP) && (node->id != nullptr);
|
||||
const bool is_group = ELEM(node->type, NODE_GROUP, NODE_CUSTOM_GROUP) && (node->id != NULL);
|
||||
const bool is_group_output = node->type == NODE_GROUP_OUTPUT && (node->flag & NODE_DO_OUTPUT);
|
||||
|
||||
if (is_group) {
|
||||
|
@ -384,30 +385,25 @@ static void ntree_shader_groups_expand_inputs(bNodeTree *localtree)
|
|||
|
||||
if (is_group || is_group_output) {
|
||||
LISTBASE_FOREACH (bNodeSocket *, socket, &node->inputs) {
|
||||
if (socket->link != nullptr && !(socket->link->flag & NODE_LINK_MUTED)) {
|
||||
if (socket->link != NULL && !(socket->link->flag & NODE_LINK_MUTED)) {
|
||||
bNodeLink *link = socket->link;
|
||||
/* Fix the case where the socket is actually converting the data. (see T71374)
|
||||
* We only do the case of lossy conversion to float. */
|
||||
if ((socket->type == SOCK_FLOAT) && (link->fromsock->type != link->tosock->type)) {
|
||||
if (link->fromsock->type == SOCK_RGBA) {
|
||||
bNode *tmp = nodeAddStaticNode(nullptr, localtree, SH_NODE_RGBTOBW);
|
||||
nodeAddLink(localtree,
|
||||
link->fromnode,
|
||||
link->fromsock,
|
||||
tmp,
|
||||
(bNodeSocket *)tmp->inputs.first);
|
||||
nodeAddLink(localtree, tmp, (bNodeSocket *)tmp->outputs.first, node, socket);
|
||||
bNode *tmp = nodeAddStaticNode(NULL, localtree, SH_NODE_RGBTOBW);
|
||||
nodeAddLink(localtree, link->fromnode, link->fromsock, tmp, tmp->inputs.first);
|
||||
nodeAddLink(localtree, tmp, tmp->outputs.first, node, socket);
|
||||
}
|
||||
else if (link->fromsock->type == SOCK_VECTOR) {
|
||||
bNode *tmp = nodeAddStaticNode(nullptr, localtree, SH_NODE_VECTOR_MATH);
|
||||
bNode *tmp = nodeAddStaticNode(NULL, localtree, SH_NODE_VECTOR_MATH);
|
||||
tmp->custom1 = NODE_VECTOR_MATH_DOT_PRODUCT;
|
||||
bNodeSocket *dot_input1 = (bNodeSocket *)tmp->inputs.first;
|
||||
bNodeSocket *dot_input1 = tmp->inputs.first;
|
||||
bNodeSocket *dot_input2 = dot_input1->next;
|
||||
bNodeSocketValueVector *input2_socket_value = (bNodeSocketValueVector *)
|
||||
dot_input2->default_value;
|
||||
bNodeSocketValueVector *input2_socket_value = dot_input2->default_value;
|
||||
copy_v3_fl(input2_socket_value->value, 1.0f / 3.0f);
|
||||
nodeAddLink(localtree, link->fromnode, link->fromsock, tmp, dot_input1);
|
||||
nodeAddLink(localtree, tmp, (bNodeSocket *)tmp->outputs.last, node, socket);
|
||||
nodeAddLink(localtree, tmp, tmp->outputs.last, node, socket);
|
||||
}
|
||||
}
|
||||
continue;
|
||||
|
@ -433,15 +429,15 @@ static void ntree_shader_groups_expand_inputs(bNodeTree *localtree)
|
|||
|
||||
static void flatten_group_do(bNodeTree *ntree, bNode *gnode)
|
||||
{
|
||||
bNodeLink *link, *tlink;
|
||||
bNodeLink *link, *linkn, *tlink;
|
||||
bNode *node, *nextnode;
|
||||
bNodeTree *ngroup;
|
||||
LinkNode *group_interface_nodes = nullptr;
|
||||
LinkNode *group_interface_nodes = NULL;
|
||||
|
||||
ngroup = (bNodeTree *)gnode->id;
|
||||
|
||||
/* Add the nodes into the ntree */
|
||||
for (node = (bNode *)ngroup->nodes.first; node; node = nextnode) {
|
||||
for (node = ngroup->nodes.first; node; node = nextnode) {
|
||||
nextnode = node->next;
|
||||
/* Remove interface nodes.
|
||||
* This also removes remaining links to and from interface nodes.
|
||||
|
@ -458,25 +454,25 @@ static void flatten_group_do(bNodeTree *ntree, bNode *gnode)
|
|||
}
|
||||
|
||||
/* Save first and last link to iterate over flattened group links. */
|
||||
bNodeLink *glinks_first = (bNodeLink *)ntree->links.last;
|
||||
bNodeLink *glinks_first = ntree->links.last;
|
||||
|
||||
/* Add internal links to the ntree */
|
||||
LISTBASE_FOREACH (bNodeLink *, link, &ngroup->links) {
|
||||
for (link = ngroup->links.first; link; link = linkn) {
|
||||
linkn = link->next;
|
||||
BLI_remlink(&ngroup->links, link);
|
||||
BLI_addtail(&ntree->links, link);
|
||||
}
|
||||
|
||||
bNodeLink *glinks_last = (bNodeLink *)ntree->links.last;
|
||||
bNodeLink *glinks_last = ntree->links.last;
|
||||
|
||||
/* restore external links to and from the gnode */
|
||||
if (glinks_first != nullptr) {
|
||||
if (glinks_first != NULL) {
|
||||
/* input links */
|
||||
for (link = glinks_first->next; link != glinks_last->next; link = link->next) {
|
||||
if (link->fromnode->type == NODE_GROUP_INPUT) {
|
||||
const char *identifier = link->fromsock->identifier;
|
||||
/* find external links to this input */
|
||||
for (tlink = (bNodeLink *)ntree->links.first; tlink != glinks_first->next;
|
||||
tlink = tlink->next) {
|
||||
for (tlink = ntree->links.first; tlink != glinks_first->next; tlink = tlink->next) {
|
||||
if (tlink->tonode == gnode && STREQ(tlink->tosock->identifier, identifier)) {
|
||||
nodeAddLink(ntree, tlink->fromnode, tlink->fromsock, link->tonode, link->tosock);
|
||||
}
|
||||
|
@ -484,10 +480,9 @@ static void flatten_group_do(bNodeTree *ntree, bNode *gnode)
|
|||
}
|
||||
}
|
||||
/* Also iterate over the new links to cover passthrough links. */
|
||||
glinks_last = (bNodeLink *)ntree->links.last;
|
||||
glinks_last = ntree->links.last;
|
||||
/* output links */
|
||||
for (tlink = (bNodeLink *)ntree->links.first; tlink != glinks_first->next;
|
||||
tlink = tlink->next) {
|
||||
for (tlink = ntree->links.first; tlink != glinks_first->next; tlink = tlink->next) {
|
||||
if (tlink->fromnode == gnode) {
|
||||
const char *identifier = tlink->fromsock->identifier;
|
||||
/* find internal links to this output */
|
||||
|
@ -504,7 +499,7 @@ static void flatten_group_do(bNodeTree *ntree, bNode *gnode)
|
|||
}
|
||||
|
||||
while (group_interface_nodes) {
|
||||
node = (bNode *)BLI_linklist_pop(&group_interface_nodes);
|
||||
node = BLI_linklist_pop(&group_interface_nodes);
|
||||
ntreeFreeLocalNode(ntree, node);
|
||||
}
|
||||
|
||||
|
@ -516,8 +511,8 @@ static void ntree_shader_groups_flatten(bNodeTree *localtree)
|
|||
{
|
||||
/* This is effectively recursive as the flattened groups will add
|
||||
* nodes at the end of the list, which will also get evaluated. */
|
||||
for (bNode *node = (bNode *)localtree->nodes.first, *node_next; node; node = node_next) {
|
||||
if (ELEM(node->type, NODE_GROUP, NODE_CUSTOM_GROUP) && node->id != nullptr) {
|
||||
for (bNode *node = localtree->nodes.first, *node_next; node; node = node_next) {
|
||||
if (ELEM(node->type, NODE_GROUP, NODE_CUSTOM_GROUP) && node->id != NULL) {
|
||||
flatten_group_do(localtree, node);
|
||||
/* Continue even on new flattened nodes. */
|
||||
node_next = node->next;
|
||||
|
@ -548,7 +543,7 @@ static bool ntree_shader_has_displacement(bNodeTree *ntree,
|
|||
bNodeSocket **r_socket,
|
||||
bNodeLink **r_link)
|
||||
{
|
||||
if (output_node == nullptr) {
|
||||
if (output_node == NULL) {
|
||||
/* We can't have displacement without output node, apparently. */
|
||||
return false;
|
||||
}
|
||||
|
@ -556,12 +551,12 @@ static bool ntree_shader_has_displacement(bNodeTree *ntree,
|
|||
ntreeUpdateTree(G.main, ntree);
|
||||
bNodeSocket *displacement = ntree_shader_node_find_input(output_node, "Displacement");
|
||||
|
||||
if (displacement == nullptr) {
|
||||
if (displacement == NULL) {
|
||||
/* Non-cycles node is used as an output. */
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((displacement->link != nullptr) && !(displacement->link->flag & NODE_LINK_MUTED)) {
|
||||
if ((displacement->link != NULL) && !(displacement->link->flag & NODE_LINK_MUTED)) {
|
||||
*r_node = displacement->link->fromnode;
|
||||
*r_socket = displacement->link->fromsock;
|
||||
*r_link = displacement->link;
|
||||
|
@ -579,7 +574,7 @@ static void ntree_shader_relink_node_normal(bNodeTree *ntree,
|
|||
* matching?
|
||||
*/
|
||||
LISTBASE_FOREACH (bNodeSocket *, sock, &node->inputs) {
|
||||
if (STREQ(sock->identifier, "Normal") && sock->link == nullptr) {
|
||||
if (STREQ(sock->identifier, "Normal") && sock->link == NULL) {
|
||||
/* It's a normal input and nothing is connected to it. */
|
||||
nodeAddLink(ntree, node_from, socket_from, node, sock);
|
||||
}
|
||||
|
@ -599,7 +594,7 @@ static void ntree_shader_link_builtin_normal(bNodeTree *ntree,
|
|||
bNode *node_from,
|
||||
bNodeSocket *socket_from)
|
||||
{
|
||||
LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
|
||||
for (bNode *node = ntree->nodes.first; node != NULL; node = node->next) {
|
||||
if (node == node_from) {
|
||||
/* Don't connect node itself! */
|
||||
continue;
|
||||
|
@ -624,7 +619,7 @@ static void ntree_shader_bypass_bump_link(bNodeTree *ntree, bNode *bump_node, bN
|
|||
fromnode = bump_normal_input->link->fromnode;
|
||||
}
|
||||
else {
|
||||
fromnode = nodeAddStaticNode(nullptr, ntree, SH_NODE_NEW_GEOMETRY);
|
||||
fromnode = nodeAddStaticNode(NULL, ntree, SH_NODE_NEW_GEOMETRY);
|
||||
fromsock = ntree_shader_node_find_output(fromnode, "Normal");
|
||||
}
|
||||
/* Bypass the bump node by creating a link between the previous and next node. */
|
||||
|
@ -676,7 +671,7 @@ static bNode *ntree_shader_copy_branch(bNodeTree *ntree,
|
|||
int node_count = 1;
|
||||
nodeChainIterBackwards(ntree, start_node, ntree_branch_count_and_tag_nodes, &node_count, 1);
|
||||
/* Make a full copy of the branch */
|
||||
bNode **nodes_copy = (bNode **)MEM_mallocN(sizeof(bNode *) * node_count, __func__);
|
||||
bNode **nodes_copy = MEM_mallocN(sizeof(bNode *) * node_count, __func__);
|
||||
LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
|
||||
if (node->tmp_flag >= 0) {
|
||||
int id = node->tmp_flag;
|
||||
|
@ -685,10 +680,10 @@ static bNode *ntree_shader_copy_branch(bNodeTree *ntree,
|
|||
nodes_copy[id]->tmp_flag = -2; /* Copy */
|
||||
/* Make sure to clear all sockets links as they are invalid. */
|
||||
LISTBASE_FOREACH (bNodeSocket *, sock, &nodes_copy[id]->inputs) {
|
||||
sock->link = nullptr;
|
||||
sock->link = NULL;
|
||||
}
|
||||
LISTBASE_FOREACH (bNodeSocket *, sock, &nodes_copy[id]->outputs) {
|
||||
sock->link = nullptr;
|
||||
sock->link = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -721,7 +716,7 @@ static void ntree_shader_copy_branch_displacement(bNodeTree *ntree,
|
|||
/* Replace displacement socket/node/link. */
|
||||
bNode *tonode = displacement_link->tonode;
|
||||
bNodeSocket *tosock = displacement_link->tosock;
|
||||
displacement_node = ntree_shader_copy_branch(ntree, displacement_node, nullptr, 0);
|
||||
displacement_node = ntree_shader_copy_branch(ntree, displacement_node, NULL, 0);
|
||||
displacement_socket = ntree_shader_node_find_output(displacement_node,
|
||||
displacement_socket->identifier);
|
||||
nodeRemLink(ntree, displacement_link);
|
||||
|
@ -761,10 +756,10 @@ static void ntree_shader_relink_displacement(bNodeTree *ntree, bNode *output_nod
|
|||
nodeRemLink(ntree, displacement_link);
|
||||
|
||||
/* Convert displacement vector to bump height. */
|
||||
bNode *dot_node = nodeAddStaticNode(nullptr, ntree, SH_NODE_VECTOR_MATH);
|
||||
bNode *geo_node = nodeAddStaticNode(nullptr, ntree, SH_NODE_NEW_GEOMETRY);
|
||||
bNode *dot_node = nodeAddStaticNode(NULL, ntree, SH_NODE_VECTOR_MATH);
|
||||
bNode *geo_node = nodeAddStaticNode(NULL, ntree, SH_NODE_NEW_GEOMETRY);
|
||||
bNodeSocket *normal_socket = ntree_shader_node_find_output(geo_node, "Normal");
|
||||
bNodeSocket *dot_input1 = (bNodeSocket *)dot_node->inputs.first;
|
||||
bNodeSocket *dot_input1 = dot_node->inputs.first;
|
||||
bNodeSocket *dot_input2 = dot_input1->next;
|
||||
dot_node->custom1 = NODE_VECTOR_MATH_DOT_PRODUCT;
|
||||
|
||||
|
@ -776,11 +771,11 @@ static void ntree_shader_relink_displacement(bNodeTree *ntree, bNode *output_nod
|
|||
/* We can't connect displacement to normal directly, use bump node for that
|
||||
* and hope that it gives good enough approximation.
|
||||
*/
|
||||
bNode *bump_node = nodeAddStaticNode(nullptr, ntree, SH_NODE_BUMP);
|
||||
bNode *bump_node = nodeAddStaticNode(NULL, ntree, SH_NODE_BUMP);
|
||||
bNodeSocket *bump_input_socket = ntree_shader_node_find_input(bump_node, "Height");
|
||||
bNodeSocket *bump_output_socket = ntree_shader_node_find_output(bump_node, "Normal");
|
||||
BLI_assert(bump_input_socket != nullptr);
|
||||
BLI_assert(bump_output_socket != nullptr);
|
||||
BLI_assert(bump_input_socket != NULL);
|
||||
BLI_assert(bump_output_socket != NULL);
|
||||
/* Connect bump node to where displacement output was originally
|
||||
* connected to.
|
||||
*/
|
||||
|
@ -872,7 +867,7 @@ static bool ntree_tag_bsdf_cb(bNode *fromnode, bNode *UNUSED(tonode), void *user
|
|||
*/
|
||||
void ntree_shader_tag_nodes(bNodeTree *ntree, bNode *output_node, nTreeTags *tags)
|
||||
{
|
||||
if (output_node == nullptr) {
|
||||
if (output_node == NULL) {
|
||||
return;
|
||||
}
|
||||
/* Make sure sockets links pointers are correct. */
|
||||
|
@ -894,7 +889,7 @@ void ntreeGPUMaterialNodes(bNodeTree *localtree,
|
|||
|
||||
ntree_shader_groups_flatten(localtree);
|
||||
|
||||
if (output == nullptr) {
|
||||
if (output == NULL) {
|
||||
/* Search again, now including flattened nodes. */
|
||||
output = ntreeShaderOutputNode(localtree, SHD_OUTPUT_EEVEE);
|
||||
}
|
||||
|
@ -910,13 +905,19 @@ void ntreeGPUMaterialNodes(bNodeTree *localtree,
|
|||
LISTBASE_FOREACH (bNode *, node, &localtree->nodes) {
|
||||
if (node->type == SH_NODE_OUTPUT_AOV) {
|
||||
nodeChainIterBackwards(localtree, node, ntree_shader_bump_branches, localtree, 0);
|
||||
nTreeTags tags = {1.0, 1.0};
|
||||
nTreeTags tags = {
|
||||
.ssr_id = 1.0,
|
||||
.sss_id = 1.0,
|
||||
};
|
||||
ntree_shader_tag_nodes(localtree, node, &tags);
|
||||
}
|
||||
}
|
||||
|
||||
/* TODO(fclem): consider moving this to the gpu shader tree evaluation. */
|
||||
nTreeTags tags = {1.0, 1.0};
|
||||
nTreeTags tags = {
|
||||
.ssr_id = 1.0,
|
||||
.sss_id = 1.0,
|
||||
};
|
||||
ntree_shader_tag_nodes(localtree, output, &tags);
|
||||
|
||||
exec = ntreeShaderBeginExecTree(localtree);
|
||||
|
@ -932,15 +933,15 @@ void ntreeGPUMaterialNodes(bNodeTree *localtree,
|
|||
*has_surface_output = false;
|
||||
*has_volume_output = false;
|
||||
|
||||
if (output != nullptr) {
|
||||
if (output != NULL) {
|
||||
bNodeSocket *surface_sock = ntree_shader_node_find_input(output, "Surface");
|
||||
bNodeSocket *volume_sock = ntree_shader_node_find_input(output, "Volume");
|
||||
|
||||
if (surface_sock != nullptr) {
|
||||
if (surface_sock != NULL) {
|
||||
*has_surface_output = (nodeCountSocketLinks(localtree, surface_sock) > 0);
|
||||
}
|
||||
|
||||
if (volume_sock != nullptr) {
|
||||
if (volume_sock != NULL) {
|
||||
*has_volume_output = (nodeCountSocketLinks(localtree, volume_sock) > 0);
|
||||
}
|
||||
}
|
||||
|
@ -950,17 +951,19 @@ bNodeTreeExec *ntreeShaderBeginExecTree_internal(bNodeExecContext *context,
|
|||
bNodeTree *ntree,
|
||||
bNodeInstanceKey parent_key)
|
||||
{
|
||||
bNodeTreeExec *exec;
|
||||
bNode *node;
|
||||
|
||||
/* ensures only a single output node is enabled */
|
||||
ntreeSetOutput(ntree);
|
||||
|
||||
/* common base initialization */
|
||||
bNodeTreeExec *exec = ntree_exec_begin(context, ntree, parent_key);
|
||||
exec = ntree_exec_begin(context, ntree, parent_key);
|
||||
|
||||
/* allocate the thread stack listbase array */
|
||||
exec->threadstack = (ListBase *)MEM_callocN(BLENDER_MAX_THREADS * sizeof(ListBase),
|
||||
"thread stack array");
|
||||
exec->threadstack = MEM_callocN(BLENDER_MAX_THREADS * sizeof(ListBase), "thread stack array");
|
||||
|
||||
LISTBASE_FOREACH (bNode *, node, &exec->nodetree->nodes) {
|
||||
for (node = exec->nodetree->nodes.first; node; node = node->next) {
|
||||
node->need_exec = 1;
|
||||
}
|
||||
|
||||
|
@ -993,9 +996,12 @@ bNodeTreeExec *ntreeShaderBeginExecTree(bNodeTree *ntree)
|
|||
|
||||
void ntreeShaderEndExecTree_internal(bNodeTreeExec *exec)
|
||||
{
|
||||
bNodeThreadStack *nts;
|
||||
int a;
|
||||
|
||||
if (exec->threadstack) {
|
||||
for (int a = 0; a < BLENDER_MAX_THREADS; a++) {
|
||||
LISTBASE_FOREACH (bNodeThreadStack *, nts, &exec->threadstack[a]) {
|
||||
for (a = 0; a < BLENDER_MAX_THREADS; a++) {
|
||||
for (nts = exec->threadstack[a].first; nts; nts = nts->next) {
|
||||
if (nts->stack) {
|
||||
MEM_freeN(nts->stack);
|
||||
}
|
||||
|
@ -1004,7 +1010,7 @@ void ntreeShaderEndExecTree_internal(bNodeTreeExec *exec)
|
|||
}
|
||||
|
||||
MEM_freeN(exec->threadstack);
|
||||
exec->threadstack = nullptr;
|
||||
exec->threadstack = NULL;
|
||||
}
|
||||
|
||||
ntree_exec_end(exec);
|
||||
|
@ -1018,6 +1024,6 @@ void ntreeShaderEndExecTree(bNodeTreeExec *exec)
|
|||
ntreeShaderEndExecTree_internal(exec);
|
||||
|
||||
/* XXX clear nodetree backpointer to exec data, same problem as noted in ntreeBeginExecTree */
|
||||
ntree->execdata = nullptr;
|
||||
ntree->execdata = NULL;
|
||||
}
|
||||
}
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
#include "DNA_node_types.h"
|
||||
|
||||
#include "node_shader_util.hh"
|
||||
#include "node_shader_util.h"
|
||||
|
||||
#include "node_exec.h"
|
||||
|
||||
|
|
|
@ -39,8 +39,8 @@
|
|||
#include "DNA_scene_types.h"
|
||||
#include "DNA_texture_types.h"
|
||||
|
||||
#include "BLI_color.hh"
|
||||
#include "BLI_float3.hh"
|
||||
#include "BLI_blenlib.h"
|
||||
#include "BLI_math.h"
|
||||
#include "BLI_math_base_safe.h"
|
||||
#include "BLI_rand.h"
|
||||
#include "BLI_threads.h"
|
||||
|
@ -55,9 +55,7 @@
|
|||
#include "BKE_node.h"
|
||||
#include "BKE_texture.h"
|
||||
|
||||
#include "NOD_multi_function.hh"
|
||||
#include "NOD_shader.h"
|
||||
#include "NOD_socket_declarations.hh"
|
||||
#include "node_util.h"
|
||||
|
||||
#include "BLT_translation.h"
|
||||
|
@ -67,12 +65,22 @@
|
|||
#include "RE_pipeline.h"
|
||||
#include "RE_texture.h"
|
||||
|
||||
#include "FN_multi_function_builder.hh"
|
||||
|
||||
#include "GPU_material.h"
|
||||
#include "GPU_texture.h"
|
||||
#include "GPU_uniform_buffer.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
# include "FN_multi_function_builder.hh"
|
||||
|
||||
# include "NOD_multi_function.hh"
|
||||
# include "NOD_socket_declarations.hh"
|
||||
|
||||
# include "BLI_color.hh"
|
||||
# include "BLI_float3.hh"
|
||||
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
bool sh_node_poll_default(struct bNodeType *ntype,
|
||||
struct bNodeTree *ntree,
|
||||
const char **r_disabled_hint);
|
||||
|
@ -112,3 +120,7 @@ void ntreeExecGPUNodes(struct bNodeTreeExec *exec,
|
|||
struct GPUMaterial *mat,
|
||||
struct bNode *output_node);
|
||||
void get_XYZ_to_RGB_for_gpu(XYZ_to_RGB *data);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
|
@ -17,18 +17,20 @@
|
|||
* All rights reserved.
|
||||
*/
|
||||
|
||||
#include "node_shader_util.hh"
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
namespace blender::nodes::node_shader_add_shader_cc {
|
||||
static bNodeSocketTemplate sh_node_add_shader_in[] = {
|
||||
{SOCK_SHADER, N_("Shader")},
|
||||
{SOCK_SHADER, N_("Shader")},
|
||||
{-1, ""},
|
||||
};
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Shader>(N_("Shader"));
|
||||
b.add_input<decl::Shader>(N_("Shader"), "Shader_001");
|
||||
b.add_output<decl::Shader>(N_("Shader"));
|
||||
}
|
||||
static bNodeSocketTemplate sh_node_add_shader_out[] = {
|
||||
{SOCK_SHADER, N_("Shader")},
|
||||
{-1, ""},
|
||||
};
|
||||
|
||||
static int node_shader_gpu_add_shader(GPUMaterial *mat,
|
||||
bNode *node,
|
||||
|
@ -39,20 +41,16 @@ static int node_shader_gpu_add_shader(GPUMaterial *mat,
|
|||
return GPU_stack_link(mat, node, "node_add_shader", in, out);
|
||||
}
|
||||
|
||||
} // namespace blender::nodes::node_shader_add_shader_cc
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_add_shader()
|
||||
void register_node_type_sh_add_shader(void)
|
||||
{
|
||||
namespace file_ns = blender::nodes::node_shader_add_shader_cc;
|
||||
|
||||
static bNodeType ntype;
|
||||
|
||||
sh_node_type_base(&ntype, SH_NODE_ADD_SHADER, "Add Shader", NODE_CLASS_SHADER, 0);
|
||||
ntype.declare = file_ns::node_declare;
|
||||
node_type_init(&ntype, nullptr);
|
||||
node_type_storage(&ntype, "", nullptr, nullptr);
|
||||
node_type_gpu(&ntype, file_ns::node_shader_gpu_add_shader);
|
||||
node_type_socket_templates(&ntype, sh_node_add_shader_in, sh_node_add_shader_out);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_add_shader);
|
||||
|
||||
nodeRegisterType(&ntype);
|
||||
}
|
|
@ -17,12 +17,10 @@
|
|||
* All rights reserved.
|
||||
*/
|
||||
|
||||
#include "node_shader_util.hh"
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
namespace blender::nodes::node_shader_ambient_occlusion_cc {
|
||||
|
||||
static bNodeSocketTemplate sh_node_ambient_occlusion_in[] = {
|
||||
{SOCK_RGBA, N_("Color"), 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f},
|
||||
{SOCK_FLOAT, N_("Distance"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000.0f},
|
||||
|
@ -66,21 +64,16 @@ static void node_shader_init_ambient_occlusion(bNodeTree *UNUSED(ntree), bNode *
|
|||
node->custom2 = 0;
|
||||
}
|
||||
|
||||
} // namespace blender::nodes::node_shader_ambient_occlusion_cc
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_ambient_occlusion()
|
||||
void register_node_type_sh_ambient_occlusion(void)
|
||||
{
|
||||
namespace file_ns = blender::nodes::node_shader_ambient_occlusion_cc;
|
||||
|
||||
static bNodeType ntype;
|
||||
|
||||
sh_node_type_base(&ntype, SH_NODE_AMBIENT_OCCLUSION, "Ambient Occlusion", NODE_CLASS_INPUT, 0);
|
||||
node_type_socket_templates(
|
||||
&ntype, file_ns::sh_node_ambient_occlusion_in, file_ns::sh_node_ambient_occlusion_out);
|
||||
node_type_init(&ntype, file_ns::node_shader_init_ambient_occlusion);
|
||||
node_type_storage(&ntype, "", nullptr, nullptr);
|
||||
node_type_gpu(&ntype, file_ns::node_shader_gpu_ambient_occlusion);
|
||||
node_type_socket_templates(&ntype, sh_node_ambient_occlusion_in, sh_node_ambient_occlusion_out);
|
||||
node_type_init(&ntype, node_shader_init_ambient_occlusion);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_ambient_occlusion);
|
||||
|
||||
nodeRegisterType(&ntype);
|
||||
}
|
|
@ -17,12 +17,10 @@
|
|||
* All rights reserved.
|
||||
*/
|
||||
|
||||
#include "node_shader_util.hh"
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
namespace blender::nodes::node_shader_attribute_cc {
|
||||
|
||||
static bNodeSocketTemplate sh_node_attribute_out[] = {
|
||||
{SOCK_RGBA, N_("Color")},
|
||||
{SOCK_VECTOR, N_("Vector"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
|
@ -33,8 +31,7 @@ static bNodeSocketTemplate sh_node_attribute_out[] = {
|
|||
|
||||
static void node_shader_init_attribute(bNodeTree *UNUSED(ntree), bNode *node)
|
||||
{
|
||||
NodeShaderAttribute *attr = (NodeShaderAttribute *)MEM_callocN(sizeof(NodeShaderAttribute),
|
||||
"NodeShaderAttribute");
|
||||
NodeShaderAttribute *attr = MEM_callocN(sizeof(NodeShaderAttribute), "NodeShaderAttribute");
|
||||
node->storage = attr;
|
||||
}
|
||||
|
||||
|
@ -44,7 +41,7 @@ static int node_shader_gpu_attribute(GPUMaterial *mat,
|
|||
GPUNodeStack *in,
|
||||
GPUNodeStack *out)
|
||||
{
|
||||
NodeShaderAttribute *attr = (NodeShaderAttribute *)node->storage;
|
||||
NodeShaderAttribute *attr = node->storage;
|
||||
bool is_varying = attr->type == SHD_ATTRIBUTE_GEOMETRY;
|
||||
|
||||
if (GPU_material_is_volume_shader(mat) && is_varying) {
|
||||
|
@ -84,21 +81,17 @@ static int node_shader_gpu_attribute(GPUMaterial *mat,
|
|||
return 1;
|
||||
}
|
||||
|
||||
} // namespace blender::nodes::node_shader_attribute_cc
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_attribute()
|
||||
void register_node_type_sh_attribute(void)
|
||||
{
|
||||
namespace file_ns = blender::nodes::node_shader_attribute_cc;
|
||||
|
||||
static bNodeType ntype;
|
||||
|
||||
sh_node_type_base(&ntype, SH_NODE_ATTRIBUTE, "Attribute", NODE_CLASS_INPUT, 0);
|
||||
node_type_socket_templates(&ntype, nullptr, file_ns::sh_node_attribute_out);
|
||||
node_type_init(&ntype, file_ns::node_shader_init_attribute);
|
||||
node_type_socket_templates(&ntype, NULL, sh_node_attribute_out);
|
||||
node_type_init(&ntype, node_shader_init_attribute);
|
||||
node_type_storage(
|
||||
&ntype, "NodeShaderAttribute", node_free_standard_storage, node_copy_standard_storage);
|
||||
node_type_gpu(&ntype, file_ns::node_shader_gpu_attribute);
|
||||
node_type_gpu(&ntype, node_shader_gpu_attribute);
|
||||
|
||||
nodeRegisterType(&ntype);
|
||||
}
|
|
@ -17,12 +17,10 @@
|
|||
* All rights reserved.
|
||||
*/
|
||||
|
||||
#include "node_shader_util.hh"
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
namespace blender::nodes::node_shader_background_cc {
|
||||
|
||||
static bNodeSocketTemplate sh_node_background_in[] = {
|
||||
{SOCK_RGBA, N_("Color"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
|
||||
{SOCK_FLOAT, N_("Strength"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000000.0f},
|
||||
|
@ -43,21 +41,16 @@ static int node_shader_gpu_background(GPUMaterial *mat,
|
|||
return GPU_stack_link(mat, node, "node_background", in, out);
|
||||
}
|
||||
|
||||
} // namespace blender::nodes::node_shader_background_cc
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_background()
|
||||
void register_node_type_sh_background(void)
|
||||
{
|
||||
namespace file_ns = blender::nodes::node_shader_background_cc;
|
||||
|
||||
static bNodeType ntype;
|
||||
|
||||
sh_node_type_base(&ntype, SH_NODE_BACKGROUND, "Background", NODE_CLASS_SHADER, 0);
|
||||
node_type_socket_templates(
|
||||
&ntype, file_ns::sh_node_background_in, file_ns::sh_node_background_out);
|
||||
node_type_init(&ntype, nullptr);
|
||||
node_type_storage(&ntype, "", nullptr, nullptr);
|
||||
node_type_gpu(&ntype, file_ns::node_shader_gpu_background);
|
||||
node_type_socket_templates(&ntype, sh_node_background_in, sh_node_background_out);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_background);
|
||||
|
||||
nodeRegisterType(&ntype);
|
||||
}
|
|
@ -17,12 +17,10 @@
|
|||
* All rights reserved.
|
||||
*/
|
||||
|
||||
#include "node_shader_util.hh"
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
namespace blender::nodes::node_shader_bevel_cc {
|
||||
|
||||
static bNodeSocketTemplate sh_node_bevel_in[] = {
|
||||
{SOCK_FLOAT, N_("Radius"), 0.05f, 0.0f, 0.0f, 0.0f, 0.0f, 1000.0f},
|
||||
{SOCK_VECTOR, N_("Normal"), 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE},
|
||||
|
@ -56,20 +54,16 @@ static int gpu_shader_bevel(GPUMaterial *mat,
|
|||
return GPU_stack_link(mat, node, "node_bevel", in, out);
|
||||
}
|
||||
|
||||
} // namespace blender::nodes::node_shader_bevel_cc
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_bevel()
|
||||
void register_node_type_sh_bevel(void)
|
||||
{
|
||||
namespace file_ns = blender::nodes::node_shader_bevel_cc;
|
||||
|
||||
static bNodeType ntype;
|
||||
|
||||
sh_node_type_base(&ntype, SH_NODE_BEVEL, "Bevel", NODE_CLASS_INPUT, 0);
|
||||
node_type_socket_templates(&ntype, file_ns::sh_node_bevel_in, file_ns::sh_node_bevel_out);
|
||||
node_type_init(&ntype, file_ns::node_shader_init_bevel);
|
||||
node_type_storage(&ntype, "", nullptr, nullptr);
|
||||
node_type_gpu(&ntype, file_ns::gpu_shader_bevel);
|
||||
node_type_socket_templates(&ntype, sh_node_bevel_in, sh_node_bevel_out);
|
||||
node_type_init(&ntype, node_shader_init_bevel);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_gpu(&ntype, gpu_shader_bevel);
|
||||
|
||||
nodeRegisterType(&ntype);
|
||||
}
|
|
@ -17,12 +17,9 @@
|
|||
* All rights reserved.
|
||||
*/
|
||||
|
||||
#include "node_shader_util.hh"
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** Blackbody ******************** */
|
||||
|
||||
namespace blender::nodes::node_shader_blackbody_cc {
|
||||
|
||||
static bNodeSocketTemplate sh_node_blackbody_in[] = {
|
||||
{SOCK_FLOAT, N_("Temperature"), 1500.0f, 0.0f, 0.0f, 0.0f, 800.0f, 12000.0f},
|
||||
{-1, ""},
|
||||
|
@ -40,7 +37,7 @@ static int node_shader_gpu_blackbody(GPUMaterial *mat,
|
|||
GPUNodeStack *out)
|
||||
{
|
||||
const int size = CM_TABLE + 1;
|
||||
float *data = (float *)MEM_mallocN(sizeof(float) * size * 4, "blackbody texture");
|
||||
float *data = MEM_mallocN(sizeof(float) * size * 4, "blackbody texture");
|
||||
|
||||
blackbody_temperature_to_rgb_table(data, size, 965.0f, 12000.0f);
|
||||
|
||||
|
@ -50,22 +47,17 @@ static int node_shader_gpu_blackbody(GPUMaterial *mat,
|
|||
return GPU_stack_link(mat, node, "node_blackbody", in, out, ramp_texture, GPU_constant(&layer));
|
||||
}
|
||||
|
||||
} // namespace blender::nodes::node_shader_blackbody_cc
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_blackbody()
|
||||
void register_node_type_sh_blackbody(void)
|
||||
{
|
||||
namespace file_ns = blender::nodes::node_shader_blackbody_cc;
|
||||
|
||||
static bNodeType ntype;
|
||||
|
||||
sh_node_type_base(&ntype, SH_NODE_BLACKBODY, "Blackbody", NODE_CLASS_CONVERTER, 0);
|
||||
node_type_size_preset(&ntype, NODE_SIZE_MIDDLE);
|
||||
node_type_socket_templates(
|
||||
&ntype, file_ns::sh_node_blackbody_in, file_ns::sh_node_blackbody_out);
|
||||
node_type_init(&ntype, nullptr);
|
||||
node_type_storage(&ntype, "", nullptr, nullptr);
|
||||
node_type_gpu(&ntype, file_ns::node_shader_gpu_blackbody);
|
||||
node_type_socket_templates(&ntype, sh_node_blackbody_in, sh_node_blackbody_out);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_blackbody);
|
||||
|
||||
nodeRegisterType(&ntype);
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue