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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-09-04 17:29:07 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-09-04 17:29:07 +0400
commitadea12cb01e4c4f18f345dfbbf49e9e622192e4e (patch)
treeb43018344c696e4d59437fabc7f17f5b9d6a8e80 /intern/cycles/render/session.h
parent68563134d4800be4eb46aa6b598fd719cdaf2980 (diff)
Cycles: merge of changes from tomato branch.
Regular rendering now works tiled, and supports save buffers to save memory during render and cache render results. Brick texture node by Thomas. http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/Textures#Brick_Texture Image texture Blended Box Mapping. http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/Textures#Image_Texture http://mango.blender.org/production/blended_box/ Various bug fixes by Sergey and Campbell. * Fix for reading freed memory in some node setups. * Fix incorrect memory read when synchronizing mesh motion. * Fix crash appearing when direct light usage is different on different layers. * Fix for vector pass gives wrong result in some circumstances. * Fix for wrong resolution used for rendering Render Layer node. * Option to cancel rendering when doing initial synchronization. * No more texture limit when using CPU render. * Many fixes for new tiled rendering.
Diffstat (limited to 'intern/cycles/render/session.h')
-rw-r--r--intern/cycles/render/session.h27
1 files changed, 19 insertions, 8 deletions
diff --git a/intern/cycles/render/session.h b/intern/cycles/render/session.h
index 90616f011ea..7b01357a2b7 100644
--- a/intern/cycles/render/session.h
+++ b/intern/cycles/render/session.h
@@ -47,8 +47,8 @@ public:
bool progressive;
bool experimental;
int samples;
- int tile_size;
- int min_size;
+ int2 tile_size;
+ int resolution;
int threads;
double cancel_timeout;
@@ -63,8 +63,8 @@ public:
progressive = false;
experimental = false;
samples = INT_MAX;
- tile_size = 64;
- min_size = 64;
+ tile_size = make_int2(64, 64);
+ resolution = 4;
threads = 0;
cancel_timeout = 0.1;
@@ -81,7 +81,7 @@ public:
&& progressive == params.progressive
&& experimental == params.experimental
&& tile_size == params.tile_size
- && min_size == params.min_size
+ && resolution == params.resolution
&& threads == params.threads
&& cancel_timeout == params.cancel_timeout
&& reset_timeout == params.reset_timeout
@@ -102,7 +102,10 @@ public:
DisplayBuffer *display;
Progress progress;
SessionParams params;
- int sample;
+ TileManager tile_manager;
+
+ boost::function<void(RenderTile&)> write_render_tile_cb;
+ boost::function<void(RenderTile&)> update_render_tile_cb;
Session(const SessionParams& params);
~Session();
@@ -130,7 +133,7 @@ protected:
void update_status_time(bool show_pause = false, bool show_done = false);
void tonemap();
- void path_trace(Tile& tile);
+ void path_trace();
void reset_(BufferParams& params, int samples);
void run_cpu();
@@ -141,7 +144,12 @@ protected:
bool draw_gpu(BufferParams& params);
void reset_gpu(BufferParams& params, int samples);
- TileManager tile_manager;
+ bool acquire_tile(Device *tile_device, RenderTile& tile);
+ void update_tile_sample(RenderTile& tile);
+ void release_tile(RenderTile& tile);
+
+ void update_progress_sample();
+
bool device_use_gl;
thread *session_thread;
@@ -155,6 +163,9 @@ protected:
bool pause;
thread_condition_variable pause_cond;
thread_mutex pause_mutex;
+ thread_mutex tile_mutex;
+ thread_mutex buffers_mutex;
+ thread_mutex display_mutex;
bool kernels_loaded;