v1.6.0
-
Renderer now lives on its own thread.
This is a major architectural change that deserves far more of an
explanation than I'm going to provide here.I've been wanting to split the renderer onto it's own thread for quite some
time, mostly as an academic exercise.It turned out to create more maintenance burden than I would have liked,
although it does make a few operations easier/cleaner, such as freeing GPU
resources from worker threads.The API is a message-queue based system for which most of the boilerplate is
generated by poof. There's anasyncify_render_function
poof routine that
takes a function prototype and spits out anAsync
version of the function
which pushes a render job onto a work queue. At this point it's up to the
programmer to remember to go actually call the function in the renderer
(which is made easier by being reminded of the new, non-enumerated case by the compiler). -
Debug system once again welded directly into the program instead of compiled to a DLL
I got tired of maintaining globals in so many places and decided the cost of
having the debug system split out into a DLL was not worth the flexibility
of being able to load it in other programs. If I want to use the profiler
in other programs, I'll just compile it in. -
Special, compressed vertex data type for world_chunk
I wanted to see how much performance I could squeeze out of compressing
position and normal data for chunks to 8 bit int from 32 bit float. Turns
out not a massive amount (deferred renderer is mostly texture-bound), but
it did shave off a bit. -
Many other misc fixes
I didn't document them along the way, and wrote this months after the work was
done, so .. who knows.