From 2e64d3c5d6eb1eb04168d39d5eb5f2d89af1a8b0 Mon Sep 17 00:00:00 2001 From: pryazha Date: Sat, 2 Aug 2025 13:21:42 +0500 Subject: debug chapter --- pbr/1.1.lighting/lighting.c | 157 -------------------------------------------- 1 file changed, 157 deletions(-) delete mode 100644 pbr/1.1.lighting/lighting.c (limited to 'pbr/1.1.lighting/lighting.c') diff --git a/pbr/1.1.lighting/lighting.c b/pbr/1.1.lighting/lighting.c deleted file mode 100644 index d2a941d..0000000 --- a/pbr/1.1.lighting/lighting.c +++ /dev/null @@ -1,157 +0,0 @@ -#include "GL/glew.h" -#include "GLFW/glfw3.h" -#include "common.h" - -int main(void) -{ - state_t state = init_state(1600, 800); - - init_glfw(&state); - init_gl(); - - /* meshes */ - Mesh *sphere = mesh_load_obj(state.arena, "../../data/models/sphere.obj"); - Mesh *quad = mesh_gen_quad(state.arena); - - /* shaders */ - add_shader("default.vert", "default.frag", 0); - add_shader("pbr.vert", "pbr.frag", 0); - add_shader("hdr.vert", "hdr.frag", 0); - - light_t lights[4] = { - {{-6.0f, 0.0f, 7.0f}, {300.0f, 300.0f, 300.0f}}, - {{-4.0f, 0.0f, 6.0f}, {300.0f, 300.0f, 300.0f}}, - {{ 1.0f, 0.0f, 5.0f}, {300.0f, 300.0f, 300.0f}}, - {{ 3.0f, 0.0f, 8.0f}, {300.0f, 300.0f, 300.0f}}, - }; - - /* framebuffers */ - U32 hdr_fbo, hdr_colorbuffer, hdr_rbo; - glGenFramebuffers(1, &hdr_fbo); - glGenTextures(1, &hdr_colorbuffer); - glBindTexture(GL_TEXTURE_2D, hdr_colorbuffer); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, state.width, state.height, 0, GL_RGBA, GL_FLOAT, 0); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glGenRenderbuffers(1, &hdr_rbo); - glBindRenderbuffer(GL_RENDERBUFFER, hdr_rbo); - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, state.width, state.height); - glBindFramebuffer(GL_FRAMEBUFFER, hdr_fbo); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, hdr_colorbuffer, 0); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, hdr_rbo); - if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) - die("failed to create framebuffer"); - glBindRenderbuffer(GL_RENDERBUFFER, 0); - glBindTexture(GL_TEXTURE_2D, 0); - glBindFramebuffer(GL_FRAMEBUFFER, 0); - - F32 time = 0; - - S32 show_gamma = 0; - - while (!glfwWindowShouldClose(state.window)) { - handle_glfw_events(state.window, &state.input); - F32 dt = lock_framerate(60); - fps_info(dt, 10); - - /* update */ - update_camera_first_person(&state.camera, &state.input, dt, 2.0f); - F32 limit = 4.0f; - for (U32 i = 0; i < (sizeof(lights) / sizeof(lights[0])); i++) - lights[i].position.y = sinf(time + i) * limit; - time += dt; - - if (key_first_press(state.input.jump)) - show_gamma = 1 - show_gamma; - - /* render */ - F32 ar = 0; - if (show_gamma) { - ar = (F32)state.width / 2.0f / (F32)state.height; - } else { - ar = (F32)state.width / (F32)state.height; - } - MAT4 projection = camera_persp(state.camera, ar); - MAT4 view = get_view_matrix(&state.camera); - - glClearColor(0.16f, 0.16f, 0.16f, 1.0f); - - glBindFramebuffer(GL_FRAMEBUFFER, hdr_fbo); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - U32 shader = find_shader("pbr"); - if (!shader) die("wha"); - glUseProgram(shader); - shader_set_mat4fv(shader, "projection", projection); - shader_set_mat4fv(shader, "view", view); - shader_set_3fv(shader, "camera", state.camera.pos); - shader_set_3fv(shader, "color", v3f(0.04, 0.04, 0.04)); - shader_set_1f(shader, "ao", 1.0f); - for (U32 i = 0; i < (sizeof(lights) / sizeof(lights[0])); i++) { - char str[512]; - snprintf(str, 512, "lights[%d].position", i); - shader_set_3fv(shader, str, lights[i].position); - snprintf(str, 512, "lights[%d].color", i); - shader_set_3fv(shader, str, lights[i].color); - } - S32 rows = 7; - S32 cols = 7; - F32 offset = 3.0f; - for (S32 row = 0; row < rows; row++) { - shader_set_1f(shader, "metallic", (F32)row / (F32)rows); - for (S32 col = 0; col < cols; col++) { - shader_set_1f(shader, "roughness", clamp(0.05f, (F32)col / (F32)cols, 1.0f)); - V3F pos = {(col - cols / 2.0f) * offset, (row - rows / 2.0f) * offset, 0.0f}; - MAT4 model = mat4_make_translate(pos); - shader_set_mat4fv(shader, "model", model); - mesh_draw(sphere); - } - } - - for (U32 i = 0; i < (sizeof(lights) / sizeof(lights[0])); i++) { - MAT4 model = mat4_make_scale(v3f(0.5f, 0.5f, 0.5f)); - model = mat4_translate(model, lights[i].position); - shader_set_mat4fv(shader, "model", model); - mesh_draw(sphere); - } - - glUseProgram(0); - - glBindFramebuffer(GL_FRAMEBUFFER, 0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - if (show_gamma) { - shader = find_shader("default"); - if (!shader) die("!"); - glUseProgram(shader); - glBindTexture(GL_TEXTURE_2D, hdr_colorbuffer); - MAT4 model = mat4_make_scale(v3f(0.5f, 1.0f, 1.0f)); - model = mat4_translate(model, v3f(-0.5f, 0.0f, 0.0f)); - shader_set_mat4fv(shader, "model", model); - mesh_draw(quad); - glUseProgram(0); - - shader = find_shader("hdr"); - if (!shader) die("!"); - glUseProgram(shader); - glBindTexture(GL_TEXTURE_2D, hdr_colorbuffer); - model = mat4_make_scale(v3f(0.5f, 1.0f, 1.0f)); - model = mat4_translate(model, v3f(0.5f, 0.0f, 0.0f)); - shader_set_mat4fv(shader, "model", model); - mesh_draw(quad); - glUseProgram(0); - } else { - shader = find_shader("hdr"); - if (!shader) die("!"); - glUseProgram(shader); - glBindTexture(GL_TEXTURE_2D, hdr_colorbuffer); - shader_set_mat4fv(shader, "model", mat4_identity()); - mesh_draw(quad); - glUseProgram(0); - } - - glfwSwapBuffers(state.window); - } - - return 0; -} -- cgit v1.2.3-70-g09d2