@@ -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
|
||||||
|
|||||||
@@ -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 };
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user