diff options
-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]); - } } } |