Improved transparent volumes rendering set as default

This commit is contained in:
Enrico Turri 2019-01-21 12:53:01 +01:00
parent 012c681e67
commit db1428dcae
4 changed files with 2 additions and 81 deletions

View file

@ -4275,13 +4275,9 @@ void GLCanvas3D::render()
::glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
_render_background();
#if ENABLE_IMPROVED_TRANSPARENT_VOLUMES_RENDERING
// textured bed needs to be rendered after objects if the texture is transparent
bool early_bed_render = is_custom_bed || (theta <= 90.0f);
if (early_bed_render)
#else
if (is_custom_bed) // untextured bed needs to be rendered before objects
#endif // ENABLE_IMPROVED_TRANSPARENT_VOLUMES_RENDERING
_render_bed(theta);
_render_objects();
@ -4290,11 +4286,7 @@ void GLCanvas3D::render()
_render_axes();
#if ENABLE_IMPROVED_TRANSPARENT_VOLUMES_RENDERING
if (!early_bed_render)
#else
if (!is_custom_bed) // textured bed needs to be rendered after objects
#endif // ENABLE_IMPROVED_TRANSPARENT_VOLUMES_RENDERING
_render_bed(theta);
#if ENABLE_RENDER_SELECTION_CENTER
@ -6224,10 +6216,6 @@ void GLCanvas3D::_render_objects() const
m_volumes.set_print_box((float)bed_bb.min(0), (float)bed_bb.min(1), 0.0f, (float)bed_bb.max(0), (float)bed_bb.max(1), (float)m_config->opt_float("max_print_height"));
m_volumes.check_outside_state(m_config, nullptr);
}
#if !ENABLE_IMPROVED_TRANSPARENT_VOLUMES_RENDERING
// do not cull backfaces to show broken geometry, if any
::glDisable(GL_CULL_FACE);
#endif // !ENABLE_IMPROVED_TRANSPARENT_VOLUMES_RENDERING
}
if (m_use_clipping_planes)
@ -6236,7 +6224,6 @@ void GLCanvas3D::_render_objects() const
m_volumes.set_z_range(-FLT_MAX, FLT_MAX);
m_shader.start_using();
#if ENABLE_IMPROVED_TRANSPARENT_VOLUMES_RENDERING
if (m_picking_enabled && m_layers_editing.is_enabled() && m_layers_editing.last_object_id != -1) {
int object_id = m_layers_editing.last_object_id;
m_volumes.render_VBOs(GLVolumeCollection::Opaque, false, [object_id](const GLVolume &volume) {
@ -6250,15 +6237,7 @@ void GLCanvas3D::_render_objects() const
m_volumes.render_VBOs(GLVolumeCollection::Opaque, m_picking_enabled);
}
m_volumes.render_VBOs(GLVolumeCollection::Transparent, false);
#else
m_volumes.render_VBOs();
#endif // ENABLE_IMPROVED_TRANSPARENT_VOLUMES_RENDERING
m_shader.stop_using();
#if !ENABLE_IMPROVED_TRANSPARENT_VOLUMES_RENDERING
if (m_picking_enabled)
::glEnable(GL_CULL_FACE);
#endif // !ENABLE_IMPROVED_TRANSPARENT_VOLUMES_RENDERING
}
else
{
@ -6270,24 +6249,9 @@ void GLCanvas3D::_render_objects() const
::glEnable(GL_CLIP_PLANE1);
}
#if !ENABLE_IMPROVED_TRANSPARENT_VOLUMES_RENDERING
// do not cull backfaces to show broken geometry, if any
if (m_picking_enabled)
::glDisable(GL_CULL_FACE);
#endif // !ENABLE_IMPROVED_TRANSPARENT_VOLUMES_RENDERING
#if ENABLE_IMPROVED_TRANSPARENT_VOLUMES_RENDERING
// do not cull backfaces to show broken geometry, if any
m_volumes.render_legacy(GLVolumeCollection::Opaque, m_picking_enabled);
m_volumes.render_legacy(GLVolumeCollection::Transparent, false);
#else
m_volumes.render_legacy();
#endif // ENABLE_IMPROVED_TRANSPARENT_VOLUMES_RENDERING
#if !ENABLE_IMPROVED_TRANSPARENT_VOLUMES_RENDERING
if (m_picking_enabled)
::glEnable(GL_CULL_FACE);
#endif // !ENABLE_IMPROVED_TRANSPARENT_VOLUMES_RENDERING
if (m_use_clipping_planes)
{