diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-04-21 13:56:54 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-04-21 15:41:42 +0300 |
commit | 9781139590dbbeb6d246d4fbafa8ab1a4696c7fb (patch) | |
tree | 9275a763d008ecbe1d11249371897c6ec99a46d7 /intern/cycles/kernel/closure/bssrdf.h | |
parent | b6da2a6a86fb948f11f9147c5ed722a064673e6d (diff) |
Cycles: Solve speed regression of classroom scene after principled commit
This way we can skip it from compiling into OpenCL kernels by making
this shader compile-time feature.
Diffstat (limited to 'intern/cycles/kernel/closure/bssrdf.h')
-rw-r--r-- | intern/cycles/kernel/closure/bssrdf.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/intern/cycles/kernel/closure/bssrdf.h b/intern/cycles/kernel/closure/bssrdf.h index 8363cef53c8..f9236a6e52c 100644 --- a/intern/cycles/kernel/closure/bssrdf.h +++ b/intern/cycles/kernel/closure/bssrdf.h @@ -362,6 +362,7 @@ ccl_device int bssrdf_setup(Bssrdf *bssrdf, ClosureType type) if(bssrdf->radius < BSSRDF_MIN_RADIUS) { /* revert to diffuse BSDF if radius too small */ int flag; +#ifdef __PRINCIPLED__ if(type == CLOSURE_BSSRDF_PRINCIPLED_ID) { float roughness = bssrdf->roughness; float3 N = bssrdf->N; @@ -377,7 +378,9 @@ ccl_device int bssrdf_setup(Bssrdf *bssrdf, ClosureType type) flag = bsdf_principled_diffuse_setup(bsdf); bsdf->type = CLOSURE_BSDF_BSSRDF_PRINCIPLED_ID; } - else { + else +#endif /* __PRINCIPLED__ */ + { DiffuseBsdf *bsdf = (DiffuseBsdf*)bssrdf; bsdf->N = bssrdf->N; flag = bsdf_diffuse_setup(bsdf); @@ -391,7 +394,9 @@ ccl_device int bssrdf_setup(Bssrdf *bssrdf, ClosureType type) bssrdf->sharpness = saturate(bssrdf->sharpness); bssrdf->type = type; - if(type == CLOSURE_BSSRDF_BURLEY_ID || type == CLOSURE_BSSRDF_PRINCIPLED_ID) { + if(type == CLOSURE_BSSRDF_BURLEY_ID || + type == CLOSURE_BSSRDF_PRINCIPLED_ID) + { bssrdf_burley_setup(bssrdf); } |