Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-10-25 16:03:36 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-10-25 16:03:36 +0400
commit2505984b52862a4aa74af37e41d6ebdccc3c266f (patch)
tree627455fb175b67070c7684e6161c13f59b22e817
parent4f812f6b21fa033bf0f56519b0e1ea5a42fb1362 (diff)
Cycles: use simplier strategy in next_tile for viewport rendering
No need to find tile closest to rendered center in this case, just return first possible tile. Saves some computation power.
-rw-r--r--intern/cycles/render/tile.cpp19
-rw-r--r--intern/cycles/render/tile.h8
2 files changed, 25 insertions, 2 deletions
diff --git a/intern/cycles/render/tile.cpp b/intern/cycles/render/tile.cpp
index 9928186a12f..c294239bac0 100644
--- a/intern/cycles/render/tile.cpp
+++ b/intern/cycles/render/tile.cpp
@@ -214,11 +214,28 @@ list<Tile>::iterator TileManager::next_center_tile(int device)
return best;
}
+list<Tile>::iterator TileManager::next_simple_tile(int device)
+{
+ list<Tile>::iterator iter;
+
+ int logical_device = preserve_tile_device? device: 0;
+
+ for(iter = state.tiles.begin(); iter != state.tiles.end(); iter++) {
+ if(iter->device == logical_device && iter->rendering == false)
+ return iter;
+ }
+
+ return state.tiles.end();
+}
+
bool TileManager::next_tile(Tile& tile, int device)
{
list<Tile>::iterator tile_it;
- tile_it = next_center_tile(device);
+ if(background)
+ tile_it = next_center_tile(device);
+ else
+ tile_it = next_simple_tile(device);
if(tile_it != state.tiles.end()) {
tile_it->rendering = true;
diff --git a/intern/cycles/render/tile.h b/intern/cycles/render/tile.h
index ad1e84cfb7b..6f7a8f20734 100644
--- a/intern/cycles/render/tile.h
+++ b/intern/cycles/render/tile.h
@@ -102,7 +102,13 @@ protected:
/* slices image into as much pieces as how many devices are rendering this image */
void gen_tiles_sliced();
- list<Tile>::iterator next_center_tile(int device = 0);
+ /* returns closest tile to center of rendered tiles
+ * mimics behavior of blender internal's tile order
+ */
+ list<Tile>::iterator next_center_tile(int device);
+
+ /* returns first unhandled tile starting from left bottom corner of the image */
+ list<Tile>::iterator next_simple_tile(int device);
};
CCL_NAMESPACE_END