Blender V5.0
closures_template.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5#ifndef OSL_CLOSURE_STRUCT_BEGIN
6# define OSL_CLOSURE_STRUCT_BEGIN(Upper, lower)
7#endif
8#ifndef OSL_CLOSURE_STRUCT_END
9# define OSL_CLOSURE_STRUCT_END(Upper, lower)
10#endif
11#ifndef OSL_CLOSURE_STRUCT_MEMBER
12# define OSL_CLOSURE_STRUCT_MEMBER(Upper, TYPE, type, name, key)
13#endif
14#ifndef OSL_CLOSURE_STRUCT_ARRAY_MEMBER
15# define OSL_CLOSURE_STRUCT_ARRAY_MEMBER(Upper, TYPE, type, name, key, size)
16#endif
17
18OSL_CLOSURE_STRUCT_BEGIN(Diffuse, diffuse)
20OSL_CLOSURE_STRUCT_END(Diffuse, diffuse)
21
22/* Deprecated form, will be removed in OSL 2.0. */
23OSL_CLOSURE_STRUCT_BEGIN(OrenNayar, oren_nayar)
24 OSL_CLOSURE_STRUCT_MEMBER(OrenNayar, VECTOR, packed_float3, N, nullptr)
25 OSL_CLOSURE_STRUCT_MEMBER(OrenNayar, FLOAT, float, roughness, nullptr)
26OSL_CLOSURE_STRUCT_END(OrenNayar, oren_nayar)
27
28OSL_CLOSURE_STRUCT_BEGIN(OrenNayarDiffuseBSDF, oren_nayar_diffuse_bsdf)
29 OSL_CLOSURE_STRUCT_MEMBER(OrenNayarDiffuseBSDF, VECTOR, packed_float3, N, nullptr)
30 OSL_CLOSURE_STRUCT_MEMBER(OrenNayarDiffuseBSDF, VECTOR, packed_float3, albedo, nullptr)
31 OSL_CLOSURE_STRUCT_MEMBER(OrenNayarDiffuseBSDF, FLOAT, float, roughness, nullptr)
32OSL_CLOSURE_STRUCT_END(OrenNayarDiffuseBSDF, oren_nayar_diffuse_bsdf)
33
34OSL_CLOSURE_STRUCT_BEGIN(BurleyDiffuseBSDF, burley_diffuse_bsdf)
35 OSL_CLOSURE_STRUCT_MEMBER(BurleyDiffuseBSDF, VECTOR, packed_float3, N, NULL)
36 OSL_CLOSURE_STRUCT_MEMBER(BurleyDiffuseBSDF, VECTOR, packed_float3, albedo, NULL)
37 OSL_CLOSURE_STRUCT_MEMBER(BurleyDiffuseBSDF, FLOAT, float, roughness, NULL)
38OSL_CLOSURE_STRUCT_END(BurleyDiffuseBSDF, burley_diffuse_bsdf)
39
40OSL_CLOSURE_STRUCT_BEGIN(Translucent, translucent)
41 OSL_CLOSURE_STRUCT_MEMBER(Translucent, VECTOR, packed_float3, N, nullptr)
42OSL_CLOSURE_STRUCT_END(Translucent, translucent)
43
44OSL_CLOSURE_STRUCT_BEGIN(Reflection, reflection)
45 OSL_CLOSURE_STRUCT_MEMBER(Reflection, VECTOR, packed_float3, N, nullptr)
46OSL_CLOSURE_STRUCT_END(Reflection, reflection)
47
48OSL_CLOSURE_STRUCT_BEGIN(Refraction, refraction)
49 OSL_CLOSURE_STRUCT_MEMBER(Refraction, VECTOR, packed_float3, N, nullptr)
50 OSL_CLOSURE_STRUCT_MEMBER(Refraction, FLOAT, float, ior, nullptr)
51OSL_CLOSURE_STRUCT_END(Refraction, refraction)
52
53OSL_CLOSURE_STRUCT_BEGIN(Transparent, transparent)
54OSL_CLOSURE_STRUCT_END(Transparent, transparent)
55
57 OSL_CLOSURE_STRUCT_MEMBER(RayPortalBSDF, VECTOR, packed_float3, position, nullptr)
58 OSL_CLOSURE_STRUCT_MEMBER(RayPortalBSDF, VECTOR, packed_float3, direction, nullptr)
60
61OSL_CLOSURE_STRUCT_BEGIN(DielectricBSDF, dielectric_bsdf)
62 OSL_CLOSURE_STRUCT_MEMBER(DielectricBSDF, VECTOR, packed_float3, N, nullptr)
63 OSL_CLOSURE_STRUCT_MEMBER(DielectricBSDF, VECTOR, packed_float3, T, nullptr)
64 OSL_CLOSURE_STRUCT_MEMBER(DielectricBSDF, VECTOR, packed_float3, reflection_tint, nullptr)
66 OSL_CLOSURE_STRUCT_MEMBER(DielectricBSDF, FLOAT, float, alpha_x, nullptr)
67 OSL_CLOSURE_STRUCT_MEMBER(DielectricBSDF, FLOAT, float, alpha_y, nullptr)
68 OSL_CLOSURE_STRUCT_MEMBER(DielectricBSDF, FLOAT, float, ior, nullptr)
69 OSL_CLOSURE_STRUCT_MEMBER(DielectricBSDF, STRING, DeviceString, distribution, nullptr)
70 OSL_CLOSURE_STRUCT_MEMBER(DielectricBSDF, FLOAT, float, thinfilm_thickness, "thinfilm_thickness")
71 OSL_CLOSURE_STRUCT_MEMBER(DielectricBSDF, FLOAT, float, thinfilm_ior, "thinfilm_ior")
72OSL_CLOSURE_STRUCT_END(DielectricBSDF, dielectric_bsdf)
73
74OSL_CLOSURE_STRUCT_BEGIN(ConductorBSDF, conductor_bsdf)
75 OSL_CLOSURE_STRUCT_MEMBER(ConductorBSDF, VECTOR, packed_float3, N, nullptr)
76 OSL_CLOSURE_STRUCT_MEMBER(ConductorBSDF, VECTOR, packed_float3, T, nullptr)
77 OSL_CLOSURE_STRUCT_MEMBER(ConductorBSDF, FLOAT, float, alpha_x, nullptr)
78 OSL_CLOSURE_STRUCT_MEMBER(ConductorBSDF, FLOAT, float, alpha_y, nullptr)
79 OSL_CLOSURE_STRUCT_MEMBER(ConductorBSDF, VECTOR, packed_float3, ior, nullptr)
80 OSL_CLOSURE_STRUCT_MEMBER(ConductorBSDF, VECTOR, packed_float3, extinction, nullptr)
81 OSL_CLOSURE_STRUCT_MEMBER(ConductorBSDF, STRING, DeviceString, distribution, nullptr)
82 OSL_CLOSURE_STRUCT_MEMBER(ConductorBSDF, FLOAT, float, thinfilm_thickness, "thinfilm_thickness")
83 OSL_CLOSURE_STRUCT_MEMBER(ConductorBSDF, FLOAT, float, thinfilm_ior, "thinfilm_ior")
84OSL_CLOSURE_STRUCT_END(ConductorBSDF, conductor_bsdf)
85
86OSL_CLOSURE_STRUCT_BEGIN(GeneralizedSchlickBSDF, generalized_schlick_bsdf)
87 OSL_CLOSURE_STRUCT_MEMBER(GeneralizedSchlickBSDF, VECTOR, packed_float3, N, nullptr)
88 OSL_CLOSURE_STRUCT_MEMBER(GeneralizedSchlickBSDF, VECTOR, packed_float3, T, nullptr)
90 GeneralizedSchlickBSDF, VECTOR, packed_float3, reflection_tint, nullptr)
92 GeneralizedSchlickBSDF, VECTOR, packed_float3, transmission_tint, nullptr)
93 OSL_CLOSURE_STRUCT_MEMBER(GeneralizedSchlickBSDF, FLOAT, float, alpha_x, nullptr)
94 OSL_CLOSURE_STRUCT_MEMBER(GeneralizedSchlickBSDF, FLOAT, float, alpha_y, nullptr)
95 OSL_CLOSURE_STRUCT_MEMBER(GeneralizedSchlickBSDF, VECTOR, packed_float3, f0, nullptr)
96 OSL_CLOSURE_STRUCT_MEMBER(GeneralizedSchlickBSDF, VECTOR, packed_float3, f90, nullptr)
97 OSL_CLOSURE_STRUCT_MEMBER(GeneralizedSchlickBSDF, FLOAT, float, exponent, nullptr)
98 OSL_CLOSURE_STRUCT_MEMBER(GeneralizedSchlickBSDF, STRING, DeviceString, distribution, nullptr)
100 GeneralizedSchlickBSDF, FLOAT, float, thinfilm_thickness, "thinfilm_thickness")
101 OSL_CLOSURE_STRUCT_MEMBER(GeneralizedSchlickBSDF, FLOAT, float, thinfilm_ior, "thinfilm_ior")
102OSL_CLOSURE_STRUCT_END(GeneralizedSchlickBSDF, generalized_schlick_bsdf)
103
104OSL_CLOSURE_STRUCT_BEGIN(Microfacet, microfacet)
105 OSL_CLOSURE_STRUCT_MEMBER(Microfacet, STRING, DeviceString, distribution, nullptr)
106 OSL_CLOSURE_STRUCT_MEMBER(Microfacet, VECTOR, packed_float3, N, nullptr)
107 OSL_CLOSURE_STRUCT_MEMBER(Microfacet, VECTOR, packed_float3, T, nullptr)
108 OSL_CLOSURE_STRUCT_MEMBER(Microfacet, FLOAT, float, alpha_x, nullptr)
109 OSL_CLOSURE_STRUCT_MEMBER(Microfacet, FLOAT, float, alpha_y, nullptr)
110 OSL_CLOSURE_STRUCT_MEMBER(Microfacet, FLOAT, float, ior, nullptr)
111 OSL_CLOSURE_STRUCT_MEMBER(Microfacet, INT, int, refract, nullptr)
112OSL_CLOSURE_STRUCT_END(Microfacet, microfacet)
113
115 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetF82Tint, STRING, DeviceString, distribution, nullptr)
116 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetF82Tint, VECTOR, packed_float3, N, nullptr)
117 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetF82Tint, VECTOR, packed_float3, T, nullptr)
118 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetF82Tint, FLOAT, float, alpha_x, nullptr)
119 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetF82Tint, FLOAT, float, alpha_y, nullptr)
120 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetF82Tint, VECTOR, packed_float3, f0, nullptr)
121 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetF82Tint, VECTOR, packed_float3, f82, nullptr)
123 MicrofacetF82Tint, FLOAT, float, thinfilm_thickness, "thinfilm_thickness")
124 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetF82Tint, FLOAT, float, thinfilm_ior, "thinfilm_ior")
125OSL_CLOSURE_STRUCT_END(MicrofacetF82Tint, microfacet)
126
128 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetMultiGGXGlass, VECTOR, packed_float3, N, nullptr)
129 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetMultiGGXGlass, FLOAT, float, alpha_x, nullptr)
130 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetMultiGGXGlass, FLOAT, float, ior, nullptr)
131 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetMultiGGXGlass, VECTOR, packed_float3, color, nullptr)
133
135 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetMultiGGX, VECTOR, packed_float3, N, nullptr)
136 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetMultiGGX, VECTOR, packed_float3, T, nullptr)
137 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetMultiGGX, FLOAT, float, alpha_x, nullptr)
138 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetMultiGGX, FLOAT, float, alpha_y, nullptr)
139 OSL_CLOSURE_STRUCT_MEMBER(MicrofacetMultiGGX, VECTOR, packed_float3, color, nullptr)
141
143 OSL_CLOSURE_STRUCT_MEMBER(AshikhminVelvet, VECTOR, packed_float3, N, nullptr)
144 OSL_CLOSURE_STRUCT_MEMBER(AshikhminVelvet, FLOAT, float, sigma, nullptr)
146
149 OSL_CLOSURE_STRUCT_MEMBER(Sheen, FLOAT, float, roughness, nullptr)
151
152OSL_CLOSURE_STRUCT_BEGIN(SheenBSDF, sheen_bsdf)
153 OSL_CLOSURE_STRUCT_MEMBER(SheenBSDF, VECTOR, packed_float3, N, nullptr)
154 OSL_CLOSURE_STRUCT_MEMBER(SheenBSDF, VECTOR, packed_float3, albedo, nullptr)
155 OSL_CLOSURE_STRUCT_MEMBER(SheenBSDF, FLOAT, float, roughness, nullptr)
156OSL_CLOSURE_STRUCT_END(SheenBSDF, sheen_bsdf)
157
159 OSL_CLOSURE_STRUCT_MEMBER(DiffuseToon, VECTOR, packed_float3, N, nullptr)
160 OSL_CLOSURE_STRUCT_MEMBER(DiffuseToon, FLOAT, float, size, nullptr)
161 OSL_CLOSURE_STRUCT_MEMBER(DiffuseToon, FLOAT, float, smooth, nullptr)
163
165 OSL_CLOSURE_STRUCT_MEMBER(GlossyToon, VECTOR, packed_float3, N, nullptr)
166 OSL_CLOSURE_STRUCT_MEMBER(GlossyToon, FLOAT, float, size, nullptr)
167 OSL_CLOSURE_STRUCT_MEMBER(GlossyToon, FLOAT, float, smooth, nullptr)
169
170OSL_CLOSURE_STRUCT_BEGIN(GenericEmissive, emission)
171OSL_CLOSURE_STRUCT_END(GenericEmissive, emission)
172
173OSL_CLOSURE_STRUCT_BEGIN(GenericBackground, background)
174OSL_CLOSURE_STRUCT_END(GenericBackground, background)
175
176OSL_CLOSURE_STRUCT_BEGIN(UniformEDF, uniform_edf)
177 OSL_CLOSURE_STRUCT_MEMBER(UniformEDF, COLOR, packed_float3, emittance, nullptr)
178OSL_CLOSURE_STRUCT_END(UniformEDF, uniform_edf)
179
180OSL_CLOSURE_STRUCT_BEGIN(Holdout, holdout)
181OSL_CLOSURE_STRUCT_END(Holdout, holdout)
182
184 OSL_CLOSURE_STRUCT_MEMBER(DiffuseRamp, VECTOR, packed_float3, N, nullptr)
185 OSL_CLOSURE_STRUCT_ARRAY_MEMBER(DiffuseRamp, COLOR, packed_float3, colors, nullptr, 8)
187
189 OSL_CLOSURE_STRUCT_MEMBER(PhongRamp, VECTOR, packed_float3, N, nullptr)
190 OSL_CLOSURE_STRUCT_MEMBER(PhongRamp, FLOAT, float, exponent, nullptr)
191 OSL_CLOSURE_STRUCT_ARRAY_MEMBER(PhongRamp, COLOR, packed_float3, colors, nullptr, 8)
193
195 OSL_CLOSURE_STRUCT_MEMBER(BSSRDF, STRING, DeviceString, method, nullptr)
197 OSL_CLOSURE_STRUCT_MEMBER(BSSRDF, VECTOR, packed_float3, radius, nullptr)
198 OSL_CLOSURE_STRUCT_MEMBER(BSSRDF, VECTOR, packed_float3, albedo, nullptr)
199 OSL_CLOSURE_STRUCT_MEMBER(BSSRDF, FLOAT, float, roughness, "roughness")
200 OSL_CLOSURE_STRUCT_MEMBER(BSSRDF, FLOAT, float, ior, "ior")
201 OSL_CLOSURE_STRUCT_MEMBER(BSSRDF, FLOAT, float, anisotropy, "anisotropy")
203
204OSL_CLOSURE_STRUCT_BEGIN(SubsurfaceBSSRDF, subsurface_bssrdf)
205 OSL_CLOSURE_STRUCT_MEMBER(SubsurfaceBSSRDF, VECTOR, packed_float3, N, nullptr)
206 OSL_CLOSURE_STRUCT_MEMBER(SubsurfaceBSSRDF, VECTOR, packed_float3, albedo, nullptr)
207#if OSL_LIBRARY_VERSION_CODE >= 11401
208 OSL_CLOSURE_STRUCT_MEMBER(SubsurfaceBSSRDF, VECTOR, packed_float3, radius, nullptr)
209#else
210 OSL_CLOSURE_STRUCT_MEMBER(SubsurfaceBSSRDF, FLOAT, float, transmission_depth, nullptr)
211 OSL_CLOSURE_STRUCT_MEMBER(SubsurfaceBSSRDF, VECTOR, packed_float3, transmission_color, nullptr)
212#endif
213 OSL_CLOSURE_STRUCT_MEMBER(SubsurfaceBSSRDF, FLOAT, float, anisotropy, nullptr)
214OSL_CLOSURE_STRUCT_END(SubsurfaceBSSRDF, subsurface_bssrdf)
215
217 OSL_CLOSURE_STRUCT_MEMBER(HairReflection, VECTOR, packed_float3, N, nullptr)
218 OSL_CLOSURE_STRUCT_MEMBER(HairReflection, FLOAT, float, roughness1, nullptr)
219 OSL_CLOSURE_STRUCT_MEMBER(HairReflection, FLOAT, float, roughness2, nullptr)
220 OSL_CLOSURE_STRUCT_MEMBER(HairReflection, VECTOR, packed_float3, T, nullptr)
221 OSL_CLOSURE_STRUCT_MEMBER(HairReflection, FLOAT, float, offset, nullptr)
223
225 OSL_CLOSURE_STRUCT_MEMBER(HairTransmission, VECTOR, packed_float3, N, nullptr)
226 OSL_CLOSURE_STRUCT_MEMBER(HairTransmission, FLOAT, float, roughness1, nullptr)
227 OSL_CLOSURE_STRUCT_MEMBER(HairTransmission, FLOAT, float, roughness2, nullptr)
228 OSL_CLOSURE_STRUCT_MEMBER(HairReflection, VECTOR, packed_float3, T, nullptr)
229 OSL_CLOSURE_STRUCT_MEMBER(HairReflection, FLOAT, float, offset, nullptr)
231
233 OSL_CLOSURE_STRUCT_MEMBER(ChiangHair, VECTOR, packed_float3, N, nullptr)
234 OSL_CLOSURE_STRUCT_MEMBER(ChiangHair, VECTOR, packed_float3, sigma, nullptr)
235 OSL_CLOSURE_STRUCT_MEMBER(ChiangHair, FLOAT, float, v, nullptr)
236 OSL_CLOSURE_STRUCT_MEMBER(ChiangHair, FLOAT, float, s, nullptr)
237 OSL_CLOSURE_STRUCT_MEMBER(ChiangHair, FLOAT, float, m0_roughness, nullptr)
238 OSL_CLOSURE_STRUCT_MEMBER(ChiangHair, FLOAT, float, alpha, nullptr)
239 OSL_CLOSURE_STRUCT_MEMBER(ChiangHair, FLOAT, float, eta, nullptr)
241
243 OSL_CLOSURE_STRUCT_MEMBER(HuangHair, VECTOR, packed_float3, N, nullptr)
244 OSL_CLOSURE_STRUCT_MEMBER(HuangHair, VECTOR, packed_float3, sigma, nullptr)
245 OSL_CLOSURE_STRUCT_MEMBER(HuangHair, FLOAT, float, roughness, nullptr)
246 OSL_CLOSURE_STRUCT_MEMBER(HuangHair, FLOAT, float, tilt, nullptr)
247 OSL_CLOSURE_STRUCT_MEMBER(HuangHair, FLOAT, float, eta, nullptr)
248 OSL_CLOSURE_STRUCT_MEMBER(HuangHair, FLOAT, float, aspect_ratio, nullptr)
249 OSL_CLOSURE_STRUCT_MEMBER(HuangHair, FLOAT, float, r_lobe, nullptr)
250 OSL_CLOSURE_STRUCT_MEMBER(HuangHair, FLOAT, float, tt_lobe, nullptr)
251 OSL_CLOSURE_STRUCT_MEMBER(HuangHair, FLOAT, float, trt_lobe, nullptr)
253
254OSL_CLOSURE_STRUCT_BEGIN(VolumeAbsorption, absorption)
255OSL_CLOSURE_STRUCT_END(VolumeAbsorption, absorption)
256
257OSL_CLOSURE_STRUCT_BEGIN(VolumeHenyeyGreenstein, henyey_greenstein)
258 OSL_CLOSURE_STRUCT_MEMBER(VolumeHenyeyGreenstein, FLOAT, float, g, nullptr)
259OSL_CLOSURE_STRUCT_END(VolumeHenyeyGreenstein, henyey_greenstein)
260
261OSL_CLOSURE_STRUCT_BEGIN(VolumeFournierForand, fournier_forand)
262 OSL_CLOSURE_STRUCT_MEMBER(VolumeFournierForand, FLOAT, float, B, nullptr)
263 OSL_CLOSURE_STRUCT_MEMBER(VolumeFournierForand, FLOAT, float, IOR, nullptr)
264OSL_CLOSURE_STRUCT_END(VolumeFournierForand, fournier_forand)
265
266OSL_CLOSURE_STRUCT_BEGIN(VolumeDraine, draine)
267 OSL_CLOSURE_STRUCT_MEMBER(VolumeDraine, FLOAT, float, g, nullptr)
268 OSL_CLOSURE_STRUCT_MEMBER(VolumeDraine, FLOAT, float, alpha, nullptr)
269OSL_CLOSURE_STRUCT_END(VolumeDraine, draine)
270
271OSL_CLOSURE_STRUCT_BEGIN(VolumeRayleigh, rayleigh)
272OSL_CLOSURE_STRUCT_END(VolumeRayleigh, rayleigh)
273
274#undef OSL_CLOSURE_STRUCT_BEGIN
275#undef OSL_CLOSURE_STRUCT_END
276#undef OSL_CLOSURE_STRUCT_MEMBER
277#undef OSL_CLOSURE_STRUCT_ARRAY_MEMBER
ATTR_WARN_UNUSED_RESULT const BMVert * v
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
#define OSL_CLOSURE_STRUCT_ARRAY_MEMBER(Upper, TYPE, type, name, key, size)
Definition closures.cpp:55
#define OSL_CLOSURE_STRUCT_BEGIN(Upper, lower)
Definition closures.cpp:43
#define OSL_CLOSURE_STRUCT_MEMBER(Upper, TYPE, type, name, key)
Definition closures.cpp:53
#define OSL_CLOSURE_STRUCT_END(Upper, lower)
Definition closures.cpp:47
nullptr FLOAT
nullptr thinfilm_thickness
#define OSL_CLOSURE_STRUCT_BEGIN(Upper, lower)
#define OSL_CLOSURE_STRUCT_MEMBER(Upper, TYPE, type, name, key)
transmission_tint
VecBase< T, D > refract(VecOp< T, D >, VecOp< T, D >, float) RET
const char * DeviceString
#define N
#define T
#define B
closure color absorption() BUILTIN
closure color fournier_forand(float B, float IOR) BUILTIN
closure color phong_ramp(normal N, float exponent, color colors[8]) BUILTIN
closure color microfacet_multi_ggx_glass(normal N, float ag, float eta, color C) BUILTIN
closure color ray_portal_bsdf(vector position, vector direction) BUILTIN
closure color hair_chiang(normal N, color sigma, float roughnessu, float roughnessv, float coat, float alpha, float eta) BUILTIN
closure color diffuse_toon(normal N, float size, float smooth) BUILTIN
closure color henyey_greenstein(float g) BUILTIN
closure color microfacet_multi_ggx_aniso(normal N, vector T, float ax, float ay, color C) 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 diffuse_ramp(normal N, color colors[8]) BUILTIN
closure color bssrdf(string method, normal N, vector radius, color albedo) BUILTIN
closure color hair_huang(normal N, color sigma, float roughness, float tilt, float eta, float aspect_ratio, float r_lobe, float tt_lobe, float trt_lobe) BUILTIN
closure color sheen(normal N, float roughness) BUILTIN
closure color hair_reflection(normal N, float roughnessu, float roughnessv, vector T, float offset) BUILTIN
closure color microfacet_f82_tint(string distribution, vector N, vector T, float ax, float ay, color f0, color f82) BUILTIN
closure color rayleigh() BUILTIN
closure color draine(float g, float alpha) BUILTIN
closure color glossy_toon(normal N, float size, float smooth) BUILTIN