[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42796] trunk/blender/intern/cycles/render : Cycles: some small code refactoring related to buffer parameters.
Brecht Van Lommel
brechtvanlommel at pandora.be
Wed Dec 21 14:48:42 CET 2011
Revision: 42796
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42796
Author: blendix
Date: 2011-12-21 13:48:35 +0000 (Wed, 21 Dec 2011)
Log Message:
-----------
Cycles: some small code refactoring related to buffer parameters.
Modified Paths:
--------------
trunk/blender/intern/cycles/render/buffers.h
trunk/blender/intern/cycles/render/session.cpp
trunk/blender/intern/cycles/render/tile.cpp
trunk/blender/intern/cycles/render/tile.h
Modified: trunk/blender/intern/cycles/render/buffers.h
===================================================================
--- trunk/blender/intern/cycles/render/buffers.h 2011-12-21 13:31:28 UTC (rev 42795)
+++ trunk/blender/intern/cycles/render/buffers.h 2011-12-21 13:48:35 UTC (rev 42796)
@@ -56,6 +56,12 @@
full_height = 0;
}
+ void get_offset_stride(int& offset, int& stride)
+ {
+ offset = -(full_x + full_y*width);
+ stride = width;
+ }
+
bool modified(const BufferParams& params)
{
return !(full_x == params.full_x
Modified: trunk/blender/intern/cycles/render/session.cpp
===================================================================
--- trunk/blender/intern/cycles/render/session.cpp 2011-12-21 13:31:28 UTC (rev 42795)
+++ trunk/blender/intern/cycles/render/session.cpp 2011-12-21 13:48:35 UTC (rev 42796)
@@ -515,10 +515,8 @@
knows nothing about progressive or cropped rendering, it just gets the
image dimensions passed in */
Camera *cam = scene->camera;
- float progressive_x = tile_manager.state.width/(float)tile_manager.params.width;
- float progressive_y = tile_manager.state.height/(float)tile_manager.params.height;
- int width = tile_manager.params.full_width*progressive_x;
- int height = tile_manager.params.full_height*progressive_y;
+ int width = tile_manager.state.buffer.full_width;
+ int height = tile_manager.state.buffer.full_height;
if(width != cam->width || height != cam->height) {
cam->width = width;
@@ -574,16 +572,15 @@
/* add path trace task */
DeviceTask task(DeviceTask::PATH_TRACE);
- task.x = tile_manager.state.full_x + tile.x;
- task.y = tile_manager.state.full_y + tile.y;
+ task.x = tile_manager.state.buffer.full_x + tile.x;
+ task.y = tile_manager.state.buffer.full_y + tile.y;
task.w = tile.w;
task.h = tile.h;
task.buffer = buffers->buffer.device_pointer;
task.rng_state = buffers->rng_state.device_pointer;
task.sample = tile_manager.state.sample;
task.resolution = tile_manager.state.resolution;
- task.offset = -(tile_manager.state.full_x + tile_manager.state.full_y*tile_manager.state.width);
- task.stride = tile_manager.state.width;
+ tile_manager.state.buffer.get_offset_stride(task.offset, task.stride);
device->task_add(task);
}
@@ -593,16 +590,15 @@
/* add tonemap task */
DeviceTask task(DeviceTask::TONEMAP);
- task.x = tile_manager.state.full_x;
- task.y = tile_manager.state.full_y;
- task.w = tile_manager.state.width;
- task.h = tile_manager.state.height;
+ task.x = tile_manager.state.buffer.full_x;
+ task.y = tile_manager.state.buffer.full_y;
+ task.w = tile_manager.state.buffer.width;
+ task.h = tile_manager.state.buffer.height;
task.rgba = display->rgba.device_pointer;
task.buffer = buffers->buffer.device_pointer;
task.sample = tile_manager.state.sample;
task.resolution = tile_manager.state.resolution;
- task.offset = -(tile_manager.state.full_x + tile_manager.state.full_y*tile_manager.state.width);
- task.stride = tile_manager.state.width;
+ tile_manager.state.buffer.get_offset_stride(task.offset, task.stride);
if(task.w > 0 && task.h > 0) {
device->task_add(task);
Modified: trunk/blender/intern/cycles/render/tile.cpp
===================================================================
--- trunk/blender/intern/cycles/render/tile.cpp 2011-12-21 13:31:28 UTC (rev 42795)
+++ trunk/blender/intern/cycles/render/tile.cpp 2011-12-21 13:48:35 UTC (rev 42796)
@@ -55,10 +55,7 @@
samples = samples_;
- state.full_x = 0;
- state.full_y = 0;
- state.width = 0;
- state.height = 0;
+ state.buffer = BufferParams();
state.sample = -1;
state.resolution = start_resolution;
state.tiles.clear();
@@ -92,10 +89,13 @@
}
}
- state.full_x = params.full_x/resolution;
- state.full_y = params.full_y/resolution;
- state.width = image_w;
- state.height = image_h;
+ state.buffer.width = image_w;
+ state.buffer.height = image_h;
+
+ state.buffer.full_x = params.full_x/resolution;
+ state.buffer.full_y = params.full_y/resolution;
+ state.buffer.full_width = max(1, params.full_width/resolution);
+ state.buffer.full_height = max(1, params.full_height/resolution);
}
bool TileManager::done()
Modified: trunk/blender/intern/cycles/render/tile.h
===================================================================
--- trunk/blender/intern/cycles/render/tile.h 2011-12-21 13:31:28 UTC (rev 42795)
+++ trunk/blender/intern/cycles/render/tile.h 2011-12-21 13:48:35 UTC (rev 42796)
@@ -41,11 +41,9 @@
class TileManager {
public:
BufferParams params;
+
struct State {
- int full_x;
- int full_y;
- int width;
- int height;
+ BufferParams buffer;
int sample;
int resolution;
list<Tile> tiles;
More information about the Bf-blender-cvs
mailing list