From 29750388914c3b23f7398aa14f7477888dbae842 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Sat, 11 Nov 2017 14:04:57 -0800 Subject: [PATCH] Reenable early Z. It regressed again! --- demo/client/src/renderer.ts | 37 +++++++++++++++++++++++---------- partitioner/src/mesh_library.rs | 2 +- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/demo/client/src/renderer.ts b/demo/client/src/renderer.ts index d83fc730..5c69b3f1 100644 --- a/demo/client/src/renderer.ts +++ b/demo/client/src/renderer.ts @@ -684,17 +684,32 @@ function getMeshIndexRange(indexRanges: Range[], pathRange: Range): Range { if (indexRanges.length === 0) return new Range(0, 0); - let firstIndex; - if (pathRange.start - 1 >= indexRanges.length) - firstIndex = unwrapUndef(_.last(indexRanges)).end; - else - firstIndex = indexRanges[pathRange.start - 1].start; + const lastIndexRange = unwrapUndef(_.last(indexRanges)); + const descending = indexRanges[0].start > lastIndexRange.start; - let lastIndex; - if (pathRange.end - 1 >= indexRanges.length) - lastIndex = unwrapUndef(_.last(indexRanges)).end; - else - lastIndex = indexRanges[pathRange.end - 1].start; + pathRange = new Range(pathRange.start - 1, pathRange.end - 1); - return new Range(firstIndex, lastIndex); + let startIndex; + if (pathRange.start >= indexRanges.length) + startIndex = lastIndexRange.end; + else if (!descending) + startIndex = indexRanges[pathRange.start].start; + else + startIndex = indexRanges[pathRange.start].end; + + let endIndex; + if (pathRange.end >= indexRanges.length) + endIndex = lastIndexRange.end; + else if (!descending) + endIndex = indexRanges[pathRange.end].start; + else + endIndex = indexRanges[pathRange.end - 1].start; + + if (descending) { + const tmp = startIndex; + startIndex = endIndex; + endIndex = tmp; + } + + return new Range(startIndex, endIndex); } diff --git a/partitioner/src/mesh_library.rs b/partitioner/src/mesh_library.rs index 4f882455..fdcfa32b 100644 --- a/partitioner/src/mesh_library.rs +++ b/partitioner/src/mesh_library.rs @@ -140,7 +140,7 @@ impl MeshLibrary { let mut new_interior_indices = Vec::with_capacity(self.cover_indices.interior_indices.len()); - for path_range in &mut self.path_ranges { + for path_range in self.path_ranges.iter_mut().rev() { let old_interior_indices = &self.cover_indices.interior_indices[..]; let old_range = path_range.cover_interior_indices.clone(); let old_range = (old_range.start as usize)..(old_range.end as usize);