[Bf-blender-cvs] [9098fab439a] cycles_path_guiding: Merge branch 'master' into cycles_path_guiding
Brecht Van Lommel
noreply at git.blender.org
Fri Sep 2 18:52:58 CEST 2022
Commit: 9098fab439ab9caa791d1b10d695eb3cfb1b55a7
Author: Brecht Van Lommel
Date: Fri Sep 2 18:21:15 2022 +0200
Branches: cycles_path_guiding
https://developer.blender.org/rB9098fab439ab9caa791d1b10d695eb3cfb1b55a7
Merge branch 'master' into cycles_path_guiding
===================================================================
===================================================================
diff --cc intern/cycles/integrator/path_trace_work_cpu.cpp
index 2f0219b29c3,518ef3185f9..13eafdeeb4a
--- a/intern/cycles/integrator/path_trace_work_cpu.cpp
+++ b/intern/cycles/integrator/path_trace_work_cpu.cpp
@@@ -6,7 -6,6 +6,7 @@@
#include "device/cpu/kernel.h"
#include "device/device.h"
- #include "kernel/film/write_passes.h"
++#include "kernel/film/write.h"
#include "kernel/integrator/path_state.h"
#include "integrator/pass_accessor_cpu.h"
diff --cc intern/cycles/kernel/closure/bsdf.h
index 1bb7f2f0591,02cf8bfe3e2..ed03d1617d8
--- a/intern/cycles/kernel/closure/bsdf.h
+++ b/intern/cycles/kernel/closure/bsdf.h
@@@ -215,36 -172,22 +215,34 @@@ ccl_device_inline int bsdf_sample(Kerne
break;
case CLOSURE_BSDF_GLOSSY_TOON_ID:
label = bsdf_glossy_toon_sample(sc, Ng, sd->I, randu, randv, eval, omega_in, pdf);
+ // double check if this is valid
+ *sampled_roughness = make_float2(1.0f, 1.0f);
+ *eta = 1.0f;
break;
case CLOSURE_BSDF_HAIR_REFLECTION_ID:
- label = bsdf_hair_reflection_sample(sc, Ng, sd->I, randu, randv, eval, omega_in, pdf);
+ label = bsdf_hair_reflection_sample(
+ sc, Ng, sd->I, randu, randv, eval, omega_in, pdf, sampled_roughness);
+ *eta = 1.0f;
break;
case CLOSURE_BSDF_HAIR_TRANSMISSION_ID:
- label = bsdf_hair_transmission_sample(sc, Ng, sd->I, randu, randv, eval, omega_in, pdf);
+ label = bsdf_hair_transmission_sample(
+ sc, Ng, sd->I, randu, randv, eval, omega_in, pdf, sampled_roughness);
+ *eta = 1.0f;
break;
case CLOSURE_BSDF_HAIR_PRINCIPLED_ID:
- label = bsdf_principled_hair_sample(kg, sc, sd, randu, randv, eval, omega_in, pdf);
+ label = bsdf_principled_hair_sample(
+ kg, sc, sd, randu, randv, eval, omega_in, pdf, sampled_roughness, eta);
break;
- # ifdef __PRINCIPLED__
case CLOSURE_BSDF_PRINCIPLED_DIFFUSE_ID:
label = bsdf_principled_diffuse_sample(sc, Ng, sd->I, randu, randv, eval, omega_in, pdf);
+ *sampled_roughness = make_float2(1.0f, 1.0f);
+ *eta = 1.0f;
break;
case CLOSURE_BSDF_PRINCIPLED_SHEEN_ID:
label = bsdf_principled_sheen_sample(sc, Ng, sd->I, randu, randv, eval, omega_in, pdf);
+ *sampled_roughness = make_float2(1.0f, 1.0f);
+ *eta = 1.0f;
break;
- # endif /* __PRINCIPLED__ */
#endif
default:
label = LABEL_NONE;
@@@ -283,268 -226,6 +281,264 @@@
return label;
}
+ccl_device_inline void bsdf_roughness_eta(const KernelGlobals kg,
+ const ShaderClosure *sc,
+ float2 *roughness,
+ float *eta)
+{
+ const MicrofacetBsdf *bsdf;
+ bool refractive = false;
+ float alpha = 1.0f;
+ switch (sc->type) {
+ case CLOSURE_BSDF_DIFFUSE_ID:
+ *roughness = make_float2(1.0f, 1.0f);
+ *eta = 1.0f;
+ break;
+#ifdef __SVM__
+ case CLOSURE_BSDF_OREN_NAYAR_ID:
+ *roughness = make_float2(1.0f, 1.0f);
+ *eta = 1.0f;
+ break;
+# ifdef __OSL__
+ case CLOSURE_BSDF_PHONG_RAMP_ID:
+ alpha = phong_ramp_exponent_to_roughness(((ccl_private const PhongRampBsdf *)sc)->exponent);
+ *roughness = make_float2(alpha, alpha);
+ *eta = 1.0f;
+ break;
+ case CLOSURE_BSDF_DIFFUSE_RAMP_ID:
+ *roughness = make_float2(1.0f, 1.0f);
+ *eta = 1.0f;
+ break;
+# endif
+ case CLOSURE_BSDF_TRANSLUCENT_ID:
+ *roughness = make_float2(1.0f, 1.0f);
+ *eta = 1.0f;
+ break;
+ case CLOSURE_BSDF_REFLECTION_ID:
+ bsdf = (ccl_private const MicrofacetBsdf *)sc;
+ *roughness = make_float2(0.0f, 0.0f);
+ *eta = bsdf->ior;
+ break;
+ case CLOSURE_BSDF_REFRACTION_ID:
+ bsdf = (ccl_private const MicrofacetBsdf *)sc;
+ *roughness = make_float2(0.0f, 0.0f);
+ // do we need to inverse eta??
+ *eta = bsdf->ior;
+ break;
+ case CLOSURE_BSDF_TRANSPARENT_ID:
+ *roughness = make_float2(0.0f, 0.0f);
+ *eta = 1.0f;
+ break;
+ case CLOSURE_BSDF_MICROFACET_GGX_ID:
+ case CLOSURE_BSDF_MICROFACET_GGX_FRESNEL_ID:
+ case CLOSURE_BSDF_MICROFACET_GGX_CLEARCOAT_ID:
+ case CLOSURE_BSDF_MICROFACET_GGX_REFRACTION_ID:
+ bsdf = (ccl_private const MicrofacetBsdf *)sc;
+ *roughness = make_float2(bsdf->alpha_x, bsdf->alpha_y);
+ refractive = bsdf->type == CLOSURE_BSDF_MICROFACET_GGX_REFRACTION_ID;
+ *eta = refractive ? 1.0f / bsdf->ior : bsdf->ior;
+ break;
+ case CLOSURE_BSDF_MICROFACET_MULTI_GGX_ID:
+ case CLOSURE_BSDF_MICROFACET_MULTI_GGX_FRESNEL_ID:
+ bsdf = (ccl_private const MicrofacetBsdf *)sc;
+ *roughness = make_float2(bsdf->alpha_x, bsdf->alpha_y);
+ *eta = bsdf->ior;
+ break;
+ case CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_ID:
+ case CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_FRESNEL_ID:
+ bsdf = (ccl_private const MicrofacetBsdf *)sc;
+ *roughness = make_float2(bsdf->alpha_x, bsdf->alpha_y);
+ *eta = bsdf->ior;
+ break;
+ case CLOSURE_BSDF_MICROFACET_BECKMANN_ID:
+ case CLOSURE_BSDF_MICROFACET_BECKMANN_REFRACTION_ID:
+ bsdf = (ccl_private const MicrofacetBsdf *)sc;
+ *roughness = make_float2(bsdf->alpha_x, bsdf->alpha_y);
+ refractive = bsdf->type == CLOSURE_BSDF_MICROFACET_BECKMANN_REFRACTION_ID;
+ *eta = refractive ? 1.0f / bsdf->ior : bsdf->ior;
+ break;
+ case CLOSURE_BSDF_ASHIKHMIN_SHIRLEY_ID:
+ bsdf = (ccl_private const MicrofacetBsdf *)sc;
+ *roughness = make_float2(bsdf->alpha_x, bsdf->alpha_y);
+ *eta = 1.0f;
+ break;
+ case CLOSURE_BSDF_ASHIKHMIN_VELVET_ID:
+ *roughness = make_float2(1.0f, 1.0f);
+ *eta = 1.0f;
+ break;
+ case CLOSURE_BSDF_DIFFUSE_TOON_ID:
+ *roughness = make_float2(1.0f, 1.0f);
+ *eta = 1.0f;
+ break;
+ case CLOSURE_BSDF_GLOSSY_TOON_ID:
+ // double check if this is valid
+ *roughness = make_float2(1.0f, 1.0f);
+ *eta = 1.0f;
+ break;
+ case CLOSURE_BSDF_HAIR_REFLECTION_ID:
+ *roughness = make_float2(((ccl_private HairBsdf *)sc)->roughness1,
+ ((ccl_private HairBsdf *)sc)->roughness2);
+ *eta = 1.0f;
+ break;
+ case CLOSURE_BSDF_HAIR_TRANSMISSION_ID:
+ *roughness = make_float2(((ccl_private HairBsdf *)sc)->roughness1,
+ ((ccl_private HairBsdf *)sc)->roughness2);
+ *eta = 1.0f;
+ break;
+ case CLOSURE_BSDF_HAIR_PRINCIPLED_ID:
+ alpha = ((ccl_private PrincipledHairBSDF *)sc)->m0_roughness;
+ *roughness = make_float2(alpha, alpha);
+ *eta = ((ccl_private PrincipledHairBSDF *)sc)->eta;
+ break;
- # ifdef __PRINCIPLED__
+ case CLOSURE_BSDF_PRINCIPLED_DIFFUSE_ID:
+ *roughness = make_float2(1.0f, 1.0f);
+ *eta = 1.0f;
+ break;
+ case CLOSURE_BSDF_PRINCIPLED_SHEEN_ID:
+ *roughness = make_float2(1.0f, 1.0f);
+ *eta = 1.0f;
+ break;
- # endif /* __PRINCIPLED__ */
+#endif
+ default:
+ *roughness = make_float2(1.0f, 1.0f);
+ *eta = 1.0f;
+ break;
+ }
+}
+
+ccl_device_inline int bsdf_label(const KernelGlobals kg,
+ const ShaderClosure *sc,
+ const bool is_transmission)
+{
+ /* For curves use the smooth normal, particularly for ribbons the geometric
+ * normal gives too much darkening otherwise. */
+ int label;
+ MicrofacetBsdf *bsdf;
+ switch (sc->type) {
+ case CLOSURE_BSDF_DIFFUSE_ID:
+ case CLOSURE_BSSRDF_BURLEY_ID:
+ case CLOSURE_BSSRDF_RANDOM_WALK_ID:
+ case CLOSURE_BSSRDF_RANDOM_WALK_FIXED_RADIUS_ID:
+ label = LABEL_REFLECT | LABEL_DIFFUSE;
+ break;
+#ifdef __SVM__
+ case CLOSURE_BSDF_OREN_NAYAR_ID:
+ label = LABEL_REFLECT | LABEL_DIFFUSE;
+ break;
+# ifdef __OSL__
+ case CLOSURE_BSDF_PHONG_RAMP_ID:
+ label = LABEL_REFLECT | LABEL_GLOSSY;
+ break;
+ case CLOSURE_BSDF_DIFFUSE_RAMP_ID:
+ label = LABEL_REFLECT | LABEL_DIFFUSE;
+ break;
+# endif
+ case CLOSURE_BSDF_TRANSLUCENT_ID:
+ label = LABEL_TRANSMIT | LABEL_DIFFUSE;
+ break;
+ case CLOSURE_BSDF_REFLECTION_ID:
+ label = LABEL_REFLECT | LABEL_SINGULAR;
+ break;
+ case CLOSURE_BSDF_REFRACTION_ID:
+ label = LABEL_TRANSMIT | LABEL_SINGULAR;
+ break;
+ case CLOSURE_BSDF_TRANSPARENT_ID:
+ label = LABEL_TRANSMIT | LABEL_TRANSPARENT;
+ break;
+ case CLOSURE_BSDF_MICROFACET_GGX_ID:
+ case CLOSURE_BSDF_MICROFACET_GGX_FRESNEL_ID:
+ case CLOSURE_BSDF_MICROFACET_GGX_CLEARCOAT_ID:
+ bsdf = (MicrofacetBsdf *)sc;
+ if (bsdf->alpha_x * bsdf->alpha_y <= 1e-7f)
+ label = LABEL_REFLECT | LABEL_SINGULAR;
+ else
+ label = LABEL_REFLECT | LABEL_GLOSSY;
+ break;
+ case CLOSURE_BSDF_MICROFACET_GGX_REFRACTION_ID:
+ bsdf = (MicrofacetBsdf *)sc;
+ if (bsdf->alpha_x * bsdf->alpha_y <= 1e-7f)
+ label = LABEL_TRANSMIT | LABEL_SINGULAR;
+ else
+ label = LABEL_TRANSMIT | LABEL_GLOSSY;
+ break;
+ case CLOSURE_BSDF_MICROFACET_MULTI_GGX_ID:
+ case CLOSURE_BSDF_MICROFACET_MULTI_GGX_FRESNEL_ID:
+ bsdf = (MicrofacetBsdf *)sc;
+ if (bsdf->alpha_x * bsdf->alpha_y <= 1e-7f)
+ label = LABEL_REFLECT | LABEL_SINGULAR;
+ else
+ label = LABEL_REFLECT | LABEL_GLOSSY;
+ break;
+ case CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_ID:
+ case CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_FRESNEL_ID:
+ if (is_transmission)
+ label = LABEL_TRANSMIT | LABEL_GLOSSY;
+ else
+ label = LABEL_REFLECT | LABEL_GLOSSY;
+ break;
+ case CLOSURE_BSDF_MICROFACET_BECKMANN_ID:
+ bsdf = (MicrofacetBsdf *)sc;
+ if (bsdf->alpha_x * bsdf->alpha_y <= 1e-7f)
+ label = LABEL_REFLECT | LABEL_SINGULAR;
+ else
+ label = LABEL_REFLECT | LABEL_GLOSSY;
+ break;
+ case CLOSURE_BSDF_MICROFACET_BECKMANN_REFRACTION_ID:
+
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list