Blender  V3.3
Classes | Macros | Functions
closures.h File Reference
#include "kernel/types.h"
#include "util/types.h"
#include <OSL/genclosure.h>
#include <OSL/oslclosure.h>
#include <OSL/oslexec.h>

Go to the source code of this file.

Classes

class  CClosurePrimitive
 
class  CBSDFClosure
 

Macros

#define CCLOSURE_PREPARE(name, classname)
 
#define CCLOSURE_PREPARE_STATIC(name, classname)   static CCLOSURE_PREPARE(name, classname)
 
#define CLOSURE_FLOAT3_PARAM(st, fld)
 
#define BSDF_CLOSURE_FLOAT_PARAM(st, fld)   CLOSURE_FLOAT_PARAM(st, fld),
 
#define BSDF_CLOSURE_FLOAT3_PARAM(st, fld)   CLOSURE_FLOAT3_PARAM(st, fld),
 
#define TO_VEC3(v)   OSL::Vec3(v.x, v.y, v.z)
 
#define TO_COLOR3(v)   OSL::Color3(v.x, v.y, v.z)
 
#define TO_FLOAT3(v)   make_float3(v[0], v[1], v[2])
 
#define BSDF_CLOSURE_CLASS_BEGIN(Upper, lower, structname, TYPE)
 
#define BSDF_CLOSURE_CLASS_END(Upper, lower)
 

Functions

CCL_NAMESPACE_BEGIN OSL::ClosureParam * closure_emission_params ()
 
OSL::ClosureParam * closure_background_params ()
 
OSL::ClosureParam * closure_holdout_params ()
 
OSL::ClosureParam * closure_bsdf_diffuse_ramp_params ()
 
OSL::ClosureParam * closure_bsdf_phong_ramp_params ()
 
OSL::ClosureParam * closure_bsdf_transparent_params ()
 
OSL::ClosureParam * closure_bssrdf_params ()
 
OSL::ClosureParam * closure_absorption_params ()
 
OSL::ClosureParam * closure_henyey_greenstein_params ()
 
OSL::ClosureParam * closure_bsdf_microfacet_params ()
 
OSL::ClosureParam * closure_bsdf_microfacet_multi_ggx_params ()
 
OSL::ClosureParam * closure_bsdf_microfacet_multi_ggx_glass_params ()
 
OSL::ClosureParam * closure_bsdf_microfacet_multi_ggx_aniso_params ()
 
OSL::ClosureParam * closure_bsdf_microfacet_ggx_fresnel_params ()
 
OSL::ClosureParam * closure_bsdf_microfacet_ggx_aniso_fresnel_params ()
 
OSL::ClosureParam * closure_bsdf_microfacet_multi_ggx_fresnel_params ()
 
OSL::ClosureParam * closure_bsdf_microfacet_multi_ggx_glass_fresnel_params ()
 
OSL::ClosureParam * closure_bsdf_microfacet_multi_ggx_aniso_fresnel_params ()
 
OSL::ClosureParam * closure_bsdf_principled_clearcoat_params ()
 
void closure_emission_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_background_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_holdout_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_bsdf_diffuse_ramp_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_bsdf_phong_ramp_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_bsdf_transparent_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_bssrdf_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_absorption_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_henyey_greenstein_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_bsdf_microfacet_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_bsdf_microfacet_multi_ggx_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_bsdf_microfacet_multi_ggx_glass_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_bsdf_microfacet_multi_ggx_aniso_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_bsdf_microfacet_ggx_fresnel_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_bsdf_microfacet_ggx_aniso_fresnel_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_bsdf_microfacet_multi_ggx_fresnel_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_bsdf_microfacet_multi_ggx_glass_fresnel_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_bsdf_microfacet_multi_ggx_aniso_fresnel_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_bsdf_principled_clearcoat_prepare (OSL::RendererServices *, int id, void *data)
 
void closure_bsdf_principled_hair_prepare (OSL::RendererServices *, int id, void *data)
 

Macro Definition Documentation

◆ BSDF_CLOSURE_CLASS_BEGIN

