Compare commits

...

2 Commits

Author SHA1 Message Date
Roz K 2f3508ed3a
Improve mesh indexing. 2022-12-31 06:20:30 +01:00
Roz K 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):
# 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.75 , avg = 0.2 ms
# Draw * 9999 : min = 0.14 , max = 0.84 , avg = 0.2 ms
# Draw * 9999 : min = 0.14 , max = 0.43 , avg = 0.19 ms
# Draw * 9999 : min = 0.14 , max = 0.35 , avg = 0.19 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.94 , avg = 0.34 ms
# Frame * 9999 : min = 0.21 , max = 1.0 , avg = 0.34 ms
# Frame * 9999 : min = 0.21 , max = 0.7 , avg = 0.33 ms
# Frame * 9999 : min = 0.2 , max = 0.54 , avg = 0.31 ms
# Frame * 9999 : min = 0.19 , max = 0.6 , avg = 0.29 ms
print("Quitting...")
del tests_batch

View File

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