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
diff options
context:
space:
mode:
authorCampbell Barton <campbell@blender.org>2022-05-06 06:43:54 +0300
committerCampbell Barton <campbell@blender.org>2022-05-06 06:43:54 +0300
commit11f3a388ed2a72abd12d3f16d08f0ca8a82840be (patch)
tree8124a89eb41446fe2afd0bf7250c15687067accc
parent11a7da675f5f984456dc0fd7413b3b87b4a7c8e4 (diff)
parent1b566b70c1636c9b95f55e2fc84ef4f714306d19 (diff)
Merge branch 'blender-v3.2-release'
-rw-r--r--intern/cycles/kernel/integrator/shade_surface.h55
1 files changed, 29 insertions, 26 deletions
diff --git a/intern/cycles/kernel/integrator/shade_surface.h b/intern/cycles/kernel/integrator/shade_surface.h
index 86c8d1c1f4c..859c314b088 100644
--- a/intern/cycles/kernel/integrator/shade_surface.h
+++ b/intern/cycles/kernel/integrator/shade_surface.h
@@ -525,47 +525,50 @@ ccl_device bool integrate_surface(KernelGlobals kg,
subsurface_shader_data_setup(kg, state, &sd, path_flag);
INTEGRATOR_STATE_WRITE(state, path, flag) &= ~PATH_RAY_SUBSURFACE;
}
+ else
#endif
-
- shader_prepare_surface_closures(kg, state, &sd, path_flag);
+ {
+ /* Filter closures. */
+ shader_prepare_surface_closures(kg, state, &sd, path_flag);
#ifdef __HOLDOUT__
- /* Evaluate holdout. */
- if (!integrate_surface_holdout(kg, state, &sd, render_buffer)) {
- return false;
- }
+ /* Evaluate holdout. */
+ if (!integrate_surface_holdout(kg, state, &sd, render_buffer)) {
+ return false;
+ }
#endif
#ifdef __EMISSION__
- /* Write emission. */
- if (sd.flag & SD_EMISSION) {
- integrate_surface_emission(kg, state, &sd, render_buffer);
- }
+ /* Write emission. */
+ if (sd.flag & SD_EMISSION) {
+ integrate_surface_emission(kg, state, &sd, render_buffer);
+ }
#endif
+ /* Perform path termination. Most paths have already been terminated in
+ * the intersect_closest kernel, this is just for emission and for dividing
+ * throughput by the probability at the right moment.
+ *
+ * Also ensure we don't do it twice for SSS at both the entry and exit point. */
+ if (integrate_surface_terminate(state, path_flag)) {
+ return false;
+ }
+
+ /* Write render passes. */
#ifdef __PASSES__
- /* Write render passes. */
- PROFILING_EVENT(PROFILING_SHADE_SURFACE_PASSES);
- kernel_write_data_passes(kg, state, &sd, render_buffer);
+ PROFILING_EVENT(PROFILING_SHADE_SURFACE_PASSES);
+ kernel_write_data_passes(kg, state, &sd, render_buffer);
#endif
+#ifdef __DENOISING_FEATURES__
+ kernel_write_denoising_features_surface(kg, state, &sd, render_buffer);
+#endif
+ }
+
/* Load random number state. */
RNGState rng_state;
path_state_rng_load(state, &rng_state);
- /* Perform path termination. Most paths have already been terminated in
- * the intersect_closest kernel, this is just for emission and for dividing
- * throughput by the probability at the right moment.
- *
- * Also ensure we don't do it twice for SSS at both the entry and exit point. */
- if (!(path_flag & PATH_RAY_SUBSURFACE) && integrate_surface_terminate(state, path_flag)) {
- return false;
- }
-
-#ifdef __DENOISING_FEATURES__
- kernel_write_denoising_features_surface(kg, state, &sd, render_buffer);
-#endif
-
/* Direct light. */
PROFILING_EVENT(PROFILING_SHADE_SURFACE_DIRECT_LIGHT);
integrate_surface_direct_light<node_feature_mask>(kg, state, &sd, &rng_state);