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:
Jacques Lucke 2021-12-07 13:26:39 +01:00
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
190 changed files with 1525 additions and 2145 deletions

View File

@ -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();

View File

@ -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)

View File

@ -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);

View File

@ -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
* \{ */

View File

@ -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");

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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. */

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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()

View File

@ -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;
}
}

View File

@ -23,7 +23,7 @@
#include "DNA_node_types.h"
#include "node_shader_util.hh"
#include "node_shader_util.h"
#include "node_exec.h"

View File

@ -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

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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