From 2505984b52862a4aa74af37e41d6ebdccc3c266f Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 25 Oct 2012 12:03:36 +0000 Subject: [PATCH] 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. --- intern/cycles/render/tile.cpp | 19 ++++++++++++++++++- intern/cycles/render/tile.h | 8 +++++++- 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::iterator TileManager::next_center_tile(int device) return best; } +list::iterator TileManager::next_simple_tile(int device) +{ + list::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::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::iterator next_center_tile(int device = 0); + /* returns closest tile to center of rendered tiles + * mimics behavior of blender internal's tile order + */ + list::iterator next_center_tile(int device); + + /* returns first unhandled tile starting from left bottom corner of the image */ + list::iterator next_simple_tile(int device); }; CCL_NAMESPACE_END