Commit: 173aeafc2765c3d10be0c953ba4b678f520349d9 Author: Lukas Stockner Date: Mon Jul 4 15:52:10 2016 +0200 Branches: soc-2016-cycles_denoising https://developer.blender.org/rB173aeafc2765c3d10be0c953ba4b678f520349d9
Cycles: Fix border rendering with denoising enabled The code assumed that the rendered image starts at (0, 0), which is of course wrong for border rendering. =================================================================== M intern/cycles/render/session.cpp =================================================================== diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp index ce5c962..a6a99f7 100644 --- a/intern/cycles/render/session.cpp +++ b/intern/cycles/render/session.cpp @@ -506,12 +506,16 @@ void Session::get_neighbor_tiles(RenderTile *tiles) { int center_idx = tiles[4].tile_index; assert(tile_manager.state.tiles[center_idx].state == Tile::DENOISE); - int width = tile_manager.params.width, height = tile_manager.params.height; + BufferParams buffer_params = tile_manager.params; + int4 image_region = make_int4(buffer_params.full_x, buffer_params.full_y, + buffer_params.full_x + buffer_params.width, buffer_params.full_y + buffer_params.height); + for(int dy = -1, i = 0; dy <= 1; dy++) { for(int dx = -1; dx <= 1; dx++, i++) { int px = tiles[4].x + dx*params.tile_size.x; int py = tiles[4].y + dy*params.tile_size.y; - if(px >= 0 && py >= 0 && px < width && py < height) { + if(px >= image_region.x && py >= image_region.y && + px < image_region.z && py < image_region.w) { int tile_index = center_idx + dy*tile_manager.state.tile_stride + dx; Tile *tile = &tile_manager.state.tiles[tile_index]; assert(tile->buffers); @@ -522,7 +526,6 @@ void Session::get_neighbor_tiles(RenderTile *tiles) tiles[i].w = tile->w; tiles[i].h = tile->h; - BufferParams buffer_params = tile_manager.params; buffer_params.full_x = tiles[i].x; buffer_params.full_y = tiles[i].y; buffer_params.width = tiles[i].w; @@ -532,8 +535,8 @@ void Session::get_neighbor_tiles(RenderTile *tiles) } else { tiles[i].buffer = (device_ptr)NULL; - tiles[i].x = clamp(px, 0, width); - tiles[i].y = clamp(py, 0, height); + tiles[i].x = clamp(px, image_region.x, image_region.z); + tiles[i].y = clamp(py, image_region.y, image_region.w); tiles[i].w = tiles[i].h = 0; } } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs