adspartan:new settings to disable sky Rendering

a8f1a82fd4
This commit is contained in:
T1ti
2024-08-26 06:42:03 +02:00
parent a7cb7e9d79
commit 307c2a58c2
7 changed files with 66 additions and 58 deletions

View File

@@ -2249,6 +2249,9 @@ void MapView::setupViewMenu()
//! \todo space+h in object mode //! \todo space+h in object mode
ADD_TOGGLE_NS (view_menu, "Hidden models", _draw_hidden_models); 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")); auto debug_menu (view_menu->addMenu ("Debug"));
ADD_TOGGLE_NS (debug_menu, "Occlusion boxes", _draw_occlusion_boxes); ADD_TOGGLE_NS (debug_menu, "Occlusion boxes", _draw_occlusion_boxes);
@@ -5026,6 +5029,8 @@ void MapView::draw_map()
, _draw_model_animations.get() , _draw_model_animations.get()
, _draw_models_with_box.get() , _draw_models_with_box.get()
, _draw_hidden_models.get() , _draw_hidden_models.get()
, _draw_sky.get()
, _draw_skybox.get()
, minimapTool->getMinimapRenderSettings() , minimapTool->getMinimapRenderSettings()
, _draw_fog.get() , _draw_fog.get()
, terrainTool->_edit_type , terrainTool->_edit_type

View File

@@ -161,6 +161,8 @@ public:
Noggit::BoolToggleProperty _draw_hole_lines = {false}; Noggit::BoolToggleProperty _draw_hole_lines = {false};
Noggit::BoolToggleProperty _draw_models_with_box = {false}; Noggit::BoolToggleProperty _draw_models_with_box = {false};
Noggit::BoolToggleProperty _draw_fog = {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_hidden_models = {false};
Noggit::BoolToggleProperty _draw_occlusion_boxes = {false}; Noggit::BoolToggleProperty _draw_occlusion_boxes = {false};
// Noggit::BoolToggleProperty _game_mode_camera = { false }; // Noggit::BoolToggleProperty _game_mode_camera = { false };

View File

@@ -557,6 +557,8 @@ bool Skies::draw(glm::mat4x4 const& model_view
, math::frustum const& frustum , math::frustum const& frustum
, const float& cull_distance , const float& cull_distance
, int animtime , int animtime
/*, bool draw_particles*/
, bool draw_skybox
, OutdoorLightStats const& light_stats , OutdoorLightStats const& light_stats
) )
{ {
@@ -594,18 +596,45 @@ bool Skies::draw(glm::mat4x4 const& model_view
} }
bool has_skybox = false; 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; if (sky.weight > 0.f && sky.skybox)
{
auto& model = sky.skybox.value(); has_skybox = true;
model.model->trans = sky.weight;
model.pos = camera_pos; auto& model = sky.skybox.value();
model.scale = 0.1f; model.model->trans = sky.weight;
model.recalcExtents(); 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<int>(model_render_state.unfogged));
m2_shader.uniform("unlit", static_cast<int>(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; OpenGL::M2RenderState model_render_state;
model_render_state.tex_arrays = {0, 0}; model_render_state.tex_arrays = {0, 0};
model_render_state.tex_indices = {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_1", 0);
m2_shader.uniform("tex_unit_lookup_2", 0); m2_shader.uniform("tex_unit_lookup_2", 0);
m2_shader.uniform("pixel_shader", 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<int>(model_render_state.unfogged));
m2_shader.uniform("unlit", static_cast<int>(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; return true;
} }

View File

@@ -190,31 +190,11 @@ public:
else return r2 < s.r2; 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; } 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(); void save_to_dbc();
private: private:
// bool _highlight_sky;
// float _river_shallow_alpha;
// float _river_deep_alpha;
// float _ocean_shallow_alpha;
// float _ocean_deep_alpha;
// float _glow;
bool _selected; bool _selected;
Noggit::NoggitRenderContext _context; Noggit::NoggitRenderContext _context;
@@ -308,6 +288,8 @@ public:
, math::frustum const& frustum , math::frustum const& frustum
, const float& cull_distance , const float& cull_distance
, int animtime , int animtime
/*, bool draw_particles*/
, bool draw_skybox
, OutdoorLightStats const& light_stats , OutdoorLightStats const& light_stats
); );

View File

@@ -53,6 +53,8 @@ void WorldRender::draw (glm::mat4x4 const& model_view
, bool draw_model_animations , bool draw_model_animations
, bool draw_models_with_box , bool draw_models_with_box
, bool draw_hidden_models , bool draw_hidden_models
, bool draw_sky
, bool draw_skybox
, MinimapRenderSettings* minimap_render_settings , MinimapRenderSettings* minimap_render_settings
, bool draw_fog , bool draw_fog
, eTerrainType ground_editing_brush , eTerrainType ground_editing_brush
@@ -178,14 +180,14 @@ void WorldRender::draw (glm::mat4x4 const& model_view
}); });
// only draw the sky in 3D // 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"); ZoneScopedN("World::draw() : Draw skies");
OpenGL::Scoped::use_program m2_shader {*_m2_program.get()}; OpenGL::Scoped::use_program m2_shader {*_m2_program.get()};
bool hadSky = false; 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 _world->_model_instance_storage.for_each_wmo_instance
( (
@@ -225,6 +227,7 @@ void WorldRender::draw (glm::mat4x4 const& model_view
, frustum , frustum
, _cull_distance , _cull_distance
, _world->animtime , _world->animtime
, draw_skybox
, _outdoor_light_stats , _outdoor_light_stats
); );
} }
@@ -1658,7 +1661,13 @@ void WorldRender::drawMinimap ( MapTile *tile
} }
draw(model_view, projection, glm::vec3(), 0, glm::vec4(), 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) if (unload)

View File

@@ -62,6 +62,8 @@ namespace Noggit::Rendering
, bool draw_model_animations , bool draw_model_animations
, bool draw_models_with_box , bool draw_models_with_box
, bool draw_hidden_models , bool draw_hidden_models
, bool draw_sky
, bool draw_skybox
, MinimapRenderSettings* minimap_render_settings , MinimapRenderSettings* minimap_render_settings
, bool draw_fog , bool draw_fog
, eTerrainType ground_editing_brush , eTerrainType ground_editing_brush

View File

@@ -60,6 +60,8 @@ void ModelViewer::paintGL()
, true , true
, false , false
, true , true
, false
, false
, &_settings_unused , &_settings_unused
, false , false
, eTerrainType::eTerrainType_Flat , eTerrainType::eTerrainType_Flat