diff options
author | Nicholas Bishop <nicholasbishop@gmail.com> | 2015-02-13 00:19:02 +0300 |
---|---|---|
committer | Nicholas Bishop <nicholasbishop@gmail.com> | 2015-02-13 13:42:38 +0300 |
commit | 9691524970014032cd612b14fd468bfb0c402eb5 (patch) | |
tree | 53fd385faaadb7475778e27591be5cc9a3764502 | |
parent | 60e8a8099df44e1fc18542102421cb444888498b (diff) |
Better method for updating adjacent Ptex borders
-rw-r--r-- | intern/ptex/bpx_c_api.cpp | 4 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/bke_ptex.c | 26 |
2 files changed, 4 insertions, 26 deletions
diff --git a/intern/ptex/bpx_c_api.cpp b/intern/ptex/bpx_c_api.cpp index 7e57371c830..1b1e095ce48 100644 --- a/intern/ptex/bpx_c_api.cpp +++ b/intern/ptex/bpx_c_api.cpp @@ -377,6 +377,10 @@ bool BPX_rect_borders_update(BPXImageBuf *bpx_buf, const BPXRect *dst_rect, const ROI src_roi = bpx_rect_to_oiio_roi(*src_rect); bpx_create_border(buf, dst_roi, dst_edge, src_roi, src_edge); + + // Also update in the other direction. TODO(nicholasbishop): + // names are a bit confusing now + bpx_create_border(buf, src_roi, src_edge, dst_roi, dst_edge); } // Average adjacent borders to fill in diff --git a/source/blender/blenkernel/intern/bke_ptex.c b/source/blender/blenkernel/intern/bke_ptex.c index 2ce2efc96a6..fe2b71afaf9 100644 --- a/source/blender/blenkernel/intern/bke_ptex.c +++ b/source/blender/blenkernel/intern/bke_ptex.c @@ -585,21 +585,8 @@ static bool bke_ptex_imbuf_filter_borders_update(ImBuf *ibuf, GSet *rects) rects_stride = sizeof(*ibuf->ptex_rects); if (rects) { - /* TODO(nicholasbishop): this is not a great - * solution. Adjacent edges should probably just be updated - * together or something... also need to consider corners */ - GSet *adj_rects = BLI_gset_ptr_new("GSet adj_rects"); - GSET_ITER (iter, rects) { const BPXRect *rect = BLI_gsetIterator_getKey(&iter); - int side; - - for (side = 0; side < BPX_RECT_NUM_SIDES; side++) { - const int adj_index = rect->adj[side].index; - if (adj_index != BPX_RECT_SIDE_ADJ_NONE) { - BLI_gset_add(adj_rects, &all_rects[adj_index]); - } - } if (!BPX_rect_borders_update(bpx_buf, rect, all_rects, rects_stride)) @@ -608,19 +595,6 @@ static bool bke_ptex_imbuf_filter_borders_update(ImBuf *ibuf, GSet *rects) break; } } - - GSET_ITER (iter, adj_rects) { - const BPXRect *rect = BLI_gsetIterator_getKey(&iter); - - if (!BPX_rect_borders_update(bpx_buf, rect, all_rects, - rects_stride)) - { - result = false; - break; - } - } - - BLI_gset_free(adj_rects, NULL); } else { int i; |