Improve performance by aggressively merging meshes #94
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
So I'm procrastinating learning for exams again and decided to finally improve the performance of this program.
With this PR, instead of rendering only one diffuse and opacity texture per mesh, up to 16 can be drawn. This allows more meshes to be merged per node and reduces the amount of meshes from 4980 to 1356 for the city model. The per-core CPU load is reduced from 160% to 100% on my machine.
There is one drawback: Indexing an array using a vertex attribute may not be legal in GLSL (but it works for me), so I would need to replace that with some ugly loop if it doesn't work for you.
So, please test this PR on Windows and MacOS, but since this project is long over, this PR will probably stay open forever.