Blender V4.3
shader_nodes.cpp File Reference
#include "scene/shader_nodes.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_model.h"
#include "util/color.h"
#include "util/foreach.h"
#include "util/log.h"
#include "util/transform.h"
#include "kernel/tables.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)
 

Typedefs

typedef struct SunSky SunSky
 

Functions

 NODE_DEFINE (ImageTextureNode)
 
 NODE_DEFINE (EnvironmentTextureNode)
 
static float2 sky_spherical_coordinates (float3 dir)
 
static float sky_perez_function (float lam[6], float theta, float gamma)
 
static void sky_texture_precompute_preetham (SunSky *sunsky, float3 dir, float turbidity)
 
static void sky_texture_precompute_hosek (SunSky *sunsky, float3 dir, float turbidity, float ground_albedo)
 
static void sky_texture_precompute_nishita (SunSky *sunsky, bool sun_disc, float sun_size, float sun_intensity, float sun_elevation, float sun_rotation, float altitude, float air_density, float dust_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 (PointDensityTextureNode)
 
 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 (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 (CombineRGBNode)
 
 NODE_DEFINE (CombineXYZNode)
 
 NODE_DEFINE (CombineHSVNode)
 
 NODE_DEFINE (GammaNode)
 
 NODE_DEFINE (BrightContrastNode)
 
 NODE_DEFINE (SeparateColorNode)
 
 NODE_DEFINE (SeparateRGBNode)
 
 NODE_DEFINE (SeparateXYZNode)
 
 NODE_DEFINE (SeparateHSVNode)
 
 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 (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:24
CCL_NAMESPACE_BEGIN ccl_device_inline float3 zero_float3()
Definition math_float3.h:15
#define SOCKET_POINT(name, ui_name, default_value,...)
Definition node_type.h:206
#define FLT_MAX
Definition stdcycles.h:14
void insert(const char *x, int y)
Definition node_enum.h:21

Definition at line 36 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().

Typedef Documentation

◆ SunSky

typedef struct SunSky SunSky

Function Documentation

◆ NODE_DEFINE() [1/98]

◆ NODE_DEFINE() [2/98]

NODE_DEFINE ( AddClosureNode )

◆ NODE_DEFINE() [3/98]

◆ NODE_DEFINE() [4/98]

◆ NODE_DEFINE() [5/98]

◆ NODE_DEFINE() [6/98]

◆ NODE_DEFINE() [7/98]

NODE_DEFINE ( BlackbodyNode )

◆ NODE_DEFINE() [8/98]

◆ NODE_DEFINE() [9/98]

◆ NODE_DEFINE() [10/98]

◆ NODE_DEFINE() [11/98]

NODE_DEFINE ( CameraNode )

◆ NODE_DEFINE() [12/98]

◆ NODE_DEFINE() [13/98]

◆ NODE_DEFINE() [14/98]

NODE_DEFINE ( ColorNode )

◆ NODE_DEFINE() [15/98]

◆ NODE_DEFINE() [16/98]

NODE_DEFINE ( CombineHSVNode )

Definition at line 5606 of file shader_nodes.cpp.

References NodeType::add(), NodeType::SHADER, SOCKET_IN_FLOAT, SOCKET_OUT_COLOR, and v.

◆ NODE_DEFINE() [17/98]

NODE_DEFINE ( CombineRGBNode )

Definition at line 5514 of file shader_nodes.cpp.

References NodeType::add(), b, NodeType::SHADER, SOCKET_IN_FLOAT, and SOCKET_OUT_COLOR.

◆ NODE_DEFINE() [18/98]

NODE_DEFINE ( CombineXYZNode )

◆ NODE_DEFINE() [19/98]

◆ NODE_DEFINE() [20/98]

◆ NODE_DEFINE() [21/98]

◆ NODE_DEFINE() [22/98]

◆ NODE_DEFINE() [23/98]

◆ NODE_DEFINE() [24/98]

◆ NODE_DEFINE() [25/98]

◆ NODE_DEFINE() [26/98]

◆ NODE_DEFINE() [27/98]

◆ NODE_DEFINE() [28/98]

◆ NODE_DEFINE() [29/98]

◆ NODE_DEFINE() [30/98]

◆ NODE_DEFINE() [31/98]

◆ NODE_DEFINE() [32/98]

NODE_DEFINE ( HairInfoNode )

◆ NODE_DEFINE() [33/98]

◆ NODE_DEFINE() [34/98]

◆ NODE_DEFINE() [35/98]

◆ NODE_DEFINE() [36/98]

◆ NODE_DEFINE() [37/98]

◆ NODE_DEFINE() [38/98]

◆ NODE_DEFINE() [39/98]

NODE_DEFINE ( LightFalloffNode )

◆ NODE_DEFINE() [40/98]

NODE_DEFINE ( LightPathNode )

Definition at line 4265 of file shader_nodes.cpp.

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

◆ NODE_DEFINE() [41/98]

◆ NODE_DEFINE() [42/98]

◆ NODE_DEFINE() [43/98]

◆ NODE_DEFINE() [44/98]

◆ NODE_DEFINE() [45/98]

◆ NODE_DEFINE() [46/98]

◆ NODE_DEFINE() [47/98]

NODE_DEFINE ( MixClosureWeightNode )

◆ NODE_DEFINE() [48/98]

◆ NODE_DEFINE() [49/98]

NODE_DEFINE ( MixFloatNode )

◆ NODE_DEFINE() [50/98]

◆ NODE_DEFINE() [51/98]

◆ NODE_DEFINE() [52/98]

◆ NODE_DEFINE() [53/98]

◆ NODE_DEFINE() [54/98]

◆ NODE_DEFINE() [55/98]

◆ NODE_DEFINE() [56/98]

◆ NODE_DEFINE() [57/98]

◆ NODE_DEFINE() [58/98]

◆ NODE_DEFINE() [59/98]

◆ NODE_DEFINE() [60/98]

◆ NODE_DEFINE() [61/98]

NODE_DEFINE ( PointInfoNode )

◆ NODE_DEFINE() [62/98]

◆ NODE_DEFINE() [63/98]

◆ NODE_DEFINE() [64/98]

◆ NODE_DEFINE() [65/98]

◆ NODE_DEFINE() [66/98]

◆ NODE_DEFINE() [67/98]

◆ NODE_DEFINE() [68/98]

◆ NODE_DEFINE() [69/98]

NODE_DEFINE ( RGBToBWNode )

◆ NODE_DEFINE() [70/98]

◆ NODE_DEFINE() [71/98]

◆ NODE_DEFINE() [72/98]

NODE_DEFINE ( SeparateHSVNode )

◆ NODE_DEFINE() [73/98]

NODE_DEFINE ( SeparateRGBNode )

◆ NODE_DEFINE() [74/98]

◆ NODE_DEFINE() [75/98]

◆ NODE_DEFINE() [76/98]

◆ NODE_DEFINE() [77/98]

◆ NODE_DEFINE() [78/98]

◆ NODE_DEFINE() [79/98]

◆ NODE_DEFINE() [80/98]

◆ NODE_DEFINE() [81/98]

◆ NODE_DEFINE() [82/98]

◆ NODE_DEFINE() [83/98]

◆ NODE_DEFINE() [84/98]

NODE_DEFINE ( UVMapNode )

◆ NODE_DEFINE() [85/98]

NODE_DEFINE ( ValueNode )

Definition at line 4893 of file shader_nodes.cpp.

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

◆ NODE_DEFINE() [86/98]

◆ NODE_DEFINE() [87/98]

◆ NODE_DEFINE() [88/98]

◆ NODE_DEFINE() [89/98]

◆ NODE_DEFINE() [90/98]

◆ NODE_DEFINE() [91/98]

◆ NODE_DEFINE() [92/98]

◆ NODE_DEFINE() [93/98]

NODE_DEFINE ( VolumeInfoNode )

◆ NODE_DEFINE() [94/98]

◆ NODE_DEFINE() [95/98]

NODE_DEFINE ( WavelengthNode )

◆ NODE_DEFINE() [96/98]

◆ NODE_DEFINE() [97/98]

◆ NODE_DEFINE() [98/98]

NODE_DEFINE ( WireframeNode )

◆ sky_perez_function()

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

Definition at line 648 of file shader_nodes.cpp.

References cosf, and expf.

Referenced by sky_texture_precompute_preetham().

◆ sky_spherical_coordinates()

static float2 sky_spherical_coordinates ( float3 dir)
static

◆ sky_texture_precompute_hosek()

◆ sky_texture_precompute_nishita()

static void sky_texture_precompute_nishita ( SunSky * sunsky,
bool sun_disc,
float sun_size,
float sun_intensity,
float sun_elevation,
float sun_rotation,
float altitude,
float air_density,
float dust_density )
static

◆ sky_texture_precompute_preetham()

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