Compare commits

...

2 Commits

Author SHA1 Message Date
2f3508ed3a
Improve mesh indexing. 2022-12-31 06:20:30 +01:00
c3e50b7d60
Bump engine submodule and update timings. 2022-12-31 05:38:31 +01:00
3 changed files with 21 additions and 14 deletions

2
engine

@ -1 +1 @@
Subproject commit 3b21e1610a687edcd91d5fe1c05823c2834928db Subproject commit 1b9ce5410083bd9346aca642de6c8180116987e7

View File

@ -269,13 +269,13 @@ def main():
# for _ in range(10000): # for _ in range(10000):
# current_time = 0 # time.monotonic() - start_time # current_time = 0 # time.monotonic() - start_time
# Draw * 9999 : min = 0.13 , max = 0.86 , avg = 0.2 ms # Draw * 9999 : min = 0.14 , max = 0.43 , avg = 0.19 ms
# Draw * 9999 : min = 0.14 , max = 0.75 , avg = 0.2 ms # Draw * 9999 : min = 0.14 , max = 0.35 , avg = 0.19 ms
# Draw * 9999 : min = 0.14 , max = 0.84 , avg = 0.2 ms # Draw * 9999 : min = 0.13 , max = 0.44 , avg = 0.18 ms
# Frame * 9999 : min = 0.19 , max = 0.98 , avg = 0.34 ms # Frame * 9999 : min = 0.21 , max = 0.7 , avg = 0.33 ms
# Frame * 9999 : min = 0.21 , max = 0.94 , avg = 0.34 ms # Frame * 9999 : min = 0.2 , max = 0.54 , avg = 0.31 ms
# Frame * 9999 : min = 0.21 , max = 1.0 , avg = 0.34 ms # Frame * 9999 : min = 0.19 , max = 0.6 , avg = 0.29 ms
print("Quitting...") print("Quitting...")
del tests_batch del tests_batch

View File

@ -192,22 +192,29 @@ class ObjArchive(Archive):
if name: if name:
assert mesh assert mesh
objects[name] = mesh objects[name] = mesh
vertices = set()
for mesh in objects.values(): vertices = []
vertices |= frozenset(chain.from_iterable(mesh))
vertices = tuple(vertices)
indices = [] indices = []
models = {} models = {}
for name, mesh in sorted(objects.items()): for name, mesh in sorted(objects.items()):
offset = len(indices) offset = len(indices)
assert offset < 65536 assert offset < 65536
indices.extend(map(vertices.index, chain.from_iterable(mesh))) mesh_vertices = []
count = len(indices) - offset for vertex in chain.from_iterable(mesh):
if vertex not in mesh_vertices:
mesh_vertices.append(vertex)
base_vertex = len(vertices)
mesh_indices = list(map(lambda v: mesh_vertices.index(v) + base_vertex, chain.from_iterable(mesh)))
assert max(mesh_indices) < 65536
count = len(mesh_indices)
print(name, ": vertices =", count, "packed =", len(mesh_vertices))
assert count % 3 == 0 assert count % 3 == 0
count //= 3 count //= 3
assert count < 65536 assert count < 65536
print(name, ": offset =", offset, "triangles =", count) vertices.extend(mesh_vertices)
indices.extend(mesh_indices)
models[name] = (offset, count) models[name] = (offset, count)
name = str(objpath.stem) name = str(objpath.stem)
assert name not in self.vertices_db.keys() assert name not in self.vertices_db.keys()
#TODO: move to math #TODO: move to math