diff options
author | Thomas Dinges <blender@dingto.org> | 2013-07-20 02:51:48 +0400 |
---|---|---|
committer | Thomas Dinges <blender@dingto.org> | 2013-07-20 02:51:48 +0400 |
commit | d336ae8992435a000e5dfe8d6d24a0cf13a5c40a (patch) | |
tree | 03cdf0837908fd39d459b7b3377fe22b27e6e995 /intern/cycles/blender/blender_sync.cpp | |
parent | 3cd53aff090b14cd050c931badf8856e903aad01 (diff) |
Cycles / Sampling UI:
* Add a "Squared Samples" option to the UI, to use squared values for ease of use. This can make it easier from an artist point of view, to weak settings.
With this enabled, all Sample values will be squared. So 10 Samples become 100 Samples.
For the Non-Progressive integrator: 4 AA Samples * 5 Diffuse Samples would become 16 AA Samples * 25 Diffuse = 400 in total.
Patch by Matt Heimlich, with some minor edits by myself. Thanks!
Diffstat (limited to 'intern/cycles/blender/blender_sync.cpp')
-rw-r--r-- | intern/cycles/blender/blender_sync.cpp | 60 |
1 files changed, 48 insertions, 12 deletions
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index e9e39e485f5..10a17b7abc3 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -191,14 +191,33 @@ void BlenderSync::sync_integrator() } #endif - integrator->diffuse_samples = get_int(cscene, "diffuse_samples"); - integrator->glossy_samples = get_int(cscene, "glossy_samples"); - integrator->transmission_samples = get_int(cscene, "transmission_samples"); - integrator->ao_samples = get_int(cscene, "ao_samples"); - integrator->mesh_light_samples = get_int(cscene, "mesh_light_samples"); - integrator->subsurface_samples = get_int(cscene, "subsurface_samples"); integrator->progressive = get_boolean(cscene, "progressive"); + int diffuse_samples = get_int(cscene, "diffuse_samples"); + int glossy_samples = get_int(cscene, "glossy_samples"); + int transmission_samples = get_int(cscene, "transmission_samples"); + int ao_samples = get_int(cscene, "ao_samples"); + int mesh_light_samples = get_int(cscene, "mesh_light_samples"); + int subsurface_samples = get_int(cscene, "subsurface_samples"); + + if(get_boolean(cscene, "squared_samples")) { + integrator->diffuse_samples = diffuse_samples * diffuse_samples; + integrator->glossy_samples = glossy_samples * glossy_samples; + integrator->transmission_samples = transmission_samples * transmission_samples; + integrator->ao_samples = ao_samples * ao_samples; + integrator->mesh_light_samples = mesh_light_samples * mesh_light_samples; + integrator->subsurface_samples = subsurface_samples * subsurface_samples; + } + else { + integrator->diffuse_samples = diffuse_samples; + integrator->glossy_samples = glossy_samples; + integrator->transmission_samples = transmission_samples; + integrator->ao_samples = ao_samples; + integrator->mesh_light_samples = mesh_light_samples; + integrator->subsurface_samples = subsurface_samples; + } + + if(experimental) integrator->sampling_pattern = (SamplingPattern)RNA_enum_get(&cscene, "sampling_pattern"); @@ -300,8 +319,13 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D b_v3d, const char *layer) render_layer.use_localview = false; render_layer.bound_samples = (use_layer_samples == 1); - if(use_layer_samples != 2) - render_layer.samples = b_rlay->samples(); + if(use_layer_samples != 2) { + int samples = b_rlay->samples(); + if(get_boolean(cscene, "squared_samples")) + render_layer.samples = samples * samples; + else + render_layer.samples = samples; + } } first_layer = false; @@ -385,22 +409,34 @@ SessionParams BlenderSync::get_session_params(BL::RenderEngine b_engine, BL::Use params.background = background; /* samples */ + int samples = get_int(cscene, "samples"); + int aa_samples = get_int(cscene, "aa_samples"); + int preview_samples = get_int(cscene, "preview_samples"); + int preview_aa_samples = get_int(cscene, "preview_aa_samples"); + + if(get_boolean(cscene, "squared_samples")) { + samples = samples * samples; + aa_samples = aa_samples * aa_samples; + preview_samples = preview_samples * preview_samples; + preview_aa_samples = preview_aa_samples * preview_aa_samples; + } + if(get_boolean(cscene, "progressive") == 0 && params.device.type == DEVICE_CPU) { if(background) { - params.samples = get_int(cscene, "aa_samples"); + params.samples = aa_samples; } else { - params.samples = get_int(cscene, "preview_aa_samples"); + params.samples = preview_aa_samples; if(params.samples == 0) params.samples = 65536; } } else { if(background) { - params.samples = get_int(cscene, "samples"); + params.samples = samples; } else { - params.samples = get_int(cscene, "preview_samples"); + params.samples = preview_samples; if(params.samples == 0) params.samples = 65536; } |