Here's today's exciting screenshot, in which the terrain renderer is missing while a bunch of code is refactored to improve the world management and rendering pipeline
Instead of doing anything I said I would do today, I am working on reorganizing the code into something resembling an actual game, like moving the render loop out of main() and making the list of render layers and updated modules dynamic instead of hardcoded
For culling I'm going to start with culling entire chunks but I have a few reasons to suppose that splitting chunks into 16x16x16 cubes would have performance gains in frustrum culling but also in a few other places as well, like re-tesselation when a chunk is changed (e.g. by placing/removing a block)
Added some key performance indicators to the debug overlay: (C)hunks rendered, (V)erticies rendered, and the ratio (V/C). The goal is to bring all of these number down.
63M verticies is entirely too many for the scene shown here -- the tesselator needs to find more opportunities to reduce the V/C count, and frustrum culling needs to reduce the number of chunks rendered as well.
Terrain renderer's back, now integrated into a dynamic chunk manager!
Watch that FPS counter drop like a rock -- there are still a number of performance improvements I have to do (e.g. frustrum culling) and chunks are never actually *un*loaded once loaded
I have been the subject of a prolonged and coordinated campaign of hate and harassment in retaliation for using my platform to express progressive views and challenge hate. But I want to take a second to acknowledge the real victims here.
@lanodan I just yote the tip of the master branch so I could do some rebasing without working around it, git pushed and then unyote it with this command, guesstimating that 2 hours was plenty
- Models for stairs, "twoquads" (e.g. flowers) and "onequads" (e.g. ladders) - Animated textures - Finalizing the lighting system and day/night cycle - Stars in the night sky - Particle effects for e.g. torches
After that it will probably make sense to pause rendering to flesh out the chunk manager and connect it to a server
It took me a long time to realize that the "temperature" that goes into the sky color calculation was not the "temperature" of the biome itself but rather the "temperature" of the noise function that Minecraft uses to pick the biome. Also it's *not* HSL, it's HSV.