From 307c2a58c2b29f9de057e69190cc86fab99ac1be Mon Sep 17 00:00:00 2001 From: T1ti <40864460+T1ti@users.noreply.github.com> Date: Mon, 26 Aug 2024 06:42:03 +0200 Subject: [PATCH] adspartan:new settings to disable sky Rendering https://github.com/wowdev/noggit3/commit/a8f1a82fd4f870a3796e096e5f04d97675d6d37a --- src/noggit/MapView.cpp | 5 ++ src/noggit/MapView.h | 2 + src/noggit/Sky.cpp | 76 ++++++++++--------- src/noggit/Sky.h | 22 +----- src/noggit/rendering/WorldRender.cpp | 15 +++- src/noggit/rendering/WorldRender.hpp | 2 + .../ui/tools/PresetEditor/ModelView.cpp | 2 + 7 files changed, 66 insertions(+), 58 deletions(-) diff --git a/src/noggit/MapView.cpp b/src/noggit/MapView.cpp index 9a95c333..2a47fa46 100755 --- a/src/noggit/MapView.cpp +++ b/src/noggit/MapView.cpp @@ -2249,6 +2249,9 @@ void MapView::setupViewMenu() //! \todo space+h in object mode ADD_TOGGLE_NS (view_menu, "Hidden models", _draw_hidden_models); + ADD_TOGGLE_NS(view_menu, "Draw Sky", _draw_sky); + ADD_TOGGLE_NS(view_menu, "Draw Skybox", _draw_skybox); + auto debug_menu (view_menu->addMenu ("Debug")); ADD_TOGGLE_NS (debug_menu, "Occlusion boxes", _draw_occlusion_boxes); @@ -5026,6 +5029,8 @@ void MapView::draw_map() , _draw_model_animations.get() , _draw_models_with_box.get() , _draw_hidden_models.get() + , _draw_sky.get() + , _draw_skybox.get() , minimapTool->getMinimapRenderSettings() , _draw_fog.get() , terrainTool->_edit_type diff --git a/src/noggit/MapView.h b/src/noggit/MapView.h index 9f346181..547792e5 100755 --- a/src/noggit/MapView.h +++ b/src/noggit/MapView.h @@ -161,6 +161,8 @@ public: Noggit::BoolToggleProperty _draw_hole_lines = {false}; Noggit::BoolToggleProperty _draw_models_with_box = {false}; Noggit::BoolToggleProperty _draw_fog = {false}; + Noggit::BoolToggleProperty _draw_sky = { true }; + Noggit::BoolToggleProperty _draw_skybox = { true }; Noggit::BoolToggleProperty _draw_hidden_models = {false}; Noggit::BoolToggleProperty _draw_occlusion_boxes = {false}; // Noggit::BoolToggleProperty _game_mode_camera = { false }; diff --git a/src/noggit/Sky.cpp b/src/noggit/Sky.cpp index 21e2a651..e8dc2839 100755 --- a/src/noggit/Sky.cpp +++ b/src/noggit/Sky.cpp @@ -557,6 +557,8 @@ bool Skies::draw(glm::mat4x4 const& model_view , math::frustum const& frustum , const float& cull_distance , int animtime + /*, bool draw_particles*/ + , bool draw_skybox , OutdoorLightStats const& light_stats ) { @@ -594,18 +596,45 @@ bool Skies::draw(glm::mat4x4 const& model_view } bool has_skybox = false; - for (Sky& sky : skies) + if (draw_skybox) { - if (sky.weight > 0.f && sky.skybox) + for (Sky& sky : skies) { - has_skybox = true; - - auto& model = sky.skybox.value(); - model.model->trans = sky.weight; - model.pos = camera_pos; - model.scale = 0.1f; - model.recalcExtents(); - + if (sky.weight > 0.f && sky.skybox) + { + has_skybox = true; + + auto& model = sky.skybox.value(); + model.model->trans = sky.weight; + model.pos = camera_pos; + model.scale = 0.1f; + model.recalcExtents(); + + OpenGL::M2RenderState model_render_state; + model_render_state.tex_arrays = {0, 0}; + model_render_state.tex_indices = {0, 0}; + model_render_state.tex_unit_lookups = {-1, -1}; + gl.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + gl.disable(GL_BLEND); + gl.depthMask(GL_TRUE); + m2_shader.uniform("blend_mode", 0); + m2_shader.uniform("unfogged", static_cast(model_render_state.unfogged)); + m2_shader.uniform("unlit", static_cast(model_render_state.unlit)); + m2_shader.uniform("tex_unit_lookup_1", 0); + m2_shader.uniform("tex_unit_lookup_2", 0); + m2_shader.uniform("pixel_shader", 0); + + model.model->renderer()->draw(model_view, model, m2_shader, model_render_state, frustum, 1000000, camera_pos, animtime, display_mode::in_3D); + } + } + // if it's night, draw the stars + if (light_stats.nightIntensity > 0 /* && !has_skybox*/) + { + stars.model->trans = light_stats.nightIntensity; + stars.pos = camera_pos; + stars.scale = 0.1f; + stars.recalcExtents(); + OpenGL::M2RenderState model_render_state; model_render_state.tex_arrays = {0, 0}; model_render_state.tex_indices = {0, 0}; @@ -619,34 +648,11 @@ bool Skies::draw(glm::mat4x4 const& model_view m2_shader.uniform("tex_unit_lookup_1", 0); m2_shader.uniform("tex_unit_lookup_2", 0); m2_shader.uniform("pixel_shader", 0); - - model.model->renderer()->draw(model_view, model, m2_shader, model_render_state, frustum, 1000000, camera_pos, animtime, display_mode::in_3D); + + stars.model->renderer()->draw(model_view, stars, m2_shader, model_render_state, frustum, 1000000, camera_pos, animtime, display_mode::in_3D); } } - // if it's night, draw the stars - if (light_stats.nightIntensity > 0 && !has_skybox) - { - stars.model->trans = light_stats.nightIntensity; - stars.pos = camera_pos; - stars.scale = 0.1f; - stars.recalcExtents(); - OpenGL::M2RenderState model_render_state; - model_render_state.tex_arrays = {0, 0}; - model_render_state.tex_indices = {0, 0}; - model_render_state.tex_unit_lookups = {-1, -1}; - gl.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - gl.disable(GL_BLEND); - gl.depthMask(GL_TRUE); - m2_shader.uniform("blend_mode", 0); - m2_shader.uniform("unfogged", static_cast(model_render_state.unfogged)); - m2_shader.uniform("unlit", static_cast(model_render_state.unlit)); - m2_shader.uniform("tex_unit_lookup_1", 0); - m2_shader.uniform("tex_unit_lookup_2", 0); - m2_shader.uniform("pixel_shader", 0); - - stars.model->renderer()->draw(model_view, stars, m2_shader, model_render_state, frustum, 1000000, camera_pos, animtime, display_mode::in_3D); - } return true; } diff --git a/src/noggit/Sky.h b/src/noggit/Sky.h index 97764da0..1461e490 100755 --- a/src/noggit/Sky.h +++ b/src/noggit/Sky.h @@ -190,31 +190,11 @@ public: else return r2 < s.r2; } - // bool highlight_sky() const { return _highlight_sky; } - // float river_shallow_alpha() const { return _river_shallow_alpha; } - // float river_deep_alpha() const { return _river_deep_alpha; } - // float ocean_shallow_alpha() const { return _ocean_shallow_alpha; } - // float ocean_deep_alpha() const { return _ocean_deep_alpha; } - // float glow() const { return _glow; } bool selected() const { return _selected; } - // - // void set_glow(float glow) { _glow = glow; } - // void set_highlight_sky(bool state) { _highlight_sky = state; } - // void set_river_shallow_alpha(float alpha) { _river_shallow_alpha = alpha; } - // void set_river_deep_alpha(float alpha) { _river_deep_alpha = alpha; } - // void set_ocean_shallow_alpha(float alpha) { _ocean_shallow_alpha = alpha; } - // void set_ocean_deep_alpha(float alpha) { _ocean_deep_alpha = alpha; } void save_to_dbc(); private: - // bool _highlight_sky; - // float _river_shallow_alpha; - // float _river_deep_alpha; - // float _ocean_shallow_alpha; - // float _ocean_deep_alpha; - - // float _glow; bool _selected; Noggit::NoggitRenderContext _context; @@ -308,6 +288,8 @@ public: , math::frustum const& frustum , const float& cull_distance , int animtime + /*, bool draw_particles*/ + , bool draw_skybox , OutdoorLightStats const& light_stats ); diff --git a/src/noggit/rendering/WorldRender.cpp b/src/noggit/rendering/WorldRender.cpp index 25501519..57560234 100755 --- a/src/noggit/rendering/WorldRender.cpp +++ b/src/noggit/rendering/WorldRender.cpp @@ -53,6 +53,8 @@ void WorldRender::draw (glm::mat4x4 const& model_view , bool draw_model_animations , bool draw_models_with_box , bool draw_hidden_models + , bool draw_sky + , bool draw_skybox , MinimapRenderSettings* minimap_render_settings , bool draw_fog , eTerrainType ground_editing_brush @@ -178,14 +180,14 @@ void WorldRender::draw (glm::mat4x4 const& model_view }); // only draw the sky in 3D - if(!minimap_render && display == display_mode::in_3D) + if(!minimap_render && display == display_mode::in_3D && draw_sky) { ZoneScopedN("World::draw() : Draw skies"); OpenGL::Scoped::use_program m2_shader {*_m2_program.get()}; bool hadSky = false; - if (draw_wmo || _world->mapIndex.hasAGlobalWMO()) + if (draw_skybox && (draw_wmo || _world->mapIndex.hasAGlobalWMO())) { _world->_model_instance_storage.for_each_wmo_instance ( @@ -225,6 +227,7 @@ void WorldRender::draw (glm::mat4x4 const& model_view , frustum , _cull_distance , _world->animtime + , draw_skybox , _outdoor_light_stats ); } @@ -1658,7 +1661,13 @@ void WorldRender::drawMinimap ( MapTile *tile } draw(model_view, projection, glm::vec3(), 0, glm::vec4(), - CursorType::NONE, 0.f, false, false, false, 0.3f, 0.f, glm::vec3(), 0.f, 0.f, false, false, false, editing_mode::minimap, camera_pos, true, false, true, settings->draw_wmo, settings->draw_water, false, settings->draw_m2, false, false, true, settings, false, eTerrainType::eTerrainType_Linear, 0, display_mode::in_3D, false, true); + CursorType::NONE, 0.f, false, false, + false, 0.3f, 0.f, glm::vec3(), 0.f, 0.f, + false, false, false, editing_mode::minimap, camera_pos, + true, false, true, settings->draw_wmo, settings->draw_water, false, + settings->draw_m2, false, false, true, + false, false, settings, false, eTerrainType::eTerrainType_Linear, 0, + display_mode::in_3D, false, true); if (unload) diff --git a/src/noggit/rendering/WorldRender.hpp b/src/noggit/rendering/WorldRender.hpp index ae53918d..d47aa193 100755 --- a/src/noggit/rendering/WorldRender.hpp +++ b/src/noggit/rendering/WorldRender.hpp @@ -62,6 +62,8 @@ namespace Noggit::Rendering , bool draw_model_animations , bool draw_models_with_box , bool draw_hidden_models + , bool draw_sky + , bool draw_skybox , MinimapRenderSettings* minimap_render_settings , bool draw_fog , eTerrainType ground_editing_brush diff --git a/src/noggit/ui/tools/PresetEditor/ModelView.cpp b/src/noggit/ui/tools/PresetEditor/ModelView.cpp index 1ac39645..989b22c8 100755 --- a/src/noggit/ui/tools/PresetEditor/ModelView.cpp +++ b/src/noggit/ui/tools/PresetEditor/ModelView.cpp @@ -60,6 +60,8 @@ void ModelViewer::paintGL() , true , false , true + , false + , false , &_settings_unused , false , eTerrainType::eTerrainType_Flat