Blender  V2.93
Classes | Macros | Functions
osl_closures.h File Reference
#include "kernel/kernel_types.h"
#include "util/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 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, int path_flag, float3 weight) \
{ \
if (!skip(sd, path_flag, TYPE)) { \
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[] = {
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
ShaderData
char Upper(char ch)
Definition: utility_io.cpp:142

Definition at line 128 of file osl_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)
const char * label
#define CCLOSURE_PREPARE_STATIC(name, classname)
Definition: osl_closures.h:101

Definition at line 150 of file osl_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 94 of file osl_closures.h.

◆ CCLOSURE_PREPARE_STATIC

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

Definition at line 101 of file osl_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

Definition at line 103 of file osl_closures.h.

◆ TO_COLOR3

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

Definition at line 109 of file osl_closures.h.

◆ TO_FLOAT3

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

Definition at line 110 of file osl_closures.h.

◆ TO_VEC3

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

Definition at line 108 of file osl_closures.h.

Function Documentation

◆ closure_absorption_params()

OSL::ClosureParam* closure_absorption_params ( )

Definition at line 970 of file osl_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 79 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 74 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 668 of file osl_closures.cpp.

References CLOSURE_FLOAT3_PARAM(), CLOSURE_FLOAT_PARAM(), 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 641 of file osl_closures.cpp.

References CLOSURE_FLOAT3_PARAM(), CLOSURE_FLOAT_PARAM(), 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 887 of file osl_closures.cpp.

References CLOSURE_FLOAT3_PARAM(), CLOSURE_FLOAT_PARAM(), 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 762 of file osl_closures.cpp.

References CLOSURE_FLOAT3_PARAM(), CLOSURE_FLOAT_PARAM(), 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 859 of file osl_closures.cpp.

References CLOSURE_FLOAT3_PARAM(), CLOSURE_FLOAT_PARAM(), 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 923 of file osl_closures.cpp.

References CLOSURE_FLOAT3_PARAM(), CLOSURE_FLOAT_PARAM(), 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 795 of file osl_closures.cpp.

References CLOSURE_FLOAT3_PARAM(), CLOSURE_FLOAT_PARAM(), 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 736 of file osl_closures.cpp.

References CLOSURE_FLOAT3_PARAM(), CLOSURE_FLOAT_PARAM(), 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 574 of file osl_closures.cpp.

References CLOSURE_FLOAT3_PARAM(), CLOSURE_FLOAT_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 73 of file bsdf_phong_ramp.cpp.

References CLOSURE_FLOAT3_PARAM, CLOSURE_FLOAT_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 320 of file osl_closures.cpp.

References CLOSURE_FLOAT3_PARAM(), CLOSURE_FLOAT_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 951 of file osl_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 118 of file osl_bssrdf.cpp.

References CLOSURE_FLOAT3_PARAM, 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 65 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 997 of file osl_closures.cpp.

References CLOSURE_FLOAT_PARAM(), 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 89 of file kernel/osl/background.cpp.

References params.

◆ closure_holdout_prepare()

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