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
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

View File

@@ -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 };

View File

@@ -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<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;
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<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;
}

View File

@@ -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
);

View File

@@ -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)

View File

@@ -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

View File

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