Cycles: Remove Use Tiling option
Always enforce tiling of some size, up to the 8k tile size. Rendering very big images without tiles have a lot of challenges. While solving those challenges is not impossible, it does not seem to be a practical time investment. The internals of the way how Cycles work, including Cycles Standalone is not affected by this change. A possible downside is that path guiding might not work exactly how one would expect it to due to lack of information sharing across multiple tiles. This is something that never worked nicely, and camera animation and border render has the same issues, so it is not considered a stopper for this change. Fixes #145900 Co-authored-by: Brecht Van Lommel <brecht@blender.org> Pull Request: https://projects.blender.org/blender/blender/pulls/146031
This commit is contained in:
committed by
Sergey Sharybin
parent
5afaa1c4bd
commit
3ef2df3893
@@ -106,7 +106,6 @@ class AddPresetPerformance(AddPresetBase, Operator):
|
||||
"cycles.debug_use_compact_bvh",
|
||||
"cycles.debug_use_hair_bvh",
|
||||
"cycles.debug_bvh_time_steps",
|
||||
"cycles.use_auto_tile",
|
||||
"cycles.tile_size",
|
||||
]
|
||||
|
||||
|
||||
@@ -1046,14 +1046,14 @@ class CyclesRenderSettings(bpy.types.PropertyGroup):
|
||||
)
|
||||
|
||||
use_auto_tile: BoolProperty(
|
||||
name="Use Tiling",
|
||||
description="Render high resolution images in tiles to reduce memory usage, using the specified tile size. Tiles are cached to disk while rendering to save memory",
|
||||
name="Auto Tile",
|
||||
description="Deprecated, tiling is always enabled",
|
||||
default=True,
|
||||
)
|
||||
tile_size: IntProperty(
|
||||
name="Tile Size",
|
||||
default=2048,
|
||||
description="",
|
||||
description="Render high resolution images in tiles of this size, to reduce memory usage. Tiles are cached to disk while rendering to save memory",
|
||||
min=8, max=8192,
|
||||
)
|
||||
|
||||
|
||||
@@ -375,6 +375,7 @@ class CYCLES_RENDER_PT_sampling_path_guiding(CyclesButtonsPanel, Panel):
|
||||
cscene = scene.cycles
|
||||
|
||||
layout = self.layout
|
||||
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
layout.active = cscene.use_guiding
|
||||
@@ -385,6 +386,24 @@ class CYCLES_RENDER_PT_sampling_path_guiding(CyclesButtonsPanel, Panel):
|
||||
col.prop(cscene, "use_surface_guiding", text="Surface")
|
||||
col.prop(cscene, "use_volume_guiding", text="Volume", text_ctxt=i18n_contexts.id_id)
|
||||
|
||||
if cscene.use_guiding:
|
||||
# Calculation matches TileManager::compute_render_tile_size and
|
||||
# Session::get_effective_tile_size
|
||||
if cscene.tile_size < 128:
|
||||
tile_size = cscene.tile_size
|
||||
else:
|
||||
tile_size = (cscene.tile_size + 128 - 1) & ~(128 - 1)
|
||||
tile_size = min(tile_size, 8192)
|
||||
tile_area = tile_size ** 2
|
||||
|
||||
render_scale = scene.render.resolution_percentage / 100.0
|
||||
render_size_x = int(scene.render.resolution_x * render_scale)
|
||||
render_size_y = int(scene.render.resolution_y * render_scale)
|
||||
render_area = render_size_x * render_size_y
|
||||
|
||||
if render_area > tile_area and render_size_x <= 8192 and render_size_y <= 8192:
|
||||
layout.label(text="May work poorly with render tiling", icon='INFO')
|
||||
|
||||
|
||||
class CYCLES_RENDER_PT_sampling_path_guiding_debug(CyclesDebugButtonsPanel, Panel):
|
||||
bl_label = "Debug"
|
||||
@@ -855,11 +874,7 @@ class CYCLES_RENDER_PT_performance_memory(CyclesButtonsPanel, Panel):
|
||||
scene = context.scene
|
||||
cscene = scene.cycles
|
||||
|
||||
col = layout.column()
|
||||
col.prop(cscene, "use_auto_tile")
|
||||
sub = col.column()
|
||||
sub.active = cscene.use_auto_tile
|
||||
sub.prop(cscene, "tile_size")
|
||||
layout.prop(cscene, "tile_size")
|
||||
|
||||
|
||||
class CYCLES_RENDER_PT_performance_acceleration_structure(CyclesButtonsPanel, Panel):
|
||||
|
||||
@@ -101,7 +101,7 @@ def do_versions(self):
|
||||
library_versions.setdefault(library.version, []).append(library)
|
||||
|
||||
# Do versioning per library, since they might have different versions.
|
||||
max_need_versioning = (4, 2, 52)
|
||||
max_need_versioning = (5, 0, 77)
|
||||
for version, libraries in library_versions.items():
|
||||
if version > max_need_versioning:
|
||||
continue
|
||||
@@ -111,6 +111,13 @@ def do_versions(self):
|
||||
if scene.library not in libraries:
|
||||
continue
|
||||
|
||||
# Auto tiling is always enabled now
|
||||
if version <= (5, 0, 77):
|
||||
cscene = scene.cycles
|
||||
if not cscene.use_auto_tile:
|
||||
cscene.use_auto_tile = True
|
||||
cscene.tile_size = 8192
|
||||
|
||||
# Clamp Direct/Indirect separation in 270
|
||||
if version <= (2, 70, 0):
|
||||
cscene = scene.cycles
|
||||
|
||||
@@ -1005,7 +1005,7 @@ SessionParams BlenderSync::get_session_params(BL::RenderEngine &b_engine,
|
||||
BlenderSession::print_render_stats;
|
||||
|
||||
if (background) {
|
||||
params.use_auto_tile = RNA_boolean_get(&cscene, "use_auto_tile");
|
||||
params.use_auto_tile = true;
|
||||
params.tile_size = max(get_int(cscene, "tile_size"), 8);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -820,7 +820,6 @@ url_manual_mapping = (
|
||||
("bpy.types.cyclesrendersettings.film_exposure*", "render/cycles/render_settings/film.html#bpy-types-cyclesrendersettings-film-exposure"),
|
||||
("bpy.types.cyclesrendersettings.sample_offset*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-sample-offset"),
|
||||
("bpy.types.cyclesrendersettings.texture_limit*", "render/cycles/render_settings/simplify.html#bpy-types-cyclesrendersettings-texture-limit"),
|
||||
("bpy.types.cyclesrendersettings.use_auto_tile*", "render/cycles/render_settings/performance.html#bpy-types-cyclesrendersettings-use-auto-tile"),
|
||||
("bpy.types.cyclesrendersettings.use_denoising*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-use-denoising"),
|
||||
("bpy.types.editbone.bbone_custom_handle_start*", "animation/armatures/bones/properties/bendy_bones.html#bpy-types-editbone-bbone-custom-handle-start"),
|
||||
("bpy.types.editbone.bbone_handle_use_ease_end*", "animation/armatures/bones/properties/bendy_bones.html#bpy-types-editbone-bbone-handle-use-ease-end"),
|
||||
|
||||
@@ -8,5 +8,4 @@ cycles.debug_use_spatial_splits = False
|
||||
cycles.debug_use_compact_bvh = False
|
||||
cycles.debug_use_hair_bvh = True
|
||||
cycles.debug_bvh_time_steps = 0
|
||||
cycles.use_auto_tile = True
|
||||
cycles.tile_size = 2048
|
||||
|
||||
@@ -8,5 +8,4 @@ cycles.debug_use_spatial_splits = True
|
||||
cycles.debug_use_compact_bvh = False
|
||||
cycles.debug_use_hair_bvh = True
|
||||
cycles.debug_bvh_time_steps = 2
|
||||
cycles.use_auto_tile = True
|
||||
cycles.tile_size = 2048
|
||||
|
||||
@@ -8,5 +8,4 @@ cycles.debug_use_spatial_splits = False
|
||||
cycles.debug_use_compact_bvh = True
|
||||
cycles.debug_use_hair_bvh = True
|
||||
cycles.debug_bvh_time_steps = 0
|
||||
cycles.use_auto_tile = True
|
||||
cycles.tile_size = 512
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
/* Blender file format version. */
|
||||
#define BLENDER_FILE_VERSION BLENDER_VERSION
|
||||
#define BLENDER_FILE_SUBVERSION 76
|
||||
#define BLENDER_FILE_SUBVERSION 77
|
||||
|
||||
/* Minimum Blender version that supports reading file written with the current
|
||||
* version. Older Blender versions will test this and cancel loading the file, showing a warning to
|
||||
|
||||
Reference in New Issue
Block a user