[Bf-blender-cvs] [7b38ad72869] blender2.7: Fix T57138: Cycles CMJ failing with viewport samples set to 0.

Brecht Van Lommel noreply at git.blender.org
Thu Mar 14 18:59:39 CET 2019


Commit: 7b38ad7286937d66d45a0c2c4c2d355bfa588e5f
Author: Brecht Van Lommel
Date:   Thu Mar 14 17:29:18 2019 +0100
Branches: blender2.7
https://developer.blender.org/rB7b38ad7286937d66d45a0c2c4c2d355bfa588e5f

Fix T57138: Cycles CMJ failing with viewport samples set to 0.

Can't use INT_MAX, CMJ runs into precision/overflow issues before that.

===================================================================

M	intern/cycles/blender/addon/properties.py
M	intern/cycles/blender/blender_sync.cpp
M	intern/cycles/render/integrator.h
M	intern/cycles/render/session.h

===================================================================

diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py
index 04b0cf75e82..950a0b5f08f 100644
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@ -194,13 +194,13 @@ class CyclesRenderSettings(bpy.types.PropertyGroup):
         cls.samples = IntProperty(
             name="Samples",
             description="Number of samples to render for each pixel",
-            min=1, max=2147483647,
+            min=1, max=(1 << 24),
             default=128,
         )
         cls.preview_samples = IntProperty(
             name="Preview Samples",
             description="Number of samples to render in the viewport, unlimited if 0",
-            min=0, max=2147483647,
+            min=0, max=(1 << 24),
             default=32,
         )
         cls.preview_pause = BoolProperty(
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 05979fa4f57..a1202cbbad4 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -794,6 +794,9 @@ SessionParams BlenderSync::get_session_params(BL::RenderEngine& b_engine,
 		}
 	}
 
+	/* Clamp samples. */
+	params.samples = min(params.samples, Integrator::MAX_SAMPLES);
+
 	/* tiles */
 	const bool is_cpu = (params.device.type == DEVICE_CPU);
 	if(!is_cpu && !background) {
diff --git a/intern/cycles/render/integrator.h b/intern/cycles/render/integrator.h
index 6a7e2056851..da4e61d8153 100644
--- a/intern/cycles/render/integrator.h
+++ b/intern/cycles/render/integrator.h
@@ -55,6 +55,10 @@ public:
 	float sample_clamp_indirect;
 	bool motion_blur;
 
+	/* Maximum number of samples, beyond which we are likely to run into
+	 * precision issues for sampling patterns. */
+	static const int MAX_SAMPLES = (1 << 24);
+
 	int aa_samples;
 	int diffuse_samples;
 	int glossy_samples;
diff --git a/intern/cycles/render/session.h b/intern/cycles/render/session.h
index e3cccbb9fcf..cbdfc75a905 100644
--- a/intern/cycles/render/session.h
+++ b/intern/cycles/render/session.h
@@ -84,7 +84,7 @@ public:
 
 		progressive = false;
 		experimental = false;
-		samples = INT_MAX;
+		samples = 1024;
 		tile_size = make_int2(64, 64);
 		start_resolution = INT_MAX;
 		pixel_size = 1;



More information about the Bf-blender-cvs mailing list