Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-03-14 19:29:18 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-03-14 19:39:00 +0300
commit7b38ad7286937d66d45a0c2c4c2d355bfa588e5f (patch)
tree71779a1f4831061d0e5987f7ffa991a552ed507e /intern
parent47da8dcbcad4ccc5349bc303394e1d01d1c822c5 (diff)
Fix T57138: Cycles CMJ failing with viewport samples set to 0.
Can't use INT_MAX, CMJ runs into precision/overflow issues before that.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/blender/addon/properties.py4
-rw-r--r--intern/cycles/blender/blender_sync.cpp3
-rw-r--r--intern/cycles/render/integrator.h4
-rw-r--r--intern/cycles/render/session.h2
4 files changed, 10 insertions, 3 deletions
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;