diff options
author | Lukas Stockner <lukas.stockner@freenet.de> | 2017-05-07 21:48:24 +0300 |
---|---|---|
committer | Lukas Stockner <lukas.stockner@freenet.de> | 2017-05-07 19:50:24 +0300 |
commit | e518ea9b5ea0d2517aaf79594d2661a97c6b4a5e (patch) | |
tree | 515650235e636e69add06d08bb51742dca14b59c | |
parent | c9451f1cff4403855d5a77c15cfd428e0a9ebe87 (diff) |
Cycles: Fix transform addressing in the denoiser code
-rw-r--r-- | intern/cycles/kernel/filter/filter_transform_gpu.h | 2 | ||||
-rw-r--r-- | intern/cycles/kernel/filter/filter_transform_sse.h | 8 |
2 files changed, 1 insertions, 9 deletions
diff --git a/intern/cycles/kernel/filter/filter_transform_gpu.h b/intern/cycles/kernel/filter/filter_transform_gpu.h index f7414aeed8a..68304e14143 100644 --- a/intern/cycles/kernel/filter/filter_transform_gpu.h +++ b/intern/cycles/kernel/filter/filter_transform_gpu.h @@ -109,7 +109,7 @@ ccl_device void kernel_filter_construct_transform(ccl_global float ccl_restrict_ /* Bake the feature scaling into the transformation matrix. */ for(int i = 0; i < DENOISE_FEATURES; i++) { for(int j = 0; j < (*rank); j++) { - transform[i*DENOISE_FEATURES + j] *= feature_scale[i]; + transform[(i*DENOISE_FEATURES + j)*transform_stride] *= feature_scale[i]; } } } diff --git a/intern/cycles/kernel/filter/filter_transform_sse.h b/intern/cycles/kernel/filter/filter_transform_sse.h index 846f3ab3afa..ed3a92f6241 100644 --- a/intern/cycles/kernel/filter/filter_transform_sse.h +++ b/intern/cycles/kernel/filter/filter_transform_sse.h @@ -81,10 +81,6 @@ ccl_device void kernel_filter_construct_transform(float ccl_restrict_ptr buffer, break; float s = feature_matrix[i*DENOISE_FEATURES+i]; reduced_energy += s; - /* Bake the feature scaling into the transformation matrix. */ - for(int j = 0; j < DENOISE_FEATURES; j++) { - transform[(*rank)*DENOISE_FEATURES + j] *= _mm_cvtss_f32(feature_scale[j]); - } } } else { @@ -92,10 +88,6 @@ ccl_device void kernel_filter_construct_transform(float ccl_restrict_ptr buffer, float s = feature_matrix[i*DENOISE_FEATURES+i]; if(i >= 2 && sqrtf(s) < pca_threshold) break; - /* Bake the feature scaling into the transformation matrix. */ - for(int j = 0; j < DENOISE_FEATURES; j++) { - transform[(*rank)*DENOISE_FEATURES + j] *= _mm_cvtss_f32(feature_scale[j]); - } } } |