[Bf-blender-cvs] [e1a2787] soc-2016-cycles_denoising: Cycles: Revert to 6 bias-variance samples
Lukas Stockner
noreply at git.blender.org
Sun Aug 21 06:18:18 CEST 2016
Commit: e1a2787464a892d2ef7ad717f73d05c2be8f6aaa
Author: Lukas Stockner
Date: Sun Aug 21 04:52:12 2016 +0200
Branches: soc-2016-cycles_denoising
https://developer.blender.org/rBe1a2787464a892d2ef7ad717f73d05c2be8f6aaa
Cycles: Revert to 6 bias-variance samples
The CUDA redesign commit removed the sample at h=2, but I found that this actually makes results worse.
Therefore, it's now added back.
===================================================================
M intern/cycles/device/device_cuda.cpp
M intern/cycles/kernel/kernel_filter.h
===================================================================
diff --git a/intern/cycles/device/device_cuda.cpp b/intern/cycles/device/device_cuda.cpp
index e50a620..0dcbad8 100644
--- a/intern/cycles/device/device_cuda.cpp
+++ b/intern/cycles/device/device_cuda.cpp
@@ -1097,7 +1097,7 @@ public:
xthreads, ythreads, 1, /* threads */
0, 0, transform_args, 0));
- for(int g = 0; g < 5; g++) {
+ for(int g = 0; g < 6; g++) {
void *bias_variance_args[] = {&sample,
&d_denoise_buffer,
&d_transforms,
diff --git a/intern/cycles/kernel/kernel_filter.h b/intern/cycles/kernel/kernel_filter.h
index 1ceb3e6..f1c6dc1 100644
--- a/intern/cycles/kernel/kernel_filter.h
+++ b/intern/cycles/kernel/kernel_filter.h
@@ -203,7 +203,7 @@ ccl_device void kernel_filter_estimate_bias_variance(KernelGlobals *kg, int samp
float g_bandwidth_factor[DENOISE_FEATURES];
- const float candidate_bw[5] = {0.05f, 0.1f, 0.25f, 0.5f, 1.0f};
+ const float candidate_bw[6] = {0.05f, 0.1f, 0.25f, 0.5f, 1.0f, 2.0f};
for(int i = 0; i < rank; i++)
/* Divide by the candidate bandwidth since the bandwidth_factor actually is the inverse of the bandwidth. */
g_bandwidth_factor[i] = storage->bandwidth[i]/candidate_bw[candidate];
@@ -278,8 +278,8 @@ ccl_device void kernel_filter_calculate_bandwidth(KernelGlobals *kg, int sample,
math_lsq_init(lsq_bias);
math_lsq_init(lsq_variance);
- const float candidate_bw[5] = {0.05f, 0.1f, 0.25f, 0.5f, 1.0f};
- for(int g = 0; g < 5; g++) {
+ const float candidate_bw[6] = {0.05f, 0.1f, 0.25f, 0.5f, 1.0f, 2.0f};
+ for(int g = 0; g < 6; g++) {
math_lsq_add(lsq_bias, (double) (candidate_bw[g]*candidate_bw[g]), (double) storage->est_bias[g]);
math_lsq_add(lsq_variance, pow(candidate_bw[g], -storage->rank), max(sample*storage->est_variance[g], 0.0f));
}
More information about the Bf-blender-cvs
mailing list