33 #include <OSL/genclosure.h>
34 #include <OSL/oslclosure.h>
125 microfacet_ggx_isotropic,
143 microfacet_beckmann_isotropic,
257 sd->flag |= (bsdf) ? bsdf_principled_hair_setup(sd, bsdf) : 0;
301 bsdf->
alpha_x = clearcoat_roughness;
302 bsdf->
alpha_y = clearcoat_roughness;
322 static ClosureParam
params[] = {
337 OSL::ClosureParam *
params,
338 OSL::PrepareClosureFunc
prepare)
343 #if OSL_LIBRARY_VERSION_CODE >= 10900
350 void OSLShader::register_closures(OSLShadingSystem *ss_)
355 register_closure(ss,
"diffuse",
id++, bsdf_diffuse_params(), bsdf_diffuse_prepare);
356 register_closure(ss,
"oren_nayar",
id++, bsdf_oren_nayar_params(), bsdf_oren_nayar_prepare);
357 register_closure(ss,
"translucent",
id++, bsdf_translucent_params(), bsdf_translucent_prepare);
358 register_closure(ss,
"reflection",
id++, bsdf_reflection_params(), bsdf_reflection_prepare);
359 register_closure(ss,
"refraction",
id++, bsdf_refraction_params(), bsdf_refraction_prepare);
371 bsdf_microfacet_ggx_isotropic_params(),
372 bsdf_microfacet_ggx_isotropic_prepare);
374 ss,
"microfacet_ggx_aniso",
id++, bsdf_microfacet_ggx_params(), bsdf_microfacet_ggx_prepare);
376 "microfacet_ggx_refraction",
378 bsdf_microfacet_ggx_refraction_params(),
379 bsdf_microfacet_ggx_refraction_prepare);
381 "microfacet_multi_ggx",
386 "microfacet_multi_ggx_glass",
391 "microfacet_multi_ggx_aniso",
396 "microfacet_ggx_fresnel",
401 "microfacet_ggx_aniso_fresnel",
406 "microfacet_multi_ggx_fresnel",
411 "microfacet_multi_ggx_glass_fresnel",
416 "microfacet_multi_ggx_aniso_fresnel",
421 "microfacet_beckmann",
423 bsdf_microfacet_beckmann_isotropic_params(),
424 bsdf_microfacet_beckmann_isotropic_prepare);
426 "microfacet_beckmann_aniso",
428 bsdf_microfacet_beckmann_params(),
429 bsdf_microfacet_beckmann_prepare);
431 "microfacet_beckmann_refraction",
433 bsdf_microfacet_beckmann_refraction_params(),
434 bsdf_microfacet_beckmann_refraction_prepare);
438 bsdf_ashikhmin_shirley_params(),
439 bsdf_ashikhmin_shirley_prepare);
441 ss,
"ashikhmin_velvet",
id++, bsdf_ashikhmin_velvet_params(), bsdf_ashikhmin_velvet_prepare);
443 ss,
"diffuse_toon",
id++, bsdf_diffuse_toon_params(), bsdf_diffuse_toon_prepare);
444 register_closure(ss,
"glossy_toon",
id++, bsdf_glossy_toon_params(), bsdf_glossy_toon_prepare);
446 "principled_diffuse",
448 bsdf_principled_diffuse_params(),
449 bsdf_principled_diffuse_prepare);
454 closure_bsdf_principled_sheen_prepare);
456 "principled_clearcoat",
475 ss,
"hair_reflection",
id++, bsdf_hair_reflection_params(), bsdf_hair_reflection_prepare);
479 bsdf_hair_transmission_params(),
480 bsdf_hair_transmission_prepare);
503 KernelGlobals *
kg = sd->osl_globals;
524 static ustring u_ggx(
"ggx");
525 static ustring u_default(
"default");
540 if (distribution == u_ggx || distribution == u_default) {
643 static ClosureParam
params[] = {
670 static ClosureParam
params[] = {
738 static ClosureParam
params[] = {
764 static ClosureParam
params[] = {
797 static ClosureParam
params[] = {
861 static ClosureParam
params[] = {
889 static ClosureParam
params[] = {
925 static ClosureParam
params[] = {
999 static ClosureParam
params[] = {
static void prepare(Render *re, ViewLayer *view_layer, Depsgraph *depsgraph)
ccl_device ccl_addr_space void * closure_alloc_extra(ShaderData *sd, int size)
ClosureParam * closure_bsdf_diffuse_ramp_params()
ccl_device int bsdf_microfacet_beckmann_setup(MicrofacetBsdf *bsdf)
ccl_device int bsdf_microfacet_ggx_refraction_setup(MicrofacetBsdf *bsdf)
ccl_device int bsdf_microfacet_ggx_fresnel_setup(MicrofacetBsdf *bsdf, const ShaderData *sd)
ccl_device int bsdf_microfacet_ggx_clearcoat_setup(MicrofacetBsdf *bsdf, const ShaderData *sd)
ccl_device int bsdf_microfacet_beckmann_refraction_setup(MicrofacetBsdf *bsdf)
ccl_device int bsdf_microfacet_ggx_isotropic_setup(MicrofacetBsdf *bsdf)
ccl_device int bsdf_microfacet_ggx_setup(MicrofacetBsdf *bsdf)
ccl_device int bsdf_microfacet_beckmann_isotropic_setup(MicrofacetBsdf *bsdf)
ccl_device int bsdf_microfacet_multi_ggx_fresnel_setup(MicrofacetBsdf *bsdf, const ShaderData *sd)
ccl_device int bsdf_microfacet_multi_ggx_setup(MicrofacetBsdf *bsdf)
ccl_device int bsdf_microfacet_multi_ggx_glass_fresnel_setup(MicrofacetBsdf *bsdf, const ShaderData *sd)
ccl_device int bsdf_microfacet_multi_ggx_glass_setup(MicrofacetBsdf *bsdf)
ClosureParam * closure_bsdf_phong_ramp_params()
ccl_device int bsdf_principled_sheen_setup(const ShaderData *sd, PrincipledSheenBsdf *bsdf)
CCL_NAMESPACE_BEGIN ccl_device void bsdf_transparent_setup(ShaderData *sd, const float3 weight, int path_flag)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
bool skip(const ShaderData *sd, int path_flag, int scattering)
void setup(ShaderData *sd, int path_flag, float3 weight)
MicrofacetBsdf * alloc(ShaderData *sd, int path_flag, float3 weight)
void setup(ShaderData *sd, int path_flag, float3 weight)
void setup(ShaderData *sd, int path_flag, float3 weight)
MicrofacetBsdf * alloc(ShaderData *sd, int path_flag, float3 weight)
MicrofacetBsdf * alloc(ShaderData *sd, int path_flag, float3 weight)
void setup(ShaderData *sd, int path_flag, float3 weight)
void setup(ShaderData *sd, int path_flag, float3 weight)
void setup(ShaderData *sd, int path_flag, float3 weight)
void setup(ShaderData *sd, int path_flag, float3 weight)
MicrofacetMultiGGXGlassClosure()
void setup(ShaderData *sd, int path_flag, float3 weight)
void setup(ShaderData *sd, int path_flag, float3 weight)
MicrofacetMultiGGXGlassFresnelClosure()
void setup(ShaderData *sd, int path_flag, float3 weight)
MicrofacetBsdf * alloc(ShaderData *sd, int path_flag, float3 weight)
void setup(ShaderData *sd, int path_flag, float3 weight)
PrincipledHairBSDF params
PrincipledHairBSDF * alloc(ShaderData *sd, int path_flag, float3 weight)
PrincipledSheenBsdf params
void setup(ShaderData *sd, int path_flag, float3 weight)
void setup(ShaderData *sd, int path_flag, float3 weight)
void setup(ShaderData *sd, int path_flag, float3 weight)
HenyeyGreensteinVolume params
void setup(ShaderData *sd, int path_flag, float3 weight)
ClosureParam * closure_emission_params()
CCL_NAMESPACE_BEGIN ccl_device void volume_extinction_setup(ShaderData *sd, float3 weight)
ccl_device int volume_henyey_greenstein_setup(HenyeyGreensteinVolume *volume)
ClosureParam * closure_holdout_params()
ClosureParam * closure_background_params()
#define CCL_NAMESPACE_END
#define make_float3(x, y, z)
static const pxr::TfToken roughness("roughness", pxr::TfToken::Immortal)
ClosureParam * closure_bssrdf_params()
ClosureParam * closure_bsdf_microfacet_multi_ggx_aniso_params()
CLOSURE_FLOAT3_PARAM(DiffuseClosure, params.N)
ClosureParam * closure_bsdf_microfacet_multi_ggx_params()
static ClosureParam * bsdf_principled_sheen_params()
ClosureParam * closure_bsdf_transparent_params()
ClosureParam * closure_bsdf_principled_clearcoat_params()
ClosureParam * closure_bsdf_microfacet_multi_ggx_glass_params()
ClosureParam * closure_absorption_params()
ClosureParam * closure_henyey_greenstein_params()
CCLOSURE_PREPARE(closure_bsdf_microfacet_ggx_fresnel_prepare, MicrofacetGGXFresnelClosure)
BSDF_CLOSURE_CLASS_BEGIN(AshikhminShirley, ashikhmin_shirley, MicrofacetBsdf, LABEL_GLOSSY|LABEL_REFLECT) CLOSURE_FLOAT3_PARAM(AshikhminShirleyClosure
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()
CLOSURE_FLOAT_PARAM(OrenNayarClosure, params.roughness)
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)
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)
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)
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)
closure color microfacet_ggx(normal N, float ag) BUILTIN
closure color principled_diffuse(normal N, float roughness) 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 microfacet_ggx_refraction(normal N, float ag, float eta) 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
PrincipledHairExtra * extra
ccl_device_inline float3 refract(const float3 incident, const float3 normal, const float eta)