* Starting to tackle WBX-397 by taking a different approach on computing draw ranges
* WIP
* Range computation is more or less done. Material indices still need a more robust approach
* Range material indices figured out mostly by trating them as edges in a graph. Also some profiling to max out pergf
* Added forward and backwards material index edges in order to be able to directly look them up rather than searching for them in an array
* Extended the new draw range integration approach to instanced batches
* Added vitest and wrote a first test for the DrawRange integration approach. Fixed some cicular dependencie which were messing up vitest runtime.
* A bunch of more tests
* Removed unused dep
* ci(viewer): test the viewer in CircleCI
* Include test-viewer as a dependency of later jobs
* Small updates
* Removed old range integration from all three batches
* Working on making the range update integration work on an array at a time
* Update range integration now works on entire arrays at a time. Almost twice as fast this way. Updates tests
* DrawRanges now also flattens the computed draw ranges, so we got rid of the old ugly way of flattening the ranges. Update MeshBatch, PointBatch and InstancedMeshBatch
* More adjustment to point batch
* Implemented a common PrimitiveBatch which can be used for any typical primitive based rendering (triangles, lines, points) as abstract. Our Mesh and Point batch will use most of the common implementation. Updated MeshBatch to extend PrimitiveBatch
* Updated PointBatch to extend PrimitiveBatch
* Tried making the instaned mesh batch extend the primitive batch but there was no point, they too different to make sense. Got rid of the pointless circular dependency between the instaned batch and mesh
* fixed viewer build
* Removed unused code and execution time measurements
---------
Co-authored-by: Iain Sproat <68657+iainsproat@users.noreply.github.com>
Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com>