[Bf-blender-cvs] [5cec64b4dc] soc-2016-cycles_denoising: Cycles Denoising: Remove now-useless feature utilities
Lukas Stockner
noreply at git.blender.org
Thu Jan 12 05:14:11 CET 2017
Commit: 5cec64b4dc59693c6001a6e04e9cdf919eee37bd
Author: Lukas Stockner
Date: Wed Jan 11 07:06:55 2017 +0100
Branches: soc-2016-cycles_denoising
https://developer.blender.org/rB5cec64b4dc59693c6001a6e04e9cdf919eee37bd
Cycles Denoising: Remove now-useless feature utilities
===================================================================
M intern/cycles/kernel/filter/filter_features.h
M intern/cycles/kernel/filter/filter_features_sse.h
===================================================================
diff --git a/intern/cycles/kernel/filter/filter_features.h b/intern/cycles/kernel/filter/filter_features.h
index 604b7fac03..1a0bba1e5a 100644
--- a/intern/cycles/kernel/filter/filter_features.h
+++ b/intern/cycles/kernel/filter/filter_features.h
@@ -165,43 +165,6 @@ ccl_device_inline bool filter_firefly_rejection(float3 pixel_color, float pixel_
return (color_diff > 3.0f*variance);
}
-/* Fill design row and compute WLR weight.
- * Doing both at the same time allows for a nice early-out as soon as the weight is zero. */
-ccl_device_inline float filter_get_design_row_transform_weight(int3 pixel, float ccl_readonly_ptr buffer, float ccl_readonly_ptr feature_means, int pass_stride, float *features, int rank, float *design_row, float ccl_readonly_ptr feature_transform, int transform_stride, float ccl_readonly_ptr bandwidth_factor)
-{
- filter_get_features(pixel, buffer, features, feature_means, pass_stride);
- design_row[0] = 1.0f;
- float weight = 1.0f;
- for(int d = 0; d < rank; d++) {
-#ifdef __KERNEL_CUDA__
- float x = math_vector_dot_strided(features, feature_transform + d*DENOISE_FEATURES*transform_stride, transform_stride, DENOISE_FEATURES);
-#else
- float x = math_vector_dot(features, feature_transform + d*DENOISE_FEATURES, DENOISE_FEATURES);
-#endif
- float x2 = x;
- if(bandwidth_factor) x2 *= bandwidth_factor[d];
- x2 *= x2;
- if(x2 < 1.0f) {
- /* Pixels are weighted by Epanechnikov kernels. */
- weight *= 0.75f * (1.0f - x2);
- }
- else {
- weight = 0.0f;
- break;
- }
- design_row[1+d] = x;
- }
- return weight;
-}
-
-/* Fill design row with the quadratic elements. */
-ccl_device_inline void filter_extend_design_row_quadratic(int rank, float *design_row)
-{
- for(int d = 0; d < rank; d++) {
- design_row[1+rank+d] = design_row[1+d]*design_row[1+d];
- }
-}
-
/* Fill the design row without computing the weight. */
ccl_device_inline void filter_get_design_row_transform(int3 pixel, float ccl_readonly_ptr buffer, float ccl_readonly_ptr feature_means, int pass_stride, float *features, int rank, float *design_row, float ccl_readonly_ptr feature_transform, int transform_stride)
{
@@ -217,12 +180,4 @@ ccl_device_inline void filter_get_design_row_transform(int3 pixel, float ccl_rea
}
}
-ccl_device_inline void filter_get_design_row(int3 pixel, float ccl_readonly_ptr buffer, float ccl_readonly_ptr feature_means, float ccl_readonly_ptr feature_scales, int pass_stride, float *design_row)
-{
- design_row[0] = 1.0f;
- filter_get_features(pixel, buffer, design_row+1, feature_means, pass_stride);
- for(int d = 0; d < DENOISE_FEATURES; d++)
- design_row[d+1] *= feature_scales[d];
-}
-
CCL_NAMESPACE_END
\ No newline at end of file
diff --git a/intern/cycles/kernel/filter/filter_features_sse.h b/intern/cycles/kernel/filter/filter_features_sse.h
index 51d8347d90..80e5b0282d 100644
--- a/intern/cycles/kernel/filter/filter_features_sse.h
+++ b/intern/cycles/kernel/filter/filter_features_sse.h
@@ -178,44 +178,5 @@ ccl_device_inline void filter_get_pixel_variance_3_sse(float ccl_readonly_ptr bu
var[2] = _mm_mask_ps(ccl_get_feature_sse(21), active_pixels);
}
-ccl_device_inline __m128 filter_get_pixel_variance_sse(float ccl_readonly_ptr buffer, __m128 active_pixels, int pass_stride)
-{
- return _mm_mask_ps(_mm_mul_ps(_mm_set1_ps(1.0f/3.0f), _mm_add_ps(_mm_add_ps(ccl_get_feature_sse(17), ccl_get_feature_sse(19)), ccl_get_feature_sse(21))), active_pixels);
-}
-
-ccl_device_inline __m128 filter_fill_design_row_sse(__m128 *features, __m128 active_pixels, int rank, __m128 *design_row, __m128 ccl_readonly_ptr feature_transform, __m128 ccl_readonly_ptr bandwidth_factor)
-{
- __m128 weight = _mm_mask_ps(_mm_set1_ps(1.0f), active_pixels);
- design_row[0] = weight;
- for(int d = 0; d < rank; d++) {
- __m128 x = math_vector_dot_sse(features, feature_transform + d*DENOISE_FEATURES, DENOISE_FEATURES);
- __m128 x2 = _mm_mul_ps(x, bandwidth_factor[d]);
- x2 = _mm_mul_ps(x2, x2);
- weight = _mm_mask_ps(_mm_mul_ps(weight, _mm_mul_ps(_mm_set1_ps(0.75f), _mm_sub_ps(_mm_set1_ps(1.0f), x2))), _mm_and_ps(_mm_cmplt_ps(x2, _mm_set1_ps(1.0f)), active_pixels));
- design_row[1+d] = x;
- }
- return weight;
-}
-
-ccl_device_inline __m128 filter_fill_design_row_quadratic_sse(__m128 *features, __m128 active_pixels, int rank, __m128 *design_row, __m128 ccl_readonly_ptr feature_transform)
-{
- __m128 weight = _mm_mask_ps(_mm_set1_ps(1.0f), active_pixels);
- design_row[0] = weight;
- for(int d = 0; d < rank; d++) {
- __m128 x = math_vector_dot_sse(features, feature_transform + d*DENOISE_FEATURES, DENOISE_FEATURES);
- __m128 x2 = _mm_mul_ps(x, x);
- weight = _mm_mask_ps(_mm_mul_ps(weight, _mm_mul_ps(_mm_set1_ps(0.75f), _mm_sub_ps(_mm_set1_ps(1.0f), x2))), _mm_and_ps(_mm_cmplt_ps(x2, _mm_set1_ps(1.0f)), active_pixels));
- design_row[1+d] = x;
- design_row[1+rank+d] = x2;
- }
- return weight;
-}
-
-ccl_device_inline __m128 filter_firefly_rejection_sse(__m128 ccl_readonly_ptr pixel_color, __m128 pixel_variance, __m128 ccl_readonly_ptr center_color, __m128 sqrt_center_variance)
-{
- __m128 color_diff = _mm_mul_ps(_mm_set1_ps(1.0f/9.0f), _mm_add_ps(_mm_add_ps(_mm_fabs_ps(_mm_sub_ps(pixel_color[0], center_color[0])), _mm_fabs_ps(_mm_sub_ps(pixel_color[1], center_color[1]))), _mm_fabs_ps(_mm_sub_ps(pixel_color[2], center_color[2]))));
- __m128 variance = _mm_add_ps(_mm_add_ps(sqrt_center_variance, _mm_sqrt_ps(pixel_variance)), _mm_set1_ps(0.005f));
- return _mm_cmple_ps(color_diff, variance);;
-}
CCL_NAMESPACE_END
\ No newline at end of file
More information about the Bf-blender-cvs
mailing list