fix transform corners visible behind

This commit is contained in:
2018-11-28 14:34:45 +01:00
parent 5e1de934ee
commit 181308d004
2 changed files with 6 additions and 6 deletions

View File

@@ -953,9 +953,9 @@ void CanvasModeTransform::enter()
p2d.y = canvas->m_box.w - p2d.y - 1;
auto p2d_clip = ((p2d / zw(canvas->m_box)) * 2.f - 1.f);
auto p3d_plane = canvas->m_plane_unproject[plane] * glm::vec4(p2d_clip, 0, 1);
auto p3d_norm = -p3d_plane / p3d_plane.z;
if (p3d_norm.w < 0)
if (p3d_plane.w < 0)
continue;
auto p3d_norm = -p3d_plane / p3d_plane.z;
auto p2d_plane = xy(p3d_norm);
auto p2d_plane_raster = (p2d_plane * 0.5f + 0.5f) * canvas->m_size;
auto p3d_world = canvas->m_plane_transform[plane] * glm::vec4(p2d_plane, -1, 1);
@@ -1034,7 +1034,7 @@ void CanvasModeTransform::enter()
for (auto p : m_points_face[j])
{
auto p_clip = mvp * p.pos;
auto p_norm = p_clip / p_clip.z;
auto p_norm = p_clip / p_clip.w;
if (p_clip.w < 0 || glm::any(glm::greaterThan(glm::abs(xy(p_norm)), { 1, 1 })))
continue;
auto p_raster = (xy(p_norm) * 0.5f + 0.5f) * canvas->m_size;
@@ -1268,9 +1268,9 @@ void CanvasModeTransform::on_Draw(const glm::mat4& ortho, const glm::mat4& proj,
for (int i = 0; i < corners.size(); i++)
{
auto c = m2d * glm::vec4(corners[i], 1);
auto c3d = c / c.z;
if (c3d.w < 0)
if (c.w < 0)
continue;
auto c3d = c / c.w;
auto c2d = (xy(c3d) * 0.5f + 0.5f) * zw(canvas->m_box);
ShaderManager::u_mat4(kShaderUniform::MVP,

View File

@@ -268,7 +268,7 @@ void NodeCanvas::draw()
mode->on_Draw(ortho_proj, proj, camera);
glDisable(GL_DEPTH_TEST);
if (m_canvas->m_smask_active)
if (m_canvas->m_smask_active || m_canvas->m_state == Canvas::kCanvasMode::Transform)
{
m_canvas->modes[(int)Canvas::kCanvasMode::MaskFree][0]->on_Draw(ortho_proj, proj, camera);
m_canvas->modes[(int)Canvas::kCanvasMode::MaskLine][0]->on_Draw(ortho_proj, proj, camera);