Blender V5.0
shader_nodes.cpp File Reference
#include "scene/shader_nodes.h"
#include "kernel/svm/types.h"
#include "kernel/types.h"
#include "scene/colorspace.h"
#include "scene/constant_fold.h"
#include "scene/film.h"
#include "scene/image.h"
#include "scene/image_sky.h"
#include "scene/integrator.h"
#include "scene/light.h"
#include "scene/mesh.h"
#include "scene/osl.h"
#include "scene/scene.h"
#include "scene/svm.h"
#include "sky_hosek.h"
#include "sky_nishita.h"
#include "util/color.h"
#include "util/log.h"
#include "util/math_base.h"
#include "util/string.h"
#include "util/transform.h"
#include "kernel/svm/color_util.h"
#include "kernel/svm/mapping_util.h"
#include "kernel/svm/math_util.h"
#include "kernel/svm/ramp_util.h"

Go to the source code of this file.

Classes

struct  SunSky

Macros

#define TEXTURE_MAPPING_DEFINE(TextureNode)

Functions

 NODE_DEFINE (ImageTextureNode)
 NODE_DEFINE (EnvironmentTextureNode)
static float2 sky_spherical_coordinates (const float3 dir)
static float sky_perez_function (const float lam[6], float theta, const float gamma)
static void sky_texture_precompute_preetham (SunSky *sunsky, const float3 dir, const float turbidity)
static void sky_texture_precompute_hosek (SunSky *sunsky, const float3 dir, float turbidity, const float ground_albedo)
static void sky_texture_precompute_nishita (SunSky *sunsky, bool multiple_scattering, bool sun_disc, const float sun_size, const float sun_intensity, const float sun_elevation, const float sun_rotation, const float altitude, const float air_density, const float aerosol_density, const float ozone_density)
 NODE_DEFINE (SkyTextureNode)
 NODE_DEFINE (GradientTextureNode)
 NODE_DEFINE (NoiseTextureNode)
 NODE_DEFINE (GaborTextureNode)
 NODE_DEFINE (VoronoiTextureNode)
 NODE_DEFINE (IESLightNode)
 NODE_DEFINE (WhiteNoiseTextureNode)
 NODE_DEFINE (WaveTextureNode)
 NODE_DEFINE (MagicTextureNode)
 NODE_DEFINE (CheckerTextureNode)
 NODE_DEFINE (BrickTextureNode)
 NODE_DEFINE (NormalNode)
 NODE_DEFINE (MappingNode)
 NODE_DEFINE (RGBToBWNode)
 NODE_DEFINE (MetallicBsdfNode)
 NODE_DEFINE (GlossyBsdfNode)
 NODE_DEFINE (GlassBsdfNode)
 NODE_DEFINE (RefractionBsdfNode)
 NODE_DEFINE (ToonBsdfNode)
 NODE_DEFINE (SheenBsdfNode)
 NODE_DEFINE (DiffuseBsdfNode)
 NODE_DEFINE (PrincipledBsdfNode)
 NODE_DEFINE (TranslucentBsdfNode)
 NODE_DEFINE (TransparentBsdfNode)
 NODE_DEFINE (RayPortalBsdfNode)
 NODE_DEFINE (SubsurfaceScatteringNode)
 NODE_DEFINE (EmissionNode)
 NODE_DEFINE (BackgroundNode)
 NODE_DEFINE (HoldoutNode)
 NODE_DEFINE (AmbientOcclusionNode)
 NODE_DEFINE (AbsorptionVolumeNode)
 NODE_DEFINE (ScatterVolumeNode)
 NODE_DEFINE (VolumeCoefficientsNode)
 NODE_DEFINE (PrincipledVolumeNode)
 NODE_DEFINE (PrincipledHairBsdfNode)
 NODE_DEFINE (HairBsdfNode)
 NODE_DEFINE (GeometryNode)
 NODE_DEFINE (TextureCoordinateNode)
 NODE_DEFINE (UVMapNode)
 NODE_DEFINE (LightPathNode)
 NODE_DEFINE (LightFalloffNode)
 NODE_DEFINE (ObjectInfoNode)
 NODE_DEFINE (ParticleInfoNode)
 NODE_DEFINE (HairInfoNode)
 NODE_DEFINE (PointInfoNode)
 NODE_DEFINE (VolumeInfoNode)
 NODE_DEFINE (VertexColorNode)
 NODE_DEFINE (ValueNode)
 NODE_DEFINE (ColorNode)
 NODE_DEFINE (AddClosureNode)
 NODE_DEFINE (MixClosureNode)
 NODE_DEFINE (MixClosureWeightNode)
 NODE_DEFINE (InvertNode)
 NODE_DEFINE (MixNode)
 NODE_DEFINE (MixColorNode)
 NODE_DEFINE (MixFloatNode)
 NODE_DEFINE (MixVectorNode)
 NODE_DEFINE (MixVectorNonUniformNode)
 NODE_DEFINE (CombineColorNode)
 NODE_DEFINE (CombineXYZNode)
 NODE_DEFINE (GammaNode)
 NODE_DEFINE (BrightContrastNode)
 NODE_DEFINE (SeparateColorNode)
 NODE_DEFINE (SeparateXYZNode)
 NODE_DEFINE (HSVNode)
 NODE_DEFINE (AttributeNode)
 NODE_DEFINE (CameraNode)
 NODE_DEFINE (FresnelNode)
 NODE_DEFINE (LayerWeightNode)
 NODE_DEFINE (WireframeNode)
 NODE_DEFINE (WavelengthNode)
 NODE_DEFINE (BlackbodyNode)
 NODE_DEFINE (OutputNode)
 NODE_DEFINE (MapRangeNode)
 NODE_DEFINE (VectorMapRangeNode)
 NODE_DEFINE (ClampNode)
 NODE_DEFINE (OutputAOVNode)
 NODE_DEFINE (MathNode)
 NODE_DEFINE (VectorMathNode)
 NODE_DEFINE (VectorRotateNode)
 NODE_DEFINE (VectorTransformNode)
 NODE_DEFINE (BumpNode)
 NODE_DEFINE (RGBCurvesNode)
 NODE_DEFINE (VectorCurvesNode)
 NODE_DEFINE (FloatCurveNode)
 NODE_DEFINE (RGBRampNode)
 NODE_DEFINE (SetNormalNode)
 NODE_DEFINE (NormalMapNode)
 NODE_DEFINE (RadialTilingNode)
 NODE_DEFINE (TangentNode)
 NODE_DEFINE (BevelNode)
 NODE_DEFINE (DisplacementNode)
 NODE_DEFINE (VectorDisplacementNode)

