forked from bartvdbraak/blender
Cycles / Sampling UI:
* Add a "Total Samples" info at the bottom of the panel. This makes understanding the Non-Progressive integrator easier, as it displays how many samples are used for the different ray types. * Rename Squared Samples to Square samples, to indicate that the action is not already done. The new Total Samples info should make this easier to understand now as well. Also added back for Progressive integrator, for consistency. Screenshot: http://www.pasteall.org/pic/show.php?id=57980
This commit is contained in:
parent
da7af1e271
commit
fc9d4bdf73
@ -67,7 +67,7 @@ class AddPresetSampling(AddPresetBase, Operator):
|
|||||||
"cycles.subsurface_samples",
|
"cycles.subsurface_samples",
|
||||||
"cycles.no_caustics",
|
"cycles.no_caustics",
|
||||||
"cycles.blur_glossy",
|
"cycles.blur_glossy",
|
||||||
"cycles.squared_samples",
|
"cycles.use_square_samples",
|
||||||
"cycles.progressive"
|
"cycles.progressive"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -128,8 +128,8 @@ class CyclesRenderSettings(bpy.types.PropertyGroup):
|
|||||||
description="Use progressive sampling of lighting",
|
description="Use progressive sampling of lighting",
|
||||||
default=True,
|
default=True,
|
||||||
)
|
)
|
||||||
cls.squared_samples = BoolProperty(
|
cls.use_square_samples = BoolProperty(
|
||||||
name="Squared Samples",
|
name="Square Samples",
|
||||||
description="Square sampling values for easier artist control",
|
description="Square sampling values for easier artist control",
|
||||||
default=False,
|
default=False,
|
||||||
)
|
)
|
||||||
|
@ -48,6 +48,43 @@ class CyclesButtonsPanel():
|
|||||||
return rd.engine == 'CYCLES'
|
return rd.engine == 'CYCLES'
|
||||||
|
|
||||||
|
|
||||||
|
def draw_samples_info(layout, cscene):
|
||||||
|
# Calculate sample values
|
||||||
|
if cscene.progressive:
|
||||||
|
aa = cscene.samples
|
||||||
|
if cscene.use_square_samples:
|
||||||
|
aa = aa*aa
|
||||||
|
else:
|
||||||
|
aa = cscene.aa_samples
|
||||||
|
d = cscene.diffuse_samples
|
||||||
|
g = cscene.glossy_samples
|
||||||
|
t = cscene.transmission_samples
|
||||||
|
ao = cscene.ao_samples
|
||||||
|
ml = cscene.mesh_light_samples
|
||||||
|
sss = cscene.subsurface_samples
|
||||||
|
|
||||||
|
if cscene.use_square_samples:
|
||||||
|
aa = aa*aa
|
||||||
|
d = d*d
|
||||||
|
g = g*g
|
||||||
|
t = t*t
|
||||||
|
ao = ao*ao
|
||||||
|
ml = ml*ml
|
||||||
|
sss = sss*sss
|
||||||
|
|
||||||
|
# Draw interface
|
||||||
|
col = layout.column(align=True)
|
||||||
|
col.scale_y = 0.6
|
||||||
|
col.label("Total Samples:")
|
||||||
|
col.separator()
|
||||||
|
if cscene.progressive:
|
||||||
|
col.label("%s AA" % aa)
|
||||||
|
else:
|
||||||
|
col.label("%s AA, %s Diffuse, %s Glossy, %s Transmission" % (aa, d*aa, g*aa, t*aa))
|
||||||
|
col.separator()
|
||||||
|
col.label("%s AO, %s Mesh Light, %s Subsurface" % (ao*aa, ml*aa, sss*aa))
|
||||||
|
|
||||||
|
|
||||||
class CyclesRender_PT_sampling(CyclesButtonsPanel, Panel):
|
class CyclesRender_PT_sampling(CyclesButtonsPanel, Panel):
|
||||||
bl_label = "Sampling"
|
bl_label = "Sampling"
|
||||||
bl_options = {'DEFAULT_CLOSED'}
|
bl_options = {'DEFAULT_CLOSED'}
|
||||||
@ -66,9 +103,7 @@ class CyclesRender_PT_sampling(CyclesButtonsPanel, Panel):
|
|||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.prop(cscene, "progressive")
|
row.prop(cscene, "progressive")
|
||||||
|
row.prop(cscene, "use_square_samples")
|
||||||
if not cscene.progressive:
|
|
||||||
row.prop(cscene, "squared_samples")
|
|
||||||
|
|
||||||
split = layout.split()
|
split = layout.split()
|
||||||
|
|
||||||
@ -108,6 +143,8 @@ class CyclesRender_PT_sampling(CyclesButtonsPanel, Panel):
|
|||||||
layout.row().prop(cscene, "use_layer_samples")
|
layout.row().prop(cscene, "use_layer_samples")
|
||||||
break
|
break
|
||||||
|
|
||||||
|
draw_samples_info(layout, cscene)
|
||||||
|
|
||||||
|
|
||||||
class CyclesRender_PT_light_paths(CyclesButtonsPanel, Panel):
|
class CyclesRender_PT_light_paths(CyclesButtonsPanel, Panel):
|
||||||
bl_label = "Light Paths"
|
bl_label = "Light Paths"
|
||||||
|
@ -158,7 +158,7 @@ void BlenderSync::sync_light(BL::Object b_parent, int persistent_id[OBJECT_PERSI
|
|||||||
light->use_mis = get_boolean(clamp, "use_multiple_importance_sampling");
|
light->use_mis = get_boolean(clamp, "use_multiple_importance_sampling");
|
||||||
|
|
||||||
int samples = get_int(clamp, "samples");
|
int samples = get_int(clamp, "samples");
|
||||||
if(get_boolean(cscene, "squared_samples"))
|
if(get_boolean(cscene, "use_square_samples"))
|
||||||
light->samples = samples * samples;
|
light->samples = samples * samples;
|
||||||
else
|
else
|
||||||
light->samples = samples;
|
light->samples = samples;
|
||||||
@ -196,7 +196,7 @@ void BlenderSync::sync_background_light()
|
|||||||
light->shader = scene->default_background;
|
light->shader = scene->default_background;
|
||||||
|
|
||||||
int samples = get_int(cworld, "samples");
|
int samples = get_int(cworld, "samples");
|
||||||
if(get_boolean(cscene, "squared_samples"))
|
if(get_boolean(cscene, "use_square_samples"))
|
||||||
light->samples = samples * samples;
|
light->samples = samples * samples;
|
||||||
else
|
else
|
||||||
light->samples = samples;
|
light->samples = samples;
|
||||||
|
@ -198,7 +198,7 @@ void BlenderSync::sync_integrator()
|
|||||||
int mesh_light_samples = get_int(cscene, "mesh_light_samples");
|
int mesh_light_samples = get_int(cscene, "mesh_light_samples");
|
||||||
int subsurface_samples = get_int(cscene, "subsurface_samples");
|
int subsurface_samples = get_int(cscene, "subsurface_samples");
|
||||||
|
|
||||||
if(get_boolean(cscene, "squared_samples")) {
|
if(get_boolean(cscene, "use_square_samples")) {
|
||||||
integrator->diffuse_samples = diffuse_samples * diffuse_samples;
|
integrator->diffuse_samples = diffuse_samples * diffuse_samples;
|
||||||
integrator->glossy_samples = glossy_samples * glossy_samples;
|
integrator->glossy_samples = glossy_samples * glossy_samples;
|
||||||
integrator->transmission_samples = transmission_samples * transmission_samples;
|
integrator->transmission_samples = transmission_samples * transmission_samples;
|
||||||
@ -319,7 +319,7 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D b_v3d, const char *layer)
|
|||||||
render_layer.bound_samples = (use_layer_samples == 1);
|
render_layer.bound_samples = (use_layer_samples == 1);
|
||||||
if(use_layer_samples != 2) {
|
if(use_layer_samples != 2) {
|
||||||
int samples = b_rlay->samples();
|
int samples = b_rlay->samples();
|
||||||
if(get_boolean(cscene, "squared_samples") && !(get_boolean(cscene, "progressive")))
|
if(get_boolean(cscene, "use_square_samples"))
|
||||||
render_layer.samples = samples * samples;
|
render_layer.samples = samples * samples;
|
||||||
else
|
else
|
||||||
render_layer.samples = samples;
|
render_layer.samples = samples;
|
||||||
@ -412,10 +412,12 @@ SessionParams BlenderSync::get_session_params(BL::RenderEngine b_engine, BL::Use
|
|||||||
int preview_samples = get_int(cscene, "preview_samples");
|
int preview_samples = get_int(cscene, "preview_samples");
|
||||||
int preview_aa_samples = get_int(cscene, "preview_aa_samples");
|
int preview_aa_samples = get_int(cscene, "preview_aa_samples");
|
||||||
|
|
||||||
/* Squared samples for Non-Progressive only */
|
if(get_boolean(cscene, "use_square_samples")) {
|
||||||
if(get_boolean(cscene, "squared_samples")) {
|
|
||||||
aa_samples = aa_samples * aa_samples;
|
aa_samples = aa_samples * aa_samples;
|
||||||
preview_aa_samples = preview_aa_samples * preview_aa_samples;
|
preview_aa_samples = preview_aa_samples * preview_aa_samples;
|
||||||
|
|
||||||
|
samples = samples * samples;
|
||||||
|
preview_samples = preview_samples * preview_samples;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(get_boolean(cscene, "progressive") == 0) {
|
if(get_boolean(cscene, "progressive") == 0) {
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
import bpy
|
import bpy
|
||||||
cycles = bpy.context.scene.cycles
|
cycles = bpy.context.scene.cycles
|
||||||
|
|
||||||
cycles.squared_samples = True
|
cycles.use_square_samples = True
|
||||||
|
|
||||||
# Progressive
|
# Progressive
|
||||||
cycles.samples = 500
|
cycles.samples = 24
|
||||||
cycles.preview_samples = 100
|
cycles.preview_samples = 12
|
||||||
|
|
||||||
# Non-Progressive (squared)
|
# Non-Progressive
|
||||||
cycles.aa_samples = 8
|
cycles.aa_samples = 8
|
||||||
cycles.preview_aa_samples = 4
|
cycles.preview_aa_samples = 4
|
||||||
|
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
import bpy
|
import bpy
|
||||||
cycles = bpy.context.scene.cycles
|
cycles = bpy.context.scene.cycles
|
||||||
|
|
||||||
cycles.squared_samples = True
|
cycles.use_square_samples = True
|
||||||
|
|
||||||
# Progressive
|
# Progressive
|
||||||
cycles.samples = 100
|
cycles.samples = 12
|
||||||
cycles.preview_samples = 10
|
cycles.preview_samples = 6
|
||||||
|
|
||||||
# Non-Progressive (squared)
|
# Non-Progressive
|
||||||
cycles.aa_samples = 4
|
cycles.aa_samples = 4
|
||||||
cycles.preview_aa_samples = 2
|
cycles.preview_aa_samples = 2
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user