[Bf-blender-cvs] [d97d9166ed] cycles-tiles-rework: Cycles: Implement the get_ideal_tile_size function
Mai Lavelle
noreply at git.blender.org
Fri Jan 13 02:52:40 CET 2017
Commit: d97d9166ed001406f7f186e7e787fc5a046a2208
Author: Mai Lavelle
Date: Wed Jan 11 22:19:24 2017 -0500
Branches: cycles-tiles-rework
https://developer.blender.org/rBd97d9166ed001406f7f186e7e787fc5a046a2208
Cycles: Implement the get_ideal_tile_size function
Since devices will be rendering many tiles at once the tile size chosen
is on the smaller side.
A limited selection of tiles sizes is provided as an option. This may be
removed later, for now its mostly useful for debugging.
===================================================================
M intern/cycles/blender/addon/__init__.py
M intern/cycles/blender/addon/properties.py
M intern/cycles/blender/addon/ui.py
M intern/cycles/blender/blender_session.cpp
M intern/cycles/blender/blender_sync.cpp
===================================================================
diff --git a/intern/cycles/blender/addon/__init__.py b/intern/cycles/blender/addon/__init__.py
index 2938831787..62dfbba1d2 100644
--- a/intern/cycles/blender/addon/__init__.py
+++ b/intern/cycles/blender/addon/__init__.py
@@ -88,6 +88,9 @@ class CyclesRender(bpy.types.RenderEngine):
else:
self.report({'ERROR'}, "OSL support disabled in this build.")
+ def get_ideal_tile_size(self, scene):
+ return tuple(int(x) for x in scene.cycles.tile_size.split('x'))
+
def engine_exit():
engine.exit()
diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py
index 3616b13e75..d931502917 100644
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@ -478,13 +478,6 @@ class CyclesRenderSettings(bpy.types.PropertyGroup):
default=0.0,
)
- cls.debug_tile_size = IntProperty(
- name="Tile Size",
- description="",
- min=1, max=4096,
- default=1024,
- )
-
cls.preview_start_resolution = IntProperty(
name="Start Resolution",
description="Resolution to start rendering preview at, "
@@ -535,6 +528,16 @@ class CyclesRenderSettings(bpy.types.PropertyGroup):
default='HILBERT_SPIRAL',
options=set(), # Not animatable!
)
+ cls.tile_size = EnumProperty(
+ name="Tile Size",
+ description="Size of tiles while rendering",
+ items=(
+ ("16x16", "16x16", ""),
+ ("32x32", "32x32", ""),
+ ("64x64", "64x64", ""),
+ ),
+ default='32x32',
+ )
cls.use_progressive_refine = BoolProperty(
name="Progressive Refine",
description="Instead of rendering each tile until it is finished, "
diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py
index 3f7730efbb..8539049fe3 100644
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@ -385,9 +385,7 @@ class CyclesRender_PT_performance(CyclesButtonsPanel, Panel):
sub = col.column(align=True)
sub.label(text="Tiles:")
sub.prop(cscene, "tile_order", text="")
-
- sub.prop(rd, "tile_x", text="X")
- sub.prop(rd, "tile_y", text="Y")
+ sub.prop(cscene, "tile_size", text="")
sub.prop(cscene, "use_progressive_refine")
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index 21166b2f15..1a8ef56f43 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -673,7 +673,10 @@ void BlenderSession::bake(BL::Object& b_object,
SessionParams session_params = BlenderSync::get_session_params(b_engine, b_userpref, b_scene, background);
BufferParams buffer_params = BlenderSync::get_buffer_params(b_render, b_v3d, b_rv3d, scene->camera, width, height);
- scene->bake_manager->set_shader_limit((size_t)b_engine.tile_x(), (size_t)b_engine.tile_y());
+ /* TODO(mai): baking doesnt handle splitting work to multiple devices/threads very well
+ * until thats improved use a larger work size to keep performance on gpu devices
+ */
+ scene->bake_manager->set_shader_limit(256, 256);
/* set number of samples */
session->tile_manager.set_samples(session_params.samples);
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 38b2ce19e8..7467903ee5 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -643,21 +643,7 @@ SessionParams BlenderSync::get_session_params(BL::RenderEngine& b_engine,
}
/* tiles */
- if(params.device.type != DEVICE_CPU && !background) {
- /* currently GPU could be much slower than CPU when using tiles,
- * still need to be investigated, but meanwhile make it possible
- * to work in viewport smoothly
- */
- int debug_tile_size = get_int(cscene, "debug_tile_size");
-
- params.tile_size = make_int2(debug_tile_size, debug_tile_size);
- }
- else {
- int tile_x = b_engine.tile_x();
- int tile_y = b_engine.tile_y();
-
- params.tile_size = make_int2(tile_x, tile_y);
- }
+ params.tile_size = make_int2(b_engine.tile_x(), b_engine.tile_y());
if((BlenderSession::headless == false) && background) {
params.tile_order = (TileOrder)get_enum(cscene, "tile_order");
More information about the Bf-blender-cvs
mailing list