Blender  V3.3
Classes | Macros | Typedefs | Functions
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 (VoronoiTextureNode)
 
 NODE_DEFINE (IESLightNode)
 
 NODE_DEFINE (WhiteNoiseTextureNode)
 
 NODE_DEFINE (MusgraveTextureNode)
 
 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 (AnisotropicBsdfNode)
 
 NODE_DEFINE (GlossyBsdfNode)
 
 NODE_DEFINE (GlassBsdfNode)
 
 NODE_DEFINE (RefractionBsdfNode)
 
 NODE_DEFINE (ToonBsdfNode)
 
 NODE_DEFINE (VelvetBsdfNode)
 
 NODE_DEFINE (DiffuseBsdfNode)
 
 NODE_DEFINE (PrincipledBsdfNode)
 
 NODE_DEFINE (TranslucentBsdfNode)
 
 NODE_DEFINE (TransparentBsdfNode)
 
 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 (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_inline float3 one_float3()
Definition: math_float3.h:89
ccl_device_inline float3 zero_float3()
Definition: math_float3.h:80
#define make_float3(x, y, z)
Definition: metal/compat.h:204
#define SOCKET_POINT(name, ui_name, default_value,...)
Definition: node_type.h:197
#define SOCKET_VECTOR(name, ui_name, default_value,...)
Definition: node_type.h:195
void insert(const char *x, int y)
Definition: node_enum.h:20

Definition at line 35 of file shader_nodes.cpp.

Typedef Documentation

◆ SunSky

typedef struct SunSky SunSky

Function Documentation

◆ NODE_DEFINE() [1/93]

NODE_DEFINE ( AbsorptionVolumeNode  )

◆ NODE_DEFINE() [2/93]

NODE_DEFINE ( AddClosureNode  )

◆ NODE_DEFINE() [3/93]

NODE_DEFINE ( AmbientOcclusionNode  )

◆ NODE_DEFINE() [4/93]

NODE_DEFINE ( AnisotropicBsdfNode  )

◆ NODE_DEFINE() [5/93]

NODE_DEFINE ( AttributeNode  )

◆ NODE_DEFINE() [6/93]

NODE_DEFINE ( BackgroundNode  )

◆ NODE_DEFINE() [7/93]

NODE_DEFINE ( BevelNode  )

◆ NODE_DEFINE() [8/93]

NODE_DEFINE ( BlackbodyNode  )

◆ NODE_DEFINE() [9/93]

NODE_DEFINE ( BrickTextureNode  )

◆ NODE_DEFINE() [10/93]

NODE_DEFINE ( BrightContrastNode  )

◆ NODE_DEFINE() [11/93]

NODE_DEFINE ( BumpNode  )

◆ NODE_DEFINE() [12/93]

NODE_DEFINE ( CameraNode  )

◆ NODE_DEFINE() [13/93]

NODE_DEFINE ( CheckerTextureNode  )

◆ NODE_DEFINE() [14/93]

NODE_DEFINE ( ClampNode  )

◆ NODE_DEFINE() [15/93]

NODE_DEFINE ( ColorNode  )

◆ NODE_DEFINE() [16/93]

NODE_DEFINE ( CombineColorNode  )

◆ NODE_DEFINE() [17/93]

NODE_DEFINE ( CombineHSVNode  )

◆ NODE_DEFINE() [18/93]

NODE_DEFINE ( CombineRGBNode  )

◆ NODE_DEFINE() [19/93]

NODE_DEFINE ( CombineXYZNode  )

◆ NODE_DEFINE() [20/93]

NODE_DEFINE ( DiffuseBsdfNode  )

◆ NODE_DEFINE() [21/93]

NODE_DEFINE ( DisplacementNode  )

◆ NODE_DEFINE() [22/93]

NODE_DEFINE ( EmissionNode  )

◆ NODE_DEFINE() [23/93]

NODE_DEFINE ( EnvironmentTextureNode  )

◆ NODE_DEFINE() [24/93]

NODE_DEFINE ( FloatCurveNode  )

◆ NODE_DEFINE() [25/93]

NODE_DEFINE ( FresnelNode  )

◆ NODE_DEFINE() [26/93]

NODE_DEFINE ( GammaNode  )

◆ NODE_DEFINE() [27/93]

NODE_DEFINE ( GeometryNode  )

◆ NODE_DEFINE() [28/93]

NODE_DEFINE ( GlassBsdfNode  )

◆ NODE_DEFINE() [29/93]

NODE_DEFINE ( GlossyBsdfNode  )

◆ NODE_DEFINE() [30/93]

NODE_DEFINE ( GradientTextureNode  )

◆ NODE_DEFINE() [31/93]

NODE_DEFINE ( HairBsdfNode  )

◆ NODE_DEFINE() [32/93]

NODE_DEFINE ( HairInfoNode  )

◆ NODE_DEFINE() [33/93]

NODE_DEFINE ( HoldoutNode  )

◆ NODE_DEFINE() [34/93]

NODE_DEFINE ( HSVNode  )

◆ NODE_DEFINE() [35/93]

NODE_DEFINE ( IESLightNode  )

◆ NODE_DEFINE() [36/93]

NODE_DEFINE ( ImageTextureNode  )

◆ NODE_DEFINE() [37/93]

NODE_DEFINE ( InvertNode  )

◆ NODE_DEFINE() [38/93]

NODE_DEFINE ( LayerWeightNode  )

◆ NODE_DEFINE() [39/93]

NODE_DEFINE ( LightFalloffNode  )

◆ NODE_DEFINE() [40/93]

NODE_DEFINE ( LightPathNode  )

◆ NODE_DEFINE() [41/93]

NODE_DEFINE ( MagicTextureNode  )

◆ NODE_DEFINE() [42/93]

NODE_DEFINE ( MappingNode  )

◆ NODE_DEFINE() [43/93]

NODE_DEFINE ( MapRangeNode  )

◆ NODE_DEFINE() [44/93]

NODE_DEFINE ( MathNode  )

◆ NODE_DEFINE() [45/93]

NODE_DEFINE ( MixClosureNode  )

◆ NODE_DEFINE() [46/93]

NODE_DEFINE ( MixClosureWeightNode  )

◆ NODE_DEFINE() [47/93]

NODE_DEFINE ( MixNode  )

◆ NODE_DEFINE() [48/93]

NODE_DEFINE ( MusgraveTextureNode  )

◆ NODE_DEFINE() [49/93]

NODE_DEFINE ( NoiseTextureNode  )

◆ NODE_DEFINE() [50/93]

NODE_DEFINE ( NormalMapNode  )

◆ NODE_DEFINE() [51/93]

NODE_DEFINE ( NormalNode  )

◆ NODE_DEFINE() [52/93]

NODE_DEFINE ( ObjectInfoNode  )

◆ NODE_DEFINE() [53/93]

NODE_DEFINE ( OutputAOVNode  )

◆ NODE_DEFINE() [54/93]

NODE_DEFINE ( OutputNode  )

◆ NODE_DEFINE() [55/93]

NODE_DEFINE ( ParticleInfoNode  )

◆ NODE_DEFINE() [56/93]

NODE_DEFINE ( PointDensityTextureNode  )

◆ NODE_DEFINE() [57/93]

NODE_DEFINE ( PointInfoNode  )

◆ NODE_DEFINE() [58/93]

NODE_DEFINE ( PrincipledBsdfNode  )

◆ NODE_DEFINE() [59/93]

NODE_DEFINE ( PrincipledHairBsdfNode  )

◆ NODE_DEFINE() [60/93]

NODE_DEFINE ( PrincipledVolumeNode  )

◆ NODE_DEFINE() [61/93]

NODE_DEFINE ( RefractionBsdfNode  )

◆ NODE_DEFINE() [62/93]

NODE_DEFINE ( RGBCurvesNode  )

◆ NODE_DEFINE() [63/93]

NODE_DEFINE ( RGBRampNode  )

◆ NODE_DEFINE() [64/93]

NODE_DEFINE ( RGBToBWNode  )

◆ NODE_DEFINE() [65/93]

NODE_DEFINE ( ScatterVolumeNode  )

◆ NODE_DEFINE() [66/93]

NODE_DEFINE ( SeparateColorNode  )

◆ NODE_DEFINE() [67/93]

NODE_DEFINE ( SeparateHSVNode  )

◆ NODE_DEFINE() [68/93]

NODE_DEFINE ( SeparateRGBNode  )

◆ NODE_DEFINE() [69/93]

NODE_DEFINE ( SeparateXYZNode  )

◆ NODE_DEFINE() [70/93]

NODE_DEFINE ( SetNormalNode  )

◆ NODE_DEFINE() [71/93]

NODE_DEFINE ( SkyTextureNode  )

◆ NODE_DEFINE() [72/93]

NODE_DEFINE ( SubsurfaceScatteringNode  )

◆ NODE_DEFINE() [73/93]

NODE_DEFINE ( TangentNode  )

◆ NODE_DEFINE() [74/93]

NODE_DEFINE ( TextureCoordinateNode  )

◆ NODE_DEFINE() [75/93]

NODE_DEFINE ( ToonBsdfNode  )

◆ NODE_DEFINE() [76/93]

NODE_DEFINE ( TranslucentBsdfNode  )

◆ NODE_DEFINE() [77/93]

NODE_DEFINE ( TransparentBsdfNode  )

◆ NODE_DEFINE() [78/93]

NODE_DEFINE ( UVMapNode  )

◆ NODE_DEFINE() [79/93]

NODE_DEFINE ( ValueNode  )

◆ NODE_DEFINE() [80/93]

NODE_DEFINE ( VectorCurvesNode  )

◆ NODE_DEFINE() [81/93]

NODE_DEFINE ( VectorDisplacementNode  )

◆ NODE_DEFINE() [82/93]

NODE_DEFINE ( VectorMapRangeNode  )

◆ NODE_DEFINE() [83/93]

NODE_DEFINE ( VectorMathNode  )

◆ NODE_DEFINE() [84/93]

NODE_DEFINE ( VectorRotateNode  )

◆ NODE_DEFINE() [85/93]

NODE_DEFINE ( VectorTransformNode  )

◆ NODE_DEFINE() [86/93]

NODE_DEFINE ( VelvetBsdfNode  )

◆ NODE_DEFINE() [87/93]

NODE_DEFINE ( VertexColorNode  )

◆ NODE_DEFINE() [88/93]

NODE_DEFINE ( VolumeInfoNode  )

◆ NODE_DEFINE() [89/93]

NODE_DEFINE ( VoronoiTextureNode  )

◆ NODE_DEFINE() [90/93]

NODE_DEFINE ( WavelengthNode  )

◆ NODE_DEFINE() [91/93]

NODE_DEFINE ( WaveTextureNode  )

◆ NODE_DEFINE() [92/93]

NODE_DEFINE ( WhiteNoiseTextureNode  )

◆ NODE_DEFINE() [93/93]

NODE_DEFINE ( WireframeNode  )

◆ sky_perez_function()

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

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

static void sky_texture_precompute_hosek ( SunSky sunsky,
float3  dir,
float  turbidity,
float  ground_albedo 
)
static

◆ 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