[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51618] trunk/blender/intern/cycles/render : Cycles: use simplier strategy in next_tile for viewport rendering

Sergey Sharybin sergey.vfx at gmail.com
Thu Oct 25 14:03:41 CEST 2012


Revision: 51618
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51618
Author:   nazgul
Date:     2012-10-25 12:03:36 +0000 (Thu, 25 Oct 2012)
Log Message:
-----------
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.

Modified Paths:
--------------
    trunk/blender/intern/cycles/render/tile.cpp
    trunk/blender/intern/cycles/render/tile.h

Modified: trunk/blender/intern/cycles/render/tile.cpp
===================================================================
--- trunk/blender/intern/cycles/render/tile.cpp	2012-10-25 11:48:56 UTC (rev 51617)
+++ trunk/blender/intern/cycles/render/tile.cpp	2012-10-25 12:03:36 UTC (rev 51618)
@@ -214,11 +214,28 @@
 	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;

Modified: trunk/blender/intern/cycles/render/tile.h
===================================================================
--- trunk/blender/intern/cycles/render/tile.h	2012-10-25 11:48:56 UTC (rev 51617)
+++ trunk/blender/intern/cycles/render/tile.h	2012-10-25 12:03:36 UTC (rev 51618)
@@ -102,7 +102,13 @@
 	/* 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




More information about the Bf-blender-cvs mailing list