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.
- 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
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
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.
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)
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
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
Had a lot of Real Work to do today so that's probably all for betamine today. Tomorrow I might do "onequads" (like rails and ladders) and set it up to fetch chunks from regions dynamically (and explore the whole world).
Back up to a more reasonable framerate with unloading of distant chunks and frustrum culling in place (note C is given as a ratio now)
However, lots of verticies still need to go by making chunk tesselation aware of neighboring chunks (and not unconditionally rendering faces on chunk boundaries).