Merge remote-tracking branch 'origin/master' into blender2.8
authorDalai Felinto <dfelinto@gmail.com>
Tue, 9 May 2017 15:56:16 +0000 (17:56 +0200)
committerDalai Felinto <dfelinto@gmail.com>
Tue, 9 May 2017 15:56:16 +0000 (17:56 +0200)
intern/cycles/blender/addon/properties.py
intern/cycles/device/device_cpu.cpp
intern/cycles/kernel/kernel_jitter.h

index 2f9874e850e3896856896028e583a0fbb1112698..53624010696cbd0ea406c9d62a3b410cda640d1b 100644 (file)
@@ -1254,7 +1254,7 @@ class CyclesRenderLayerSettings(bpy.types.PropertyGroup):
         )
         cls.denoising_relative_pca = BoolProperty(
                 name="Relative filter",
-                description="When removing that don't carry information, use a relative threshold instead of an absolute one (can help to reduce artifacts, but might cause detail loss around edges)",
+                description="When removing pixels that don't carry information, use a relative threshold instead of an absolute one (can help to reduce artifacts, but might cause detail loss around edges)",
                 default=False,
         )
         cls.denoising_store_passes = BoolProperty(
index 1ecce8bd565d1f30365904ce4eabc8e38717ef27..e219ce3cb8e8ee0560b9183d492db85d1a6c0f03 100644 (file)
@@ -702,6 +702,7 @@ public:
                }
 
                thread_kernel_globals_free((KernelGlobals*)kgbuffer.device_pointer);
+               kg->~KernelGlobals();
                mem_free(kgbuffer);
                delete split_kernel;
        }
index 675461317460c51ebb14e71b9ad565673fee4c6a..f5855757d3f0bd39832e222509ee705929151f0b 100644 (file)
@@ -175,15 +175,26 @@ ccl_device float cmj_sample_1D(int s, int N, int p)
        return (x + jx)*invN;
 }
 
-ccl_device void cmj_sample_2D(int s, int N, int p, float *fx, float *fy)
+/* TODO(sergey): Do some extra tests and consider moving to util_math.h. */
+ccl_device_inline int cmj_isqrt(int value)
 {
-       kernel_assert(s < N);
-
 #if defined(__KERNEL_CUDA__)
-       int m = float_to_int(__fsqrt_ru(N));
+       return float_to_int(__fsqrt_ru(value));
+#elif defined(__KERNEL_GPU__)
+       return float_to_int(sqrtf(value));
 #else
-       int m = float_to_int(sqrtf(N));
+       /* This is a work around for fast-math on CPU which might replace sqrtf()
+        * with am approximated version.
+        */
+       return float_to_int(sqrtf(value) + 1e-6f);
 #endif
+}
+
+ccl_device void cmj_sample_2D(int s, int N, int p, float *fx, float *fy)
+{
+       kernel_assert(s < N);
+
+       int m = cmj_isqrt(N);
        int n = (N - 1)/m + 1;
        float invN = 1.0f/N;
        float invm = 1.0f/m;