Only compile normals and light shaders when needed

This commit is contained in:
Abdelrahman Said 2024-12-30 17:35:49 +00:00
parent acefc1d254
commit ce561fc44d

View File

@ -273,12 +273,17 @@ int main() {
Mesh screen = {screen_vertices, screen_indices, {}}; Mesh screen = {screen_vertices, screen_indices, {}};
Shader main_shader {"shaders/vert.glsl", "shaders/frag.glsl"}; Shader main_shader {"shaders/vert.glsl", "shaders/frag.glsl"};
Shader normal_vis_shader {"shaders/normal_vert.glsl", "shaders/normal_frag.glsl", "shaders/normal_geo.glsl"};
Shader light_shader {"shaders/vert.glsl", "shaders/light_frag.glsl"};
Shader skybox_shader {"shaders/sb_vert.glsl", "shaders/sb_frag.glsl"}; Shader skybox_shader {"shaders/sb_vert.glsl", "shaders/sb_frag.glsl"};
Shader reflective_shader {"shaders/vert.glsl", "shaders/reflective_frag.glsl"}; Shader reflective_shader {"shaders/vert.glsl", "shaders/reflective_frag.glsl"};
Shader refractive_shader {"shaders/vert.glsl", "shaders/refractive_frag.glsl"}; Shader refractive_shader {"shaders/vert.glsl", "shaders/refractive_frag.glsl"};
Shader post_processing {"shaders/pp_vert.glsl", "shaders/pp_frag.glsl"}; Shader post_processing {"shaders/pp_vert.glsl", "shaders/pp_frag.glsl"};
#if NORMALS
Shader normal_vis_shader {"shaders/normal_vert.glsl", "shaders/normal_frag.glsl", "shaders/normal_geo.glsl"};
#endif
#if POINT_LIGHTS
Shader light_shader {"shaders/vert.glsl", "shaders/light_frag.glsl"};
#endif
const float camera_speed = 25.0f; const float camera_speed = 25.0f;
glm::vec3 camera_position = glm::vec3(-2.5f, 0.0f, 8.0f); glm::vec3 camera_position = glm::vec3(-2.5f, 0.0f, 8.0f);
@ -377,12 +382,18 @@ int main() {
// Set the shaders binding points // Set the shaders binding points
main_shader.set_uniform_block_binding_point ("Common", ubo_binding_point); main_shader.set_uniform_block_binding_point ("Common", ubo_binding_point);
normal_vis_shader.set_uniform_block_binding_point("Common", ubo_binding_point);
light_shader.set_uniform_block_binding_point ("Common", ubo_binding_point);
skybox_shader.set_uniform_block_binding_point ("Common", ubo_binding_point); skybox_shader.set_uniform_block_binding_point ("Common", ubo_binding_point);
reflective_shader.set_uniform_block_binding_point("Common", ubo_binding_point); reflective_shader.set_uniform_block_binding_point("Common", ubo_binding_point);
refractive_shader.set_uniform_block_binding_point("Common", ubo_binding_point); refractive_shader.set_uniform_block_binding_point("Common", ubo_binding_point);
#if NORMALS
normal_vis_shader.set_uniform_block_binding_point("Common", ubo_binding_point);
#endif
#if POINT_LIGHTS
light_shader.set_uniform_block_binding_point ("Common", ubo_binding_point);
#endif
// Add projection matrix to uniform buffer // Add projection matrix to uniform buffer
glBufferSubData(GL_UNIFORM_BUFFER, 0, sizeof(glm::mat4), glm::value_ptr(projection)); glBufferSubData(GL_UNIFORM_BUFFER, 0, sizeof(glm::mat4), glm::value_ptr(projection));
glBindBuffer(GL_UNIFORM_BUFFER, 0); glBindBuffer(GL_UNIFORM_BUFFER, 0);