Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-09-12 13:29:19 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-09-12 13:29:19 +0300
commit721c691a2750d9eb005343a9d2e25fdac6ff1493 (patch)
treea7a09278ca4988b0d2b2d2cf4bc024dfe1032ad4 /intern
parente9ffe9335057a4429d909c32a2b0bf03f3a03b3d (diff)
parentaa844ad676d2e9d4f72f773fde64712c8a794e5e (diff)
Merge branch 'master' into blender2.8
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/kernel/svm/svm_closure.h16
1 files changed, 12 insertions, 4 deletions
diff --git a/intern/cycles/kernel/svm/svm_closure.h b/intern/cycles/kernel/svm/svm_closure.h
index df879de1950..64bf8244999 100644
--- a/intern/cycles/kernel/svm/svm_closure.h
+++ b/intern/cycles/kernel/svm/svm_closure.h
@@ -258,7 +258,9 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
float3 spec_weight = weight * specular_weight;
MicrofacetBsdf *bsdf = (MicrofacetBsdf*)bsdf_alloc(sd, sizeof(MicrofacetBsdf), spec_weight);
- MicrofacetExtra *extra = (MicrofacetExtra*)closure_alloc_extra(sd, sizeof(MicrofacetExtra));
+ MicrofacetExtra *extra = (bsdf != NULL)
+ ? (MicrofacetExtra*)closure_alloc_extra(sd, sizeof(MicrofacetExtra))
+ : NULL;
if (bsdf && extra) {
bsdf->N = N;
@@ -308,7 +310,9 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
#endif
{
MicrofacetBsdf *bsdf = (MicrofacetBsdf*)bsdf_alloc(sd, sizeof(MicrofacetBsdf), glass_weight*fresnel);
- MicrofacetExtra *extra = (MicrofacetExtra*)closure_alloc_extra(sd, sizeof(MicrofacetExtra));
+ MicrofacetExtra *extra = (bsdf != NULL)
+ ? (MicrofacetExtra*)closure_alloc_extra(sd, sizeof(MicrofacetExtra))
+ : NULL;
if (bsdf && extra) {
bsdf->N = N;
@@ -355,7 +359,9 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
}
else { /* use multi-scatter GGX */
MicrofacetBsdf *bsdf = (MicrofacetBsdf*)bsdf_alloc(sd, sizeof(MicrofacetBsdf), glass_weight);
- MicrofacetExtra *extra = (MicrofacetExtra*)closure_alloc_extra(sd, sizeof(MicrofacetExtra));
+ MicrofacetExtra *extra = (bsdf != NULL)
+ ? (MicrofacetExtra*)closure_alloc_extra(sd, sizeof(MicrofacetExtra))
+ : NULL;
if(bsdf && extra) {
bsdf->N = N;
@@ -385,7 +391,9 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
#endif
if(clearcoat > CLOSURE_WEIGHT_CUTOFF) {
MicrofacetBsdf *bsdf = (MicrofacetBsdf*)bsdf_alloc(sd, sizeof(MicrofacetBsdf), weight);
- MicrofacetExtra *extra = (MicrofacetExtra*)closure_alloc_extra(sd, sizeof(MicrofacetExtra));
+ MicrofacetExtra *extra = (bsdf != NULL)
+ ? (MicrofacetExtra*)closure_alloc_extra(sd, sizeof(MicrofacetExtra))
+ : NULL;
if(bsdf && extra) {
bsdf->N = clearcoat_normal;