Macro Definition Documentation

◆ TEXTURE_MAPPING_DEFINE

#define TEXTURE_MAPPING_DEFINE ( TextureNode)
Value:
SOCKET_POINT(tex_mapping.translation, "Translation", zero_float3()); \
SOCKET_VECTOR(tex_mapping.rotation, "Rotation", zero_float3()); \
SOCKET_VECTOR(tex_mapping.scale, "Scale", one_float3()); \
\
SOCKET_VECTOR(tex_mapping.min, "Min", make_float3(-FLT_MAX, -FLT_MAX, -FLT_MAX)); \
SOCKET_VECTOR(tex_mapping.max, "Max", make_float3(FLT_MAX, FLT_MAX, FLT_MAX)); \
SOCKET_BOOLEAN(tex_mapping.use_minmax, "Use Min Max", false); \
\
static NodeEnum mapping_axis_enum; \
mapping_axis_enum.insert("none", TextureMapping::NONE); \
mapping_axis_enum.insert("x", TextureMapping::X); \
mapping_axis_enum.insert("y", TextureMapping::Y); \
mapping_axis_enum.insert("z", TextureMapping::Z); \
SOCKET_ENUM(tex_mapping.x_mapping, "x_mapping", mapping_axis_enum, TextureMapping::X); \
SOCKET_ENUM(tex_mapping.y_mapping, "y_mapping", mapping_axis_enum, TextureMapping::Y); \
SOCKET_ENUM(tex_mapping.z_mapping, "z_mapping", mapping_axis_enum, TextureMapping::Z); \
\
static NodeEnum mapping_type_enum; \
mapping_type_enum.insert("point", TextureMapping::POINT); \
mapping_type_enum.insert("texture", TextureMapping::TEXTURE); \
mapping_type_enum.insert("vector", TextureMapping::VECTOR); \
mapping_type_enum.insert("normal", TextureMapping::NORMAL); \
SOCKET_ENUM(tex_mapping.type, "Type", mapping_type_enum, TextureMapping::TEXTURE); \
\
static NodeEnum mapping_projection_enum; \
mapping_projection_enum.insert("flat", TextureMapping::FLAT); \
mapping_projection_enum.insert("cube", TextureMapping::CUBE); \
mapping_projection_enum.insert("tube", TextureMapping::TUBE); \
mapping_projection_enum.insert("sphere", TextureMapping::SPHERE); \
SOCKET_ENUM(tex_mapping.projection, "Projection", mapping_projection_enum, TextureMapping::FLAT);
ccl_device_forceinline float3 make_float3(const float x, const float y, const float z)
ccl_device_inline float3 one_float3()
Definition math_float3.h:26
CCL_NAMESPACE_BEGIN ccl_device_inline float3 zero_float3()
Definition math_float3.h:17
#define SOCKET_POINT(name, ui_name, default_value,...)
Definition node_type.h:217
#define FLT_MAX
Definition stdcycles.h:14
void insert(const char *x, const int y)
Definition node_enum.h:21

