9 #include <OSL/genclosure.h>
10 #include <OSL/oslclosure.h>
235 sd->flag |= (bsdf) ? bsdf_principled_hair_setup(sd, bsdf) : 0;
279 bsdf->
alpha_x = clearcoat_roughness;
280 bsdf->
alpha_y = clearcoat_roughness;
301 static ClosureParam
params[] = {
316 OSL::ClosureParam *
params,
317 OSL::PrepareClosureFunc
prepare)
322 #if OSL_LIBRARY_VERSION_CODE >= 10900
329 void OSLShader::register_closures(OSLShadingSystem *ss_)
334 register_closure(ss,
"diffuse",
id++, bsdf_diffuse_params(), bsdf_diffuse_prepare);
335 register_closure(ss,
"oren_nayar",
id++, bsdf_oren_nayar_params(), bsdf_oren_nayar_prepare);
336 register_closure(ss,
"translucent",
id++, bsdf_translucent_params(), bsdf_translucent_prepare);
337 register_closure(ss,
"reflection",
id++, bsdf_reflection_params(), bsdf_reflection_prepare);
338 register_closure(ss,
"refraction",
id++, bsdf_refraction_params(), bsdf_refraction_prepare);
350 bsdf_microfacet_ggx_isotropic_params(),
351 bsdf_microfacet_ggx_isotropic_prepare);
353 ss,
"microfacet_ggx_aniso",
id++, bsdf_microfacet_ggx_params(), bsdf_microfacet_ggx_prepare);
355 "microfacet_ggx_refraction",
357 bsdf_microfacet_ggx_refraction_params(),
358 bsdf_microfacet_ggx_refraction_prepare);
360 "microfacet_multi_ggx",
365 "microfacet_multi_ggx_glass",
370 "microfacet_multi_ggx_aniso",
375 "microfacet_ggx_fresnel",
380 "microfacet_ggx_aniso_fresnel",
385 "microfacet_multi_ggx_fresnel",
390 "microfacet_multi_ggx_glass_fresnel",
395 "microfacet_multi_ggx_aniso_fresnel",
400 "microfacet_beckmann",
402 bsdf_microfacet_beckmann_isotropic_params(),
403 bsdf_microfacet_beckmann_isotropic_prepare);
405 "microfacet_beckmann_aniso",
407 bsdf_microfacet_beckmann_params(),
408 bsdf_microfacet_beckmann_prepare);
410 "microfacet_beckmann_refraction",
412 bsdf_microfacet_beckmann_refraction_params(),
413 bsdf_microfacet_beckmann_refraction_prepare);
417 bsdf_ashikhmin_shirley_params(),
418 bsdf_ashikhmin_shirley_prepare);
420 ss,
"ashikhmin_velvet",
id++, bsdf_ashikhmin_velvet_params(), bsdf_ashikhmin_velvet_prepare);
422 ss,
"diffuse_toon",
id++, bsdf_diffuse_toon_params(), bsdf_diffuse_toon_prepare);
423 register_closure(ss,
"glossy_toon",
id++, bsdf_glossy_toon_params(), bsdf_glossy_toon_prepare);
425 "principled_diffuse",
427 bsdf_principled_diffuse_params(),
428 bsdf_principled_diffuse_prepare);
433 closure_bsdf_principled_sheen_prepare);
435 "principled_clearcoat",
454 ss,
"hair_reflection",
id++, bsdf_hair_reflection_params(), bsdf_hair_reflection_prepare);
458 bsdf_hair_transmission_params(),
459 bsdf_hair_transmission_prepare);
503 static ustring u_ggx(
"ggx");
504 static ustring u_default(
"default");
521 if (distribution == u_ggx || distribution == u_default) {
626 static ClosureParam
params[] = {
655 static ClosureParam
params[] = {
725 static ClosureParam
params[] = {
753 static ClosureParam
params[] = {
788 static ClosureParam
params[] = {
854 static ClosureParam
params[] = {
884 static ClosureParam
params[] = {
922 static ClosureParam
params[] = {
996 static ClosureParam
params[] = {
static void prepare(Render *re, ViewLayer *view_layer, Depsgraph *depsgraph)
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert a color
ccl_device ccl_private void * closure_alloc_extra(ccl_private ShaderData *sd, int size)
ClosureParam * closure_bsdf_diffuse_ramp_params()
ccl_device int bsdf_microfacet_beckmann_isotropic_setup(ccl_private MicrofacetBsdf *bsdf)
ccl_device int bsdf_microfacet_beckmann_setup(ccl_private MicrofacetBsdf *bsdf)
ccl_device int bsdf_microfacet_ggx_fresnel_setup(ccl_private MicrofacetBsdf *bsdf, ccl_private const ShaderData *sd)
ccl_device int bsdf_microfacet_ggx_clearcoat_setup(ccl_private MicrofacetBsdf *bsdf, ccl_private const ShaderData *sd)
ccl_device int bsdf_microfacet_beckmann_refraction_setup(ccl_private MicrofacetBsdf *bsdf)
ccl_device int bsdf_microfacet_ggx_setup(ccl_private MicrofacetBsdf *bsdf)
ccl_device int bsdf_microfacet_ggx_isotropic_setup(ccl_private MicrofacetBsdf *bsdf)
ccl_device int bsdf_microfacet_ggx_refraction_setup(ccl_private MicrofacetBsdf *bsdf)
ccl_device int bsdf_microfacet_multi_ggx_glass_fresnel_setup(ccl_private MicrofacetBsdf *bsdf, ccl_private const ShaderData *sd)
ccl_device int bsdf_microfacet_multi_ggx_setup(ccl_private MicrofacetBsdf *bsdf)
ccl_device int bsdf_microfacet_multi_ggx_glass_setup(ccl_private MicrofacetBsdf *bsdf)
ccl_device int bsdf_microfacet_multi_ggx_fresnel_setup(ccl_private MicrofacetBsdf *bsdf, ccl_private const ShaderData *sd)
ClosureParam * closure_bsdf_phong_ramp_params()
ccl_device int bsdf_principled_sheen_setup(ccl_private const ShaderData *sd, ccl_private PrincipledSheenBsdf *bsdf)
CCL_NAMESPACE_BEGIN ccl_device void bsdf_transparent_setup(ccl_private ShaderData *sd, const float3 weight, uint32_t path_flag)
ccl_device float3 ensure_valid_reflection(float3 Ng, float3 I, float3 N)
ClosureParam * closure_bssrdf_params()
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
bool skip(const ShaderData *sd, uint32_t path_flag, int scattering)
void setup(ShaderData *sd, uint32_t path_flag, float3 weight)
MicrofacetBsdf * alloc(ShaderData *sd, uint32_t path_flag, float3 weight)
void setup(ShaderData *sd, uint32_t path_flag, float3 weight)
void setup(ShaderData *sd, uint32_t path_flag, float3 weight)
MicrofacetBsdf * alloc(ShaderData *sd, uint32_t path_flag, float3 weight)
MicrofacetBsdf * alloc(ShaderData *sd, uint32_t path_flag, float3 weight)
void setup(ShaderData *sd, uint32_t path_flag, float3 weight)
void setup(ShaderData *sd, uint32_t path_flag, float3 weight)
void setup(ShaderData *sd, uint32_t path_flag, float3 weight)
void setup(ShaderData *sd, uint32_t path_flag, float3 weight)
void setup(ShaderData *sd, uint32_t path_flag, float3 weight)
MicrofacetMultiGGXGlassClosure()
MicrofacetMultiGGXGlassFresnelClosure()
void setup(ShaderData *sd, uint32_t path_flag, float3 weight)
void setup(ShaderData *sd, uint32_t path_flag, float3 weight)
MicrofacetBsdf * alloc(ShaderData *sd, uint32_t path_flag, float3 weight)
PrincipledHairBSDF * alloc(ShaderData *sd, uint32_t path_flag, float3 weight)
void setup(ShaderData *sd, uint32_t path_flag, float3 weight)
PrincipledHairBSDF params
PrincipledSheenBsdf params
void setup(ShaderData *sd, uint32_t path_flag, float3 weight)
void setup(ShaderData *sd, uint32_t path_flag, float3 weight)
void setup(ShaderData *sd, uint32_t path_flag, float3 weight)
void setup(ShaderData *sd, uint32_t path_flag, float3 weight)
HenyeyGreensteinVolume params
ClosureParam * closure_bsdf_microfacet_multi_ggx_aniso_params()
BSDF_CLOSURE_CLASS_BEGIN(AshikhminShirley, ashikhmin_shirley, MicrofacetBsdf, LABEL_GLOSSY|LABEL_REFLECT) BSDF_CLOSURE_CLASS_BEGIN(MicrofacetGGXIsotropic
ClosureParam * closure_bsdf_microfacet_multi_ggx_params()
static ClosureParam * bsdf_principled_sheen_params()
ClosureParam * closure_bsdf_transparent_params()
LABEL_GLOSSY LABEL_REFLECT LABEL_GLOSSY LABEL_REFLECT microfacet_ggx_refraction
ClosureParam * closure_bsdf_principled_clearcoat_params()
ClosureParam * closure_bsdf_microfacet_multi_ggx_glass_params()
ClosureParam * closure_absorption_params()
ClosureParam * closure_henyey_greenstein_params()
LABEL_GLOSSY LABEL_REFLECT microfacet_beckmann_isotropic
CCLOSURE_PREPARE(closure_bsdf_microfacet_ggx_fresnel_prepare, MicrofacetGGXFresnelClosure)
static void register_closure(OSL::ShadingSystem *ss, const char *name, int id, OSL::ClosureParam *params, OSL::PrepareClosureFunc prepare)
static ClosureParam * closure_bsdf_principled_hair_params()
ClosureParam * closure_bsdf_microfacet_multi_ggx_aniso_fresnel_params()
ClosureParam * closure_bsdf_microfacet_params()
LABEL_GLOSSY LABEL_REFLECT LABEL_GLOSSY LABEL_REFLECT LABEL_GLOSSY LABEL_TRANSMIT principled_diffuse
ClosureParam * closure_bsdf_microfacet_ggx_fresnel_params()
ClosureParam * closure_bsdf_microfacet_multi_ggx_glass_fresnel_params()
ClosureParam * closure_bsdf_microfacet_ggx_aniso_fresnel_params()
ClosureParam * closure_bsdf_microfacet_multi_ggx_fresnel_params()
#define CCLOSURE_PREPARE_STATIC(name, classname)
void closure_bssrdf_prepare(OSL::RendererServices *, int id, void *data)
void closure_emission_prepare(OSL::RendererServices *, int id, void *data)
#define CLOSURE_FLOAT3_PARAM(st, fld)
CCL_NAMESPACE_BEGIN OSL::ClosureParam * closure_emission_params()
void closure_bsdf_transparent_prepare(OSL::RendererServices *, int id, void *data)
void closure_bsdf_microfacet_multi_ggx_prepare(OSL::RendererServices *, int id, void *data)
void closure_bsdf_microfacet_prepare(OSL::RendererServices *, int id, void *data)
void closure_bsdf_principled_clearcoat_prepare(OSL::RendererServices *, int id, void *data)
void closure_bsdf_microfacet_ggx_fresnel_prepare(OSL::RendererServices *, int id, void *data)
#define BSDF_CLOSURE_FLOAT3_PARAM(st, fld)
void closure_bsdf_microfacet_multi_ggx_fresnel_prepare(OSL::RendererServices *, int id, void *data)
void closure_bsdf_microfacet_ggx_aniso_fresnel_prepare(OSL::RendererServices *, int id, void *data)
#define BSDF_CLOSURE_FLOAT_PARAM(st, fld)
void closure_henyey_greenstein_prepare(OSL::RendererServices *, int id, void *data)
void closure_bsdf_principled_hair_prepare(OSL::RendererServices *, int id, void *data)
void closure_background_prepare(OSL::RendererServices *, int id, void *data)
void closure_absorption_prepare(OSL::RendererServices *, int id, void *data)
void closure_bsdf_phong_ramp_prepare(OSL::RendererServices *, int id, void *data)
void closure_bsdf_microfacet_multi_ggx_aniso_prepare(OSL::RendererServices *, int id, void *data)
#define BSDF_CLOSURE_CLASS_END(Upper, lower)
void closure_holdout_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_diffuse_ramp_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_fresnel_prepare(OSL::RendererServices *, int id, void *data)
#define CCL_NAMESPACE_END
ccl_device int volume_henyey_greenstein_setup(ccl_private HenyeyGreensteinVolume *volume)
CCL_NAMESPACE_BEGIN ccl_device void volume_extinction_setup(ccl_private ShaderData *sd, float3 weight)
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
ClosureParam * closure_holdout_params()
ClosureParam * closure_background_params()
ccl_device_inline float3 refract(const float3 incident, const float3 normal, const float eta)
static const pxr::TfToken clearcoat("clearcoat", pxr::TfToken::Immortal)
static const pxr::TfToken ior("ior", pxr::TfToken::Immortal)
static const pxr::TfToken roughness("roughness", pxr::TfToken::Immortal)
smooth(Type::FLOAT, "mask_weight")
closure color microfacet_ggx(normal N, float ag) BUILTIN
closure color diffuse_toon(normal N, float size, float smooth) BUILTIN
closure color hair_transmission(normal N, float roughnessu, float roughnessv, vector T, float offset) BUILTIN
closure color ashikhmin_velvet(normal N, float sigma) BUILTIN
closure color hair_reflection(normal N, float roughnessu, float roughnessv, vector T, float offset) BUILTIN
closure color microfacet_beckmann(normal N, float ab) BUILTIN
closure color ashikhmin_shirley(normal N, vector T, float ax, float ay) BUILTIN
closure color glossy_toon(normal N, float size, float smooth) BUILTIN
closure color microfacet_beckmann_refraction(normal N, float ab, float eta) BUILTIN
ccl_private MicrofacetExtra * extra
ccl_private PrincipledHairExtra * extra