From 7f13b0abaa76a5e90674d5733f8162f02ceab693 Mon Sep 17 00:00:00 2001 From: Aaditya Dhruv Date: Sat, 31 Jan 2026 03:22:27 -0600 Subject: Rework chunk rendering to get a 100x performance boost! - Switching to semi-chunk mesh rendering just 100x the framerate, it was running at around 100fps for 3 CHUNK_DISTANCE, and pushing it above would make it drop to 30. Now it runs at 9000 frames per second with CHUNK_DISTANCE of 8, probably can push it even more - What is bizarre is this is just from the reduction in draw calls, I still need to implement face culling for invisible blocks (simple) and frustrum culling (using AABB) or maybe octrees - Block is way way more simplifed, it's just metadata about a coordinate in the chunk block array - All rendering and mesh generation code is handled by chunks. There is a VAO, single VBO and EBO for each chunk. The data buffer is loaded into the GPU with a chunk_load, and it stays like that until it is loaded again. chunk_load is called if we move chunks, in engine_update. Here we unload existing chunks, then load the new ones --- src/camera.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/camera.c') diff --git a/src/camera.c b/src/camera.c index 7a23a17..cbea1ff 100644 --- a/src/camera.c +++ b/src/camera.c @@ -56,7 +56,7 @@ void camera_move(struct camera *camera, enum DIRECTION move) { // Right hand rule - this will be on the righ (positive) glm_vec3_crossn(unit_direction, camera->up, unit_direction); } - float scale = 0.2f; + float scale = 0.8f; glm_vec3_scale(unit_direction, scale, unit_direction); glm_vec3_add(camera->position, unit_direction, camera->position); } -- cgit