[Bf-blender-cvs] [d23da4133f2] temp-cycles-denoising: Merge remote-tracking branch 'origin/master' into temp-cycles-denoising
Lukas Stockner
noreply at git.blender.org
Mon Mar 27 18:49:33 CEST 2017
Commit: d23da4133f28e4010ded9217f33ab8d6fa97b879
Author: Lukas Stockner
Date: Mon Mar 27 18:20:46 2017 +0200
Branches: temp-cycles-denoising
https://developer.blender.org/rBd23da4133f28e4010ded9217f33ab8d6fa97b879
Merge remote-tracking branch 'origin/master' into temp-cycles-denoising
===================================================================
===================================================================
diff --cc intern/cycles/kernel/kernel_accumulate.h
index d1a26778aab,823d30dde78..06728415c15
--- a/intern/cycles/kernel/kernel_accumulate.h
+++ b/intern/cycles/kernel/kernel_accumulate.h
@@@ -652,6 -591,23 +653,23 @@@ ccl_device_inline float path_radiance_s
}
return 1.0f;
}
+
+ /* Calculate final light sum and transparency for shadow catcher object. */
+ ccl_device_inline float3 path_radiance_sum_shadowcatcher(KernelGlobals *kg,
+ const PathRadiance *L,
- ccl_addr_space float* L_transparent)
++ float* alpha)
+ {
+ const float shadow = path_radiance_sum_shadow(L);
+ float3 L_sum;
+ if(kernel_data.background.transparent) {
- *L_transparent = shadow;
++ *alpha = 1.0f-shadow;
+ L_sum = make_float3(0.0f, 0.0f, 0.0f);
+ }
+ else {
+ L_sum = L->shadow_color * shadow;
+ }
+ return L_sum;
+ }
#endif
CCL_NAMESPACE_END
diff --cc intern/cycles/kernel/kernel_passes.h
index 22e2e7943f0,ed523696571..eae8e666481
--- a/intern/cycles/kernel/kernel_passes.h
+++ b/intern/cycles/kernel/kernel_passes.h
@@@ -342,83 -199,5 +342,79 @@@ ccl_device_inline void kernel_write_lig
#endif
}
+ccl_device_inline void kernel_write_result(KernelGlobals *kg, ccl_global float *buffer,
+ int sample, PathRadiance *L, float alpha, bool is_shadow_catcher)
+{
+ int split_passes = (kernel_data.film.denoising_flags & DENOISING_USE_SPLIT_PASSES);
+
+ if(L) {
+ float3 L_sum;
+#ifdef __SHADOW_TRICKS__
+ if(is_shadow_catcher) {
- float shadow = path_radiance_sum_shadow(L);
- L_sum = L->shadow_color * shadow;
- if(kernel_data.background.transparent) {
- alpha = 1.0f - shadow;
- }
++ L_sum = path_radiance_sum_shadowcatcher(kg, L, &alpha);
+ }
+ else
+#endif /* __SHADOW_TRICKS__ */
+ {
+ L_sum = path_radiance_clamp_and_sum(kg, L);
+ }
+
+ kernel_write_pass_float4(buffer, sample, make_float4(L_sum.x, L_sum.y, L_sum.z, alpha));
+
+ kernel_write_light_passes(kg, buffer, L, sample);
+
+#ifdef __DENOISING_FEATURES__
+ if(kernel_data.film.pass_denoising_data) {
+# ifdef __SHADOW_TRICKS__
+ kernel_write_denoising_shadow(kg, buffer, sample, average(L->path_total), average(L->path_total_shaded));
+# else
+ kernel_write_denoising_shadow(kg, buffer, sample, 0.0f, 0.0f);
+# endif
+ if(kernel_data.film.pass_denoising_clean) {
+ float3 noisy, clean;
+ path_radiance_split_denoising(kg, L, &noisy, &clean);
+ kernel_write_pass_float3_variance(buffer + kernel_data.film.pass_denoising_data + 20, sample, noisy);
+ if(split_passes && !(sample & 1)) {
+ kernel_write_pass_float3_variance(buffer + kernel_data.film.pass_denoising_data + 26, sample, noisy);
+ }
+ kernel_write_pass_float3_unaligned(buffer + kernel_data.film.pass_denoising_clean, sample, clean);
+ }
+ else {
+ kernel_write_pass_float3_variance(buffer + kernel_data.film.pass_denoising_data + 20, sample, L_sum);
+ if(split_passes && !(sample & 1)) {
+ kernel_write_pass_float3_variance(buffer + kernel_data.film.pass_denoising_data + 26, sample, L_sum);
+ }
+ }
+
+ kernel_write_pass_float3_variance(buffer + kernel_data.film.pass_denoising_data, sample, L->denoising_normal);
+ kernel_write_pass_float3_variance(buffer + kernel_data.film.pass_denoising_data + 6, sample, L->denoising_albedo);
+ kernel_write_pass_float_variance(buffer + kernel_data.film.pass_denoising_data + 12, sample, L->denoising_depth);
+ }
+#endif /* __DENOISING_FEATURES__ */
+ }
+ else {
+ kernel_write_pass_float4(buffer, sample, make_float4(0.0f, 0.0f, 0.0f, 0.0f));
+
+#ifdef __DENOISING_FEATURES__
+ if(kernel_data.film.pass_denoising_data) {
+ kernel_write_denoising_shadow(kg, buffer, sample, 0.0f, 0.0f);
+
+ kernel_write_pass_float3_variance(buffer + kernel_data.film.pass_denoising_data + 20, sample, make_float3(0.0f, 0.0f, 0.0f));
+ if(split_passes && !(sample & 1)) {
+ kernel_write_pass_float3_variance(buffer + kernel_data.film.pass_denoising_data + 26, sample, make_float3(0.0f, 0.0f, 0.0f));
+ }
+
+ kernel_write_pass_float3_variance(buffer + kernel_data.film.pass_denoising_data, sample, make_float3(0.0f, 0.0f, 0.0f));
+ kernel_write_pass_float3_variance(buffer + kernel_data.film.pass_denoising_data + 6, sample, make_float3(0.0f, 0.0f, 0.0f));
+ kernel_write_pass_float_variance(buffer + kernel_data.film.pass_denoising_data + 12, sample, 0.0f);
+
+ if(kernel_data.film.pass_denoising_clean) {
+ kernel_write_pass_float3_unaligned(buffer + kernel_data.film.pass_denoising_clean, sample, make_float3(0.0f, 0.0f, 0.0f));
+ }
+ }
+#endif /* __DENOISING_FEATURES__ */
+ }
+}
+
CCL_NAMESPACE_END
More information about the Bf-blender-cvs
mailing list