diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-08-31 03:49:38 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-08-31 03:49:38 +0400 |
commit | 29f6616d609fbd92cf313b0fdec555c2fcb4ede0 (patch) | |
tree | e0c9500368c5210071cb841ea86f5674b0cf6f25 /intern/cycles/render/session.cpp | |
parent | 60ff60dcdc9f43891fb8a19e10f9bb7964a539bf (diff) |
Cycles: viewport render now takes scene color management settings into account,
except for curves, that's still missing from the OpenColorIO GLSL shader.
The pixels are stored in a half float texture, converterd from full float with
native GPU instructions and SIMD on the CPU, so it should be pretty quick.
Using a GLSL shader is useful for GPU render because it avoids a copy through
CPU memory.
Diffstat (limited to 'intern/cycles/render/session.cpp')
-rw-r--r-- | intern/cycles/render/session.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp index 01f8a950c8f..d18223d7ab3 100644 --- a/intern/cycles/render/session.cpp +++ b/intern/cycles/render/session.cpp @@ -56,7 +56,7 @@ Session::Session(const SessionParams& params_) } else { buffers = new RenderBuffers(device); - display = new DisplayBuffer(device); + display = new DisplayBuffer(device, params.display_buffer_linear); } session_thread = NULL; @@ -371,7 +371,6 @@ bool Session::acquire_tile(Device *tile_device, RenderTile& rtile) rtile.buffer = buffers->buffer.device_pointer; rtile.rng_state = buffers->rng_state.device_pointer; - rtile.rgba = display->rgba.device_pointer; rtile.buffers = buffers; device->map_tile(tile_device, rtile); @@ -415,7 +414,6 @@ bool Session::acquire_tile(Device *tile_device, RenderTile& rtile) rtile.buffer = tilebuffers->buffer.device_pointer; rtile.rng_state = tilebuffers->rng_state.device_pointer; - rtile.rgba = 0; rtile.buffers = tilebuffers; /* this will tag tile as IN PROGRESS in blender-side render pipeline, @@ -838,13 +836,14 @@ void Session::path_trace() void Session::tonemap() { /* add tonemap task */ - DeviceTask task(DeviceTask::TONEMAP); + DeviceTask task(DeviceTask::FILM_CONVERT); 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.rgba_byte = display->rgba_byte.device_pointer; + task.rgba_half = display->rgba_half.device_pointer; task.buffer = buffers->buffer.device_pointer; task.sample = tile_manager.state.sample; tile_manager.state.buffer.get_offset_stride(task.offset, task.stride); |