diff --git a/include/Cubed/constants.hpp b/include/Cubed/constants.hpp index 5f806c0..a8a3151 100644 --- a/include/Cubed/constants.hpp +++ b/include/Cubed/constants.hpp @@ -27,8 +27,6 @@ constexpr int SIZE_X = CHUNK_SIZE; constexpr int SIZE_Y = WORLD_SIZE_Y; constexpr int SIZE_Z = CHUNK_SIZE; -constexpr float AMBIENT_STRENGTH = 0.3f; - constexpr ChunkPos CHUNK_DIR[]{{1, 0}, {-1, 0}, {0, 1}, {0, -1}, {1, 1}, {-1, 1}, {1, -1}, {-1, -1}}; diff --git a/include/Cubed/renderer.hpp b/include/Cubed/renderer.hpp index e08eee4..2182f20 100644 --- a/include/Cubed/renderer.hpp +++ b/include/Cubed/renderer.hpp @@ -28,6 +28,7 @@ public: void update_fov(float fov); void update_proj_matrix(float aspect, float width, float height); void updata_framebuffer(int width, int height); + float& ambient_strength(); private: static constexpr glm::vec3 SUNLIGHT_COLOR{1.0f, 1.0f, 1.0f}; @@ -38,6 +39,9 @@ private: static constexpr float NEAR_PLANE = 0.1f; static constexpr float SUN_SIZE = 50.0f; static constexpr float MOON_SIZE = 50.0f; + + float m_ambient_strength = 0.1f; + const Camera& m_camera; DevPanel& m_dev_panel; const TextureManager& m_texture_manager; diff --git a/src/dev_panel.cpp b/src/dev_panel.cpp index c6956af..9edead4 100644 --- a/src/dev_panel.cpp +++ b/src/dev_panel.cpp @@ -267,21 +267,17 @@ void DevPanel::show_time_table_bar() { World& world = m_app.world(); ImGui::Text("Game Tick %lld", world.game_tick()); ImGui::Text("Day Tick %lld", world.day_tick()); - ImGui::Text("Set Day Tick"); - ImGui::SameLine(); - if (ImGui::SliderInt("DayTick", &m_pre_set_day_tick, 0, DAY_TIME)) { + if (ImGui::SliderInt("SetDayTick", &m_pre_set_day_tick, 0, DAY_TIME)) { } ImGui::SameLine(); - if (ImGui::Button("Save##DayTick")) { + if (ImGui::Button("Set##DayTick")) { world.day_tick(static_cast(m_pre_set_day_tick)); } ImGui::Text("MSPT %d", world.per_tick_time()); - ImGui::Text("Set MSPT"); - ImGui::SameLine(); if (ImGui::SliderInt("SetMSPT", &m_pre_set_tick_speed, 0, 200)) { } ImGui::SameLine(); - if (ImGui::Button("Save##MSPT")) { + if (ImGui::Button("Set##MSPT")) { world.per_tick_time(m_pre_set_tick_speed); } } @@ -359,6 +355,10 @@ void DevPanel::show_settings_tab_item() { static_cast(m_config.mouse_sensitivity)); m_player->hot_reload(); } + if (ImGui::SliderFloat("AmbientStrength", + &m_app.renderer().ambient_strength(), 0.0f, + 0.35f)) + ; if (ImGui::SliderInt("Distance", &m_config.rendering_distance, 2, 128)) { Config::get().set("world.rendering_distance", diff --git a/src/renderer.cpp b/src/renderer.cpp index 4418c81..74c9a64 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -192,8 +192,8 @@ void Renderer::init_text() { } void Renderer::render() { + glDisable(GL_FRAMEBUFFER_SRGB); glBindFramebuffer(GL_FRAMEBUFFER, m_fbo); - glClearColor(0.0, 0.0, 0.0, 1.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -202,12 +202,13 @@ void Renderer::render() { render_outline(); glBindFramebuffer(GL_FRAMEBUFFER, 0); + glEnable(GL_FRAMEBUFFER_SRGB); glDisable(GL_DEPTH_TEST); glClearColor(0.0f, 0.0f, 0.0f, 1.0); glClear(GL_COLOR_BUFFER_BIT); render_underwater(); - + glDisable(GL_FRAMEBUFFER_SRGB); render_ui(); render_text(); render_dev_panel(); @@ -479,7 +480,7 @@ void Renderer::render_world() { glUniformMatrix4fv(m_proj_loc, 1, GL_FALSE, glm::value_ptr(m_p_mat)); glUniformMatrix4fv(normal_block_shader.loc("norm_matrix"), 1, GL_FALSE, glm::value_ptr(m_norm_mat)); - glUniform1f(normal_block_shader.loc("ambientStrength"), AMBIENT_STRENGTH); + glUniform1f(normal_block_shader.loc("ambientStrength"), m_ambient_strength); glUniform3fv(normal_block_shader.loc("sunlightColor"), 1, glm::value_ptr(SUNLIGHT_COLOR)); glUniform3fv(normal_block_shader.loc("sunlightDir"), 1, @@ -615,4 +616,6 @@ void Renderer::render_dev_panel() { glEnable(GL_DEPTH_TEST); } +float& Renderer::ambient_strength() { return m_ambient_strength; } + } // namespace Cubed \ No newline at end of file