#define BSDF_CLOSURE_CLASS_BEGIN (   Upper,
  lower,
  structname,
  TYPE 
)
Value:
\
class Upper##Closure : public CBSDFClosure { \
public: \
structname params; \
float3 unused; \
\
void setup(ShaderData *sd, uint32_t path_flag, float3 weight) \
{ \
if (!skip(sd, path_flag, TYPE)) { \
params.N = ensure_valid_reflection(sd->Ng, sd->I, params.N); \
structname *bsdf = (structname *)bsdf_alloc_osl(sd, sizeof(structname), weight, &params); \
sd->flag |= (bsdf) ? bsdf_##lower##_setup(bsdf) : 0; \
} \
} \
}; \
\
static ClosureParam *bsdf_##lower##_params() \
{ \
static ClosureParam params[] = {
ccl_device float3 ensure_valid_reflection(float3 Ng, float3 I, float3 N)
Definition: bsdf_util.h:127
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
ShaderData
Definition: kernel/types.h:925
char Upper(char ch)
Definition: utility_io.cpp:142
unsigned int uint32_t
Definition: stdint.h:80

Definition at line 107 of file closures.h.

◆ BSDF_CLOSURE_CLASS_END

#define BSDF_CLOSURE_CLASS_END (   Upper,
  lower 
)
Value:
CLOSURE_STRING_KEYPARAM(Upper##Closure, label, "label"), CLOSURE_FINISH_PARAM(Upper##Closure) \
} \
; \
return params; \
} \
CCLOSURE_PREPARE_STATIC(bsdf_##lower##_prepare, Upper##Closure)
#define CCLOSURE_PREPARE_STATIC(name, classname)
Definition: closures.h:77
const char * label

Definition at line 130 of file closures.h.

◆ BSDF_CLOSURE_FLOAT3_PARAM

#define BSDF_CLOSURE_FLOAT3_PARAM (   st,
  fld 
)    CLOSURE_FLOAT3_PARAM(st, fld),

Definition at line 85 of file closures.h.

◆ BSDF_CLOSURE_FLOAT_PARAM

#define BSDF_CLOSURE_FLOAT_PARAM (   st,
  fld 
)    CLOSURE_FLOAT_PARAM(st, fld),

Definition at line 84 of file closures.h.

◆ CCLOSURE_PREPARE

#define CCLOSURE_PREPARE (   name,
  classname 
)
Value:
void name(RendererServices *, int id, void *data) \
{ \
memset(data, 0, sizeof(classname)); \
new (data) classname(); \
}

Definition at line 70 of file closures.h.

◆ CCLOSURE_PREPARE_STATIC

#define CCLOSURE_PREPARE_STATIC (   name,
  classname 
)    static CCLOSURE_PREPARE(name, classname)

Definition at line 77 of file closures.h.

◆ CLOSURE_FLOAT3_PARAM

#define CLOSURE_FLOAT3_PARAM (   st,
  fld 
)
Value:
{ \
TypeDesc::TypeVector, (int)reckless_offsetof(st, fld), NULL, sizeof(OSL::Vec3) \
}
Eigen::Vector3d Vec3
Definition: numeric.h:106
static const pxr::TfToken st("st", pxr::TfToken::Immortal)

Definition at line 79 of file closures.h.

◆ TO_COLOR3

#define TO_COLOR3 (   v)    OSL::Color3(v.x, v.y, v.z)

Definition at line 88 of file closures.h.

◆ TO_FLOAT3

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

Definition at line 89 of file closures.h.

◆ TO_VEC3

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

Definition at line 87 of file closures.h.

Function Documentation

◆ closure_absorption_params()

OSL::ClosureParam* closure_absorption_params ( )

Definition at line 967 of file closures.cpp.

References label, and params.

◆ closure_absorption_prepare()

void closure_absorption_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_background_params()

OSL::ClosureParam* closure_background_params ( )

Definition at line 55 of file kernel/osl/background.cpp.

References label, and params.

◆ closure_background_prepare()

void closure_background_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_bsdf_diffuse_ramp_params()

OSL::ClosureParam* closure_bsdf_diffuse_ramp_params ( )

Definition at line 52 of file bsdf_diffuse_ramp.cpp.

References CLOSURE_FLOAT3_PARAM, label, and params.

◆ closure_bsdf_diffuse_ramp_prepare()

void closure_bsdf_diffuse_ramp_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_bsdf_microfacet_ggx_aniso_fresnel_params()

OSL::ClosureParam* closure_bsdf_microfacet_ggx_aniso_fresnel_params ( )

Definition at line 653 of file closures.cpp.

References CLOSURE_FLOAT3_PARAM, color, label, and params.

◆ closure_bsdf_microfacet_ggx_aniso_fresnel_prepare()

void closure_bsdf_microfacet_ggx_aniso_fresnel_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_bsdf_microfacet_ggx_fresnel_params()

OSL::ClosureParam* closure_bsdf_microfacet_ggx_fresnel_params ( )

Definition at line 624 of file closures.cpp.

References CLOSURE_FLOAT3_PARAM, color, label, and params.

◆ closure_bsdf_microfacet_ggx_fresnel_prepare()

void closure_bsdf_microfacet_ggx_fresnel_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_bsdf_microfacet_multi_ggx_aniso_fresnel_params()

OSL::ClosureParam* closure_bsdf_microfacet_multi_ggx_aniso_fresnel_params ( )

Definition at line 882 of file closures.cpp.

References CLOSURE_FLOAT3_PARAM, color, label, and params.

