@@ -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
|
||||
|
||||
@@ -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 };
|
||||
|
||||
@@ -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,17 +596,44 @@ 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;
|
||||
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();
|
||||
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};
|
||||
@@ -620,33 +649,10 @@ bool Skies::draw(glm::mat4x4 const& model_view
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
);
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -60,6 +60,8 @@ void ModelViewer::paintGL()
|
||||
, true
|
||||
, false
|
||||
, true
|
||||
, false
|
||||
, false
|
||||
, &_settings_unused
|
||||
, false
|
||||
, eTerrainType::eTerrainType_Flat
|
||||
|
||||
Reference in New Issue
Block a user