From 2166f9fa072cd1b2ff14a34cfdf076ac6b4e91e7 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Wed, 6 Sep 2017 18:28:23 -0700 Subject: [PATCH] Reverse Z order of interior elements for early Z --- demo/server/src/main.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/demo/server/src/main.rs b/demo/server/src/main.rs index 293edd14..6f432601 100644 --- a/demo/server/src/main.rs +++ b/demo/server/src/main.rs @@ -318,6 +318,20 @@ fn partition_paths(partitioner: &mut Partitioner, subpath_indices: &[SubpathRang }) } + // Reverse interior indices for early Z optimizations. + let mut new_cover_interior_indices = Vec::with_capacity(cover_interior_indices.len()); + for path_indices in &mut path_indices { + let old_byte_start = path_indices.cover_interior_indices.start * mem::size_of::(); + let old_byte_end = path_indices.cover_interior_indices.end * mem::size_of::(); + let new_start_index = new_cover_interior_indices.len() / mem::size_of::(); + new_cover_interior_indices.extend( + cover_interior_indices[old_byte_start..old_byte_end].into_iter()); + let new_end_index = new_cover_interior_indices.len() / mem::size_of::(); + path_indices.cover_interior_indices.start = new_start_index; + path_indices.cover_interior_indices.end = new_end_index; + } + cover_interior_indices = new_cover_interior_indices; + let encoded_path_data = PartitionEncodedPathData { b_quads: base64::encode(&b_quads), b_vertex_positions: base64::encode(&b_vertex_positions),