◆ closure_bsdf_microfacet_multi_ggx_aniso_fresnel_prepare()

void closure_bsdf_microfacet_multi_ggx_aniso_fresnel_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_bsdf_microfacet_multi_ggx_aniso_params()

OSL::ClosureParam* closure_bsdf_microfacet_multi_ggx_aniso_params ( )

Definition at line 751 of file closures.cpp.

References CLOSURE_FLOAT3_PARAM, color, label, and params.

◆ closure_bsdf_microfacet_multi_ggx_aniso_prepare()

void closure_bsdf_microfacet_multi_ggx_aniso_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_bsdf_microfacet_multi_ggx_fresnel_params()

OSL::ClosureParam* closure_bsdf_microfacet_multi_ggx_fresnel_params ( )

Definition at line 852 of file closures.cpp.

References CLOSURE_FLOAT3_PARAM, color, label, and params.

◆ closure_bsdf_microfacet_multi_ggx_fresnel_prepare()

void closure_bsdf_microfacet_multi_ggx_fresnel_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_bsdf_microfacet_multi_ggx_glass_fresnel_params()

OSL::ClosureParam* closure_bsdf_microfacet_multi_ggx_glass_fresnel_params ( )

Definition at line 920 of file closures.cpp.

References CLOSURE_FLOAT3_PARAM, color, label, and params.

◆ closure_bsdf_microfacet_multi_ggx_glass_fresnel_prepare()

void closure_bsdf_microfacet_multi_ggx_glass_fresnel_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_bsdf_microfacet_multi_ggx_glass_params()

OSL::ClosureParam* closure_bsdf_microfacet_multi_ggx_glass_params ( )

Definition at line 786 of file closures.cpp.

References CLOSURE_FLOAT3_PARAM, color, label, and params.

◆ closure_bsdf_microfacet_multi_ggx_glass_prepare()

void closure_bsdf_microfacet_multi_ggx_glass_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_bsdf_microfacet_multi_ggx_params()

OSL::ClosureParam* closure_bsdf_microfacet_multi_ggx_params ( )

Definition at line 723 of file closures.cpp.

References CLOSURE_FLOAT3_PARAM, color, label, and params.

◆ closure_bsdf_microfacet_multi_ggx_prepare()

void closure_bsdf_microfacet_multi_ggx_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_bsdf_microfacet_params()

OSL::ClosureParam* closure_bsdf_microfacet_params ( )

Definition at line 555 of file closures.cpp.

References CLOSURE_FLOAT3_PARAM, label, params, and refract().

◆ closure_bsdf_microfacet_prepare()

void closure_bsdf_microfacet_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_bsdf_phong_ramp_params()

OSL::ClosureParam* closure_bsdf_phong_ramp_params ( )

Definition at line 52 of file bsdf_phong_ramp.cpp.

References CLOSURE_FLOAT3_PARAM, label, and params.

◆ closure_bsdf_phong_ramp_prepare()

void closure_bsdf_phong_ramp_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_bsdf_principled_clearcoat_params()

OSL::ClosureParam* closure_bsdf_principled_clearcoat_params ( )

Definition at line 299 of file closures.cpp.

References usdtokens::clearcoat(), CLOSURE_FLOAT3_PARAM, label, and params.

◆ closure_bsdf_principled_clearcoat_prepare()

void closure_bsdf_principled_clearcoat_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_bsdf_principled_hair_prepare()

void closure_bsdf_principled_hair_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_bsdf_transparent_params()

OSL::ClosureParam* closure_bsdf_transparent_params ( )

Definition at line 948 of file closures.cpp.

References label, and params.

◆ closure_bsdf_transparent_prepare()

void closure_bsdf_transparent_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_bssrdf_params()

OSL::ClosureParam* closure_bssrdf_params ( )

Definition at line 83 of file bssrdf.cpp.

References CLOSURE_FLOAT3_PARAM, usdtokens::ior(), label, and params.

◆ closure_bssrdf_prepare()

void closure_bssrdf_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_emission_params()

CCL_NAMESPACE_BEGIN OSL::ClosureParam* closure_emission_params ( )

Definition at line 41 of file emissive.cpp.

References label, and params.

◆ closure_emission_prepare()

void closure_emission_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_henyey_greenstein_params()

OSL::ClosureParam* closure_henyey_greenstein_params ( )

Definition at line 994 of file closures.cpp.

References label, and params.

◆ closure_henyey_greenstein_prepare()

void closure_henyey_greenstein_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)

◆ closure_holdout_params()

OSL::ClosureParam* closure_holdout_params ( )

Definition at line 65 of file kernel/osl/background.cpp.

References params.

◆ closure_holdout_prepare()

void closure_holdout_prepare ( OSL::RendererServices *  ,
int  id,
void data 
)