Definition at line 39 of file shader_nodes.cpp.

Referenced by NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), and NODE_DEFINE().

Function Documentation

◆ NODE_DEFINE() [1/95]

◆ NODE_DEFINE() [2/95]

NODE_DEFINE ( AddClosureNode )

◆ NODE_DEFINE() [3/95]

◆ NODE_DEFINE() [4/95]

◆ NODE_DEFINE() [5/95]

◆ NODE_DEFINE() [6/95]

◆ NODE_DEFINE() [7/95]

NODE_DEFINE ( BlackbodyNode )

◆ NODE_DEFINE() [8/95]

◆ NODE_DEFINE() [9/95]

◆ NODE_DEFINE() [10/95]

◆ NODE_DEFINE() [11/95]

NODE_DEFINE ( CameraNode )

◆ NODE_DEFINE() [12/95]

◆ NODE_DEFINE() [13/95]

◆ NODE_DEFINE() [14/95]

NODE_DEFINE ( ColorNode )

◆ NODE_DEFINE() [15/95]

◆ NODE_DEFINE() [16/95]

NODE_DEFINE ( CombineXYZNode )

Definition at line 5695 of file shader_nodes.cpp.

References NodeType::add(), NodeType::SHADER, SOCKET_IN_FLOAT, SOCKET_OUT_VECTOR, x, y, and z().

◆ NODE_DEFINE() [17/95]

◆ NODE_DEFINE() [18/95]

◆ NODE_DEFINE() [19/95]

◆ NODE_DEFINE() [20/95]

◆ NODE_DEFINE() [21/95]

◆ NODE_DEFINE() [22/95]

◆ NODE_DEFINE() [23/95]

◆ NODE_DEFINE() [24/95]

◆ NODE_DEFINE() [25/95]

◆ NODE_DEFINE() [26/95]

◆ NODE_DEFINE() [27/95]

◆ NODE_DEFINE() [28/95]

◆ NODE_DEFINE() [29/95]

◆ NODE_DEFINE() [30/95]

NODE_DEFINE ( HairInfoNode )

◆ NODE_DEFINE() [31/95]

◆ NODE_DEFINE() [32/95]

◆ NODE_DEFINE() [33/95]

◆ NODE_DEFINE() [34/95]

◆ NODE_DEFINE() [35/95]

◆ NODE_DEFINE() [36/95]

◆ NODE_DEFINE() [37/95]

NODE_DEFINE ( LightFalloffNode )

◆ NODE_DEFINE() [38/95]

NODE_DEFINE ( LightPathNode )

Definition at line 4381 of file shader_nodes.cpp.

References NodeType::add(), NodeType::SHADER, and SOCKET_OUT_FLOAT.

◆ NODE_DEFINE() [39/95]

◆ NODE_DEFINE() [40/95]

◆ NODE_DEFINE() [41/95]

◆ NODE_DEFINE() [42/95]

◆ NODE_DEFINE() [43/95]

◆ NODE_DEFINE() [44/95]

◆ NODE_DEFINE() [45/95]

NODE_DEFINE ( MixClosureWeightNode )

◆ NODE_DEFINE() [46/95]

◆ NODE_DEFINE() [47/95]

NODE_DEFINE ( MixFloatNode )

◆ NODE_DEFINE() [48/95]

◆ NODE_DEFINE() [49/95]

◆ NODE_DEFINE() [50/95]

◆ NODE_DEFINE() [51/95]

◆ NODE_DEFINE() [52/95]

◆ NODE_DEFINE() [53/95]

◆ NODE_DEFINE() [54/95]

◆ NODE_DEFINE() [55/95]

◆ NODE_DEFINE() [56/95]

◆ NODE_DEFINE() [57/95]

◆ NODE_DEFINE() [58/95]

NODE_DEFINE ( PointInfoNode )

◆ NODE_DEFINE() [59/95]

◆ NODE_DEFINE() [60/95]

◆ NODE_DEFINE() [61/95]

◆ NODE_DEFINE() [62/95]

◆ NODE_DEFINE() [63/95]

◆ NODE_DEFINE() [64/95]

◆ NODE_DEFINE() [65/95]

◆ NODE_DEFINE() [66/95]

◆ NODE_DEFINE() [67/95]

NODE_DEFINE ( RGBToBWNode )

◆ NODE_DEFINE() [68/95]

◆ NODE_DEFINE() [69/95]

◆ NODE_DEFINE() [70/95]

NODE_DEFINE ( SeparateXYZNode )

◆ NODE_DEFINE() [71/95]

◆ NODE_DEFINE() [72/95]

◆ NODE_DEFINE() [73/95]

◆ NODE_DEFINE() [74/95]

◆ NODE_DEFINE() [75/95]

◆ NODE_DEFINE() [76/95]

◆ NODE_DEFINE() [77/95]

◆ NODE_DEFINE() [78/95]

◆ NODE_DEFINE() [79/95]

◆ NODE_DEFINE() [80/95]

NODE_DEFINE ( UVMapNode )

◆ NODE_DEFINE() [81/95]

NODE_DEFINE ( ValueNode )

Definition at line 5031 of file shader_nodes.cpp.

References NodeType::add(), NodeType::SHADER, SOCKET_FLOAT, and SOCKET_OUT_FLOAT.

◆ NODE_DEFINE() [82/95]

◆ NODE_DEFINE() [83/95]

◆ NODE_DEFINE() [84/95]

◆ NODE_DEFINE() [85/95]

◆ NODE_DEFINE() [86/95]

◆ NODE_DEFINE() [87/95]

◆ NODE_DEFINE() [88/95]

◆ NODE_DEFINE() [89/95]

◆ NODE_DEFINE() [90/95]

NODE_DEFINE ( VolumeInfoNode )

◆ NODE_DEFINE() [91/95]

◆ NODE_DEFINE() [92/95]

NODE_DEFINE ( WavelengthNode )

◆ NODE_DEFINE() [93/95]

◆ NODE_DEFINE() [94/95]

◆ NODE_DEFINE() [95/95]

◆ sky_perez_function()

float sky_perez_function ( const float lam[6],
float theta,
const float gamma )
static

Definition at line 652 of file shader_nodes.cpp.

References cosf, and expf.

Referenced by sky_texture_precompute_preetham().

◆ sky_spherical_coordinates()

float2 sky_spherical_coordinates ( const float3 dir)
static

◆ sky_texture_precompute_hosek()

◆ sky_texture_precompute_nishita()

void sky_texture_precompute_nishita ( SunSky * sunsky,
bool multiple_scattering,
bool sun_disc,
const float sun_size,
const float sun_intensity,
const float sun_elevation,
const float sun_rotation,
const float altitude,
const float air_density,
const float aerosol_density,
const float ozone_density )
static

◆ sky_texture_precompute_preetham()

void sky_texture_precompute_preetham ( SunSky * sunsky,
const float3 dir,
const float turbidity )
static