Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/closure/bsdf.h
| Show First 20 Lines • Show All 105 Lines • ▼ Show 20 Lines | |||||
| { | { | ||||
| cos_in = min(cos_in, 1.0f); | cos_in = min(cos_in, 1.0f); | ||||
| const float angle = fast_acosf(cos_in); | const float angle = fast_acosf(cos_in); | ||||
| const float val = max(cosf(angle * frequency_multiplier), 0.0f) / cos_in; | const float val = max(cosf(angle * frequency_multiplier), 0.0f) / cos_in; | ||||
| return val; | return val; | ||||
| } | } | ||||
| ccl_device_inline int bsdf_sample(ccl_global const KernelGlobals *kg, | ccl_device_inline int bsdf_sample(KernelGlobals kg, | ||||
| ccl_private ShaderData *sd, | ccl_private ShaderData *sd, | ||||
| ccl_private const ShaderClosure *sc, | ccl_private const ShaderClosure *sc, | ||||
| float randu, | float randu, | ||||
| float randv, | float randv, | ||||
| ccl_private float3 *eval, | ccl_private float3 *eval, | ||||
| ccl_private float3 *omega_in, | ccl_private float3 *omega_in, | ||||
| ccl_private differential3 *domega_in, | ccl_private differential3 *domega_in, | ||||
| ccl_private float *pdf) | ccl_private float *pdf) | ||||
| ▲ Show 20 Lines • Show All 339 Lines • ▼ Show 20 Lines | |||||
| } | } | ||||
| #ifndef __KERNEL_CUDA__ | #ifndef __KERNEL_CUDA__ | ||||
| ccl_device | ccl_device | ||||
| #else | #else | ||||
| ccl_device_inline | ccl_device_inline | ||||
| #endif | #endif | ||||
| float3 | float3 | ||||
| bsdf_eval(ccl_global const KernelGlobals *kg, | bsdf_eval(KernelGlobals kg, | ||||
| ccl_private ShaderData *sd, | ccl_private ShaderData *sd, | ||||
| ccl_private const ShaderClosure *sc, | ccl_private const ShaderClosure *sc, | ||||
| const float3 omega_in, | const float3 omega_in, | ||||
| const bool is_transmission, | const bool is_transmission, | ||||
| ccl_private float *pdf) | ccl_private float *pdf) | ||||
| { | { | ||||
| float3 eval = zero_float3(); | float3 eval = zero_float3(); | ||||
| ▲ Show 20 Lines • Show All 168 Lines • ▼ Show 20 Lines | if (CLOSURE_IS_BSDF_DIFFUSE(sc->type)) { | ||||
| eval *= bump_shadowing_term(-sd->N, sc->N, omega_in); | eval *= bump_shadowing_term(-sd->N, sc->N, omega_in); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| return eval; | return eval; | ||||
| } | } | ||||
| ccl_device void bsdf_blur(ccl_global const KernelGlobals *kg, | ccl_device void bsdf_blur(KernelGlobals kg, ccl_private ShaderClosure *sc, float roughness) | ||||
| ccl_private ShaderClosure *sc, | |||||
| float roughness) | |||||
| { | { | ||||
| /* TODO: do we want to blur volume closures? */ | /* TODO: do we want to blur volume closures? */ | ||||
| #ifdef __SVM__ | #ifdef __SVM__ | ||||
| switch (sc->type) { | switch (sc->type) { | ||||
| case CLOSURE_BSDF_MICROFACET_MULTI_GGX_ID: | case CLOSURE_BSDF_MICROFACET_MULTI_GGX_ID: | ||||
| case CLOSURE_BSDF_MICROFACET_MULTI_GGX_FRESNEL_ID: | case CLOSURE_BSDF_MICROFACET_MULTI_GGX_FRESNEL_ID: | ||||
| case CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_ID: | case CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_ID: | ||||
| case CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_FRESNEL_ID: | case CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_FRESNEL_ID: | ||||
| Show All 25 Lines | |||||