diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-03-14 19:29:18 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-03-14 19:39:00 +0300 |
commit | 7b38ad7286937d66d45a0c2c4c2d355bfa588e5f (patch) | |
tree | 71779a1f4831061d0e5987f7ffa991a552ed507e /intern | |
parent | 47da8dcbcad4ccc5349bc303394e1d01d1c822c5 (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.py | 4 | ||||
-rw-r--r-- | intern/cycles/blender/blender_sync.cpp | 3 | ||||
-rw-r--r-- | intern/cycles/render/integrator.h | 4 | ||||
-rw-r--r-- | intern/cycles/render/session.h | 2 |
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; |