forked from bartvdbraak/blender
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.
This commit is contained in:
parent
4f812f6b21
commit
2505984b52
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user