[Bf-blender-cvs] [3235b657cd4] cycles_path_guiding: Cycles-X: clamping bsdf weights to be >= 0 and changing default value of eta to 1.0
Sebastian Herholz
noreply at git.blender.org
Fri Jun 24 13:09:15 CEST 2022
Commit: 3235b657cd48945f8ace33e8d3eb21f916f7ef6d
Author: Sebastian Herholz
Date: Thu Jun 23 20:24:15 2022 +0200
Branches: cycles_path_guiding
https://developer.blender.org/rB3235b657cd48945f8ace33e8d3eb21f916f7ef6d
Cycles-X: clamping bsdf weights to be >= 0 and changing default value of eta to 1.0
===================================================================
M intern/cycles/kernel/osl/closures.cpp
M intern/cycles/kernel/svm/closure.h
===================================================================
diff --git a/intern/cycles/kernel/osl/closures.cpp b/intern/cycles/kernel/osl/closures.cpp
index 7c6b48154e4..6d0c2c9c609 100644
--- a/intern/cycles/kernel/osl/closures.cpp
+++ b/intern/cycles/kernel/osl/closures.cpp
@@ -713,7 +713,7 @@ class MicrofacetMultiGGXClosure : public MicrofacetMultiClosure {
return;
}
- bsdf->ior = 0.0f;
+ bsdf->ior = 1.0f;
bsdf->T = make_float3(0.0f, 0.0f, 0.0f);
bsdf->alpha_y = bsdf->alpha_x;
sd->flag |= bsdf_microfacet_multi_ggx_setup(bsdf);
@@ -743,7 +743,7 @@ class MicrofacetMultiGGXAnisoClosure : public MicrofacetMultiClosure {
return;
}
- bsdf->ior = 0.0f;
+ bsdf->ior = 1.0f;
sd->flag |= bsdf_microfacet_multi_ggx_setup(bsdf);
}
};
diff --git a/intern/cycles/kernel/svm/closure.h b/intern/cycles/kernel/svm/closure.h
index 305bd404d27..be828c76665 100644
--- a/intern/cycles/kernel/svm/closure.h
+++ b/intern/cycles/kernel/svm/closure.h
@@ -24,7 +24,7 @@ ccl_device void svm_node_glass_setup(ccl_private ShaderData *sd,
else {
bsdf->alpha_y = 0.0f;
bsdf->alpha_x = 0.0f;
- bsdf->ior = 0.0f;
+ bsdf->ior = eta;
sd->flag |= bsdf_reflection_setup(bsdf);
}
}
@@ -541,7 +541,8 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
float roughness = sqr(param1);
bsdf->N = N;
- bsdf->ior = 0.0f;
+ // TODO (sherholz): this should be set to the correct eta
+ bsdf->ior = 1.0f;
bsdf->extra = NULL;
if (data_node.y == SVM_STACK_INVALID) {
@@ -1197,6 +1198,10 @@ ccl_device void svm_node_closure_weight(ccl_private ShaderData *sd,
uint weight_offset)
{
float3 weight = stack_load_float3(stack, weight_offset);
+ weight.x = max(0.f, weight.x);
+ weight.y = max(0.f, weight.y);
+ weight.z = max(0.f, weight.z);
+ assert(weight.x >= 0.f && weight.y >= 0.f && weight.z >= 0.f);
svm_node_closure_store_weight(sd, weight);
}
More information about the Bf-blender-cvs
mailing list