Blender V4.3
closures.cpp File Reference
#include <OSL/genclosure.h>
#include <OSL/oslclosure.h>
#include "kernel/types.h"
#include "kernel/osl/globals.h"
#include "kernel/osl/services.h"
#include "util/math.h"
#include "util/param.h"
#include "kernel/device/cpu/compat.h"
#include "kernel/device/cpu/globals.h"
#include "kernel/geom/object.h"
#include "kernel/util/differential.h"
#include "kernel/osl/osl.h"
#include "closures_template.h"

Go to the source code of this file.

Macros

#define TO_VEC3(v)   OSL::Vec3(v.x, v.y, v.z)
 
#define TO_FLOAT3(v)   make_float3(v[0], v[1], v[2])
 
#define OSL_CLOSURE_STRUCT_BEGIN(Upper, lower)
 
#define OSL_CLOSURE_STRUCT_END(Upper, lower)
 
#define OSL_CLOSURE_STRUCT_MEMBER(Upper, TYPE, type, name, key)    CLOSURE_##TYPE##_KEYPARAM(Upper##Closure, name, key),
 
#define OSL_CLOSURE_STRUCT_ARRAY_MEMBER(Upper, TYPE, type, name, key, size)    CLOSURE_##TYPE##_ARRAY_PARAM(Upper##Closure, name, size),
 
#define OSL_CLOSURE_STRUCT_BEGIN(Upper, lower)
 

Functions

static OSL::ClosureParam * osl_closure_layer_params ()
 
template<>
void osl_eval_nodes< SHADER_TYPE_SURFACE > (const KernelGlobalsCPU *kg, const void *state, ShaderData *sd, uint32_t path_flag)
 
template<>
void osl_eval_nodes< SHADER_TYPE_VOLUME > (const KernelGlobalsCPU *kg, const void *state, ShaderData *sd, uint32_t path_flag)
 
template<>
void osl_eval_nodes< SHADER_TYPE_DISPLACEMENT > (const KernelGlobalsCPU *kg, const void *state, ShaderData *sd, uint32_t path_flag)
 

Variables

 CCL_NAMESPACE_BEGIN
 

Macro Definition Documentation

◆ OSL_CLOSURE_STRUCT_ARRAY_MEMBER

#define OSL_CLOSURE_STRUCT_ARRAY_MEMBER ( Upper,
TYPE,
type,
name,
key,
size )    CLOSURE_##TYPE##_ARRAY_PARAM(Upper##Closure, name, size),

Definition at line 53 of file closures.cpp.

◆ OSL_CLOSURE_STRUCT_BEGIN [1/2]

#define OSL_CLOSURE_STRUCT_BEGIN ( Upper,
lower )
Value:
static OSL::ClosureParam *osl_closure_##lower##_params() \
{ \
static OSL::ClosureParam params[] = {
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]

Definition at line 41 of file closures.cpp.

◆ OSL_CLOSURE_STRUCT_BEGIN [2/2]

#define OSL_CLOSURE_STRUCT_BEGIN ( Upper,
lower )
Value:
ss->register_closure( \
#lower, OSL_CLOSURE_##Upper##_ID, osl_closure_##lower##_params(), nullptr, nullptr);

Definition at line 41 of file closures.cpp.

◆ OSL_CLOSURE_STRUCT_END

#define OSL_CLOSURE_STRUCT_END ( Upper,
lower )
Value:
CLOSURE_STRING_KEYPARAM(Upper##Closure, label, "label"), CLOSURE_FINISH_PARAM(Upper##Closure) \
} \
; \
return params; \
}
const char * label

Definition at line 45 of file closures.cpp.

◆ OSL_CLOSURE_STRUCT_MEMBER

#define OSL_CLOSURE_STRUCT_MEMBER ( Upper,
TYPE,
type,
name,
key )    CLOSURE_##TYPE##_KEYPARAM(Upper##Closure, name, key),

Definition at line 51 of file closures.cpp.

◆ TO_FLOAT3

#define TO_FLOAT3 ( v)    make_float3(v[0], v[1], v[2])

Definition at line 28 of file closures.cpp.

Referenced by osl_eval_nodes< SHADER_TYPE_DISPLACEMENT >().

◆ TO_VEC3

#define TO_VEC3 ( v)    OSL::Vec3(v.x, v.y, v.z)

Definition at line 27 of file closures.cpp.

Referenced by osl_eval_nodes< SHADER_TYPE_SURFACE >().

Function Documentation

◆ osl_closure_layer_params()

static OSL::ClosureParam * osl_closure_layer_params ( )
static

Definition at line 58 of file closures.cpp.

References params.

Referenced by OSLRenderServices::register_closures().

◆ osl_eval_nodes< SHADER_TYPE_DISPLACEMENT >()

template<>
void osl_eval_nodes< SHADER_TYPE_DISPLACEMENT > ( const KernelGlobalsCPU * kg,
const void * state,
ShaderData * sd,
uint32_t path_flag )

Definition at line 263 of file closures.cpp.

References SHADER_MASK, shaderdata_to_shaderglobals(), state, and TO_FLOAT3.

Referenced by displacement_shader_eval().

◆ osl_eval_nodes< SHADER_TYPE_SURFACE >()

◆ osl_eval_nodes< SHADER_TYPE_VOLUME >()

template<>
void osl_eval_nodes< SHADER_TYPE_VOLUME > ( const KernelGlobalsCPU * kg,
const void * state,
ShaderData * sd,
uint32_t path_flag )

Variable Documentation

◆ CCL_NAMESPACE_BEGIN

CCL_NAMESPACE_BEGIN

Definition at line 32 of file closures.cpp.