diff options
| author | Aaditya Dhruv <[email protected]> | 2026-01-30 20:27:21 -0600 |
|---|---|---|
| committer | Aaditya Dhruv <[email protected]> | 2026-01-30 20:27:21 -0600 |
| commit | 0c3e1f450f591d871c2779504b4113daf891fd1b (patch) | |
| tree | d8d3d2698fb182d63032144961f1ebdbe2ca2262 | |
| parent | 1a721b98caf7559f4a18baa8d3b92269e8f1f6ce (diff) | |
Minor performance boost + better input
Draw triangles in correct counter clock order, back face wasn't correct
| -rw-r--r-- | shaders/fragment.glsl | 7 | ||||
| -rw-r--r-- | src/block.c | 10 | ||||
| -rw-r--r-- | src/camera.c | 2 | ||||
| -rw-r--r-- | src/engine.c | 3 | ||||
| -rw-r--r-- | src/engine.h | 2 | ||||
| -rw-r--r-- | src/input.c | 30 |
6 files changed, 30 insertions, 24 deletions
diff --git a/shaders/fragment.glsl b/shaders/fragment.glsl index 6222c27..c13f4a2 100644 --- a/shaders/fragment.glsl +++ b/shaders/fragment.glsl @@ -7,7 +7,12 @@ in vec3 frag_pos; in vec2 text_coord; uniform sampler2D block_texture; void main() { - vec3 ambient_color = vec3(0.1); + vec3 top_ambient = vec3(0.5); + vec3 ambient_dir = vec3(0.0f, 1.0f, 0.0f); + vec3 bottom_ambient = vec3(0.1); + float value = dot(normal, ambient_dir) * 0.5 + 0.3; + vec3 inter = mix(bottom_ambient,top_ambient,value); + vec3 ambient_color = inter; vec3 norm = normalize(normal); vec3 light_dir = normalize(vec3(1.0f, 2.0f, 1.0f)); float diff = max(dot(norm, light_dir), 0.0); diff --git a/src/block.c b/src/block.c index 14ffa08..d03a137 100644 --- a/src/block.c +++ b/src/block.c @@ -46,18 +46,18 @@ void block_load_gpu(struct block* blk) { 0.0f, 0.0f, 1.0f, // Front normal 1.0f, 0.0f, - 1.0f, 1.0f, -1.0f, // top-right (back plane) - 0.0f, 0.0f, -1.0f, // Back normal - 1.0f, 1.0f, 0.0f, 1.0f, -1.0f, // top-left (back plane) 0.0f, 0.0f, -1.0f, // Back normal 0.0f, 1.0f, - 0.0f, 0.0f, -1.0f, // bottom-left (back plane) + 1.0f, 1.0f, -1.0f, // top-right (back plane) 0.0f, 0.0f, -1.0f, // Back normal - 0.0f, 0.0f, + 1.0f, 1.0f, 1.0f, 0.0f, -1.0f, // bottom-right (back plane) 0.0f, 0.0f, -1.0f, // Back normal 1.0f, 0.0f, + 0.0f, 0.0f, -1.0f, // bottom-left (back plane) + 0.0f, 0.0f, -1.0f, // Back normal + 0.0f, 0.0f, 1.0f, 1.0f, -1.0f, // top-right (back plane) 1.0f, 0.0f, 0.0f, // Right normal diff --git a/src/camera.c b/src/camera.c index 18cfb33..7a23a17 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.3f; + float scale = 0.2f; glm_vec3_scale(unit_direction, scale, unit_direction); glm_vec3_add(camera->position, unit_direction, camera->position); } diff --git a/src/engine.c b/src/engine.c index 5b6cf05..c5a9220 100644 --- a/src/engine.c +++ b/src/engine.c @@ -122,6 +122,9 @@ void engine_start(struct engine* engine) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClearColor(0.529f, 0.808f, 0.922f, 1.0f); glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + glCullFace(GL_BACK); + glFrontFace(GL_CCW); //glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); glUseProgram(engine->shader->program); // Update engine managed objects diff --git a/src/engine.h b/src/engine.h index 3248d40..e7ffdaa 100644 --- a/src/engine.h +++ b/src/engine.h @@ -9,7 +9,7 @@ // We want a square around curr_chunk, and a side of the square will be 1 // (center chunk) + 2 * CHUNK_DISTANCE (either side of center) // loaded chunks = (1 + CHUNK_DISTANCE * 2)^2 -#define CHUNK_DISTANCE 2 +#define CHUNK_DISTANCE 3 struct engine { struct window* window; diff --git a/src/input.c b/src/input.c index b4dde18..06f63a5 100644 --- a/src/input.c +++ b/src/input.c @@ -26,22 +26,20 @@ void input_handle(struct engine *engine) { } if (event.type == SDL_KEYDOWN) { SDL_KeyboardEvent key = event.key; - switch (key.keysym.sym) { - case SDLK_w: - camera_move(engine->camera, FORWARD); - break; - case SDLK_a: - camera_move(engine->camera, LEFT); - break; - case SDLK_s: - camera_move(engine->camera, BACKWARD); - break; - case SDLK_d: - camera_move(engine->camera, RIGHT); - break; - case SDLK_ESCAPE: - engine->game_loop = 0; - break; + if (key.keysym.sym == SDLK_w) { + camera_move(engine->camera, FORWARD); + } + if (key.keysym.sym == SDLK_a) { + camera_move(engine->camera, LEFT); + } + if (key.keysym.sym == SDLK_s) { + camera_move(engine->camera, BACKWARD); + } + if (key.keysym.sym == SDLK_d) { + camera_move(engine->camera, RIGHT); + } + if (key.keysym.sym == SDLK_ESCAPE) { + engine->game_loop = 0; } } if (event.type == SDL_MOUSEMOTION) { |
