fix transform commit shader

This commit is contained in:
2018-11-23 14:19:59 +01:00
parent 86656cc7e3
commit a124d19bdc
11 changed files with 90 additions and 29 deletions

View File

@@ -914,6 +914,7 @@ void CanvasModeTransform::enter()
auto center3d = canvas->point_trace(midpoint);
for (auto& v : shape3d)
{
v.uvs2 = v.uvs / canvas->m_size;
v.uvs = (v.uvs - bb_min) / bb_sz;
v.pos = center_mat * v.pos;
}
@@ -952,18 +953,44 @@ void CanvasModeTransform::leave()
glm::mat4 plane_camera = glm::lookAt(glm::vec3(0), canvas->m_plane_origin[i], canvas->m_plane_tangent[i]);
layer.m_rtt[i].bindFramebuffer();
canvas->m_tex2[i].bind();
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, canvas->m_width, canvas->m_height);
canvas->m_tex2[i].unbind();
ui::ShaderManager::use(ui::kShader::CompDraw);
ui::ShaderManager::u_int(ui::kShaderUniform::Tex, 0);
ui::ShaderManager::u_int(ui::kShaderUniform::TexStroke, 1);
ui::ShaderManager::u_int(ui::kShaderUniform::TexMask, 2);
ui::ShaderManager::u_vec2(ui::kShaderUniform::Resolution, canvas->m_size);
ui::ShaderManager::u_float(ui::kShaderUniform::Alpha, 1);
ui::ShaderManager::u_int(ui::kShaderUniform::Mask, false);
ui::ShaderManager::u_int(ui::kShaderUniform::BlendMode, 0);
ui::ShaderManager::u_mat4(ui::kShaderUniform::MVP, proj * plane_camera * m_xform * m_xform_local);
canvas->m_sampler.bind(1);
canvas->m_sampler.bind(0);
glActiveTexture(GL_TEXTURE0);
canvas->m_tex2[i].bind();
glActiveTexture(GL_TEXTURE1);
for (int j = 0; j < 6; j++)
{
ui::ShaderManager::use(ui::kShader::Color);
ui::ShaderManager::u_mat4(ui::kShaderUniform::MVP, proj * plane_camera * m_xform * m_xform_local);
ui::ShaderManager::u_vec4(ui::kShaderUniform::Col, { 0, 1, 1, .1 });
m_shape[j].draw_fill();
//ui::ShaderManager::use(ui::kShader::Color);
//ui::ShaderManager::u_mat4(ui::kShaderUniform::MVP, proj * plane_camera * m_xform * m_xform_local);
//ui::ShaderManager::u_vec4(ui::kShaderUniform::Col, { 0, 1, 1, .1 });
//m_shape[j].draw_fill();
//ui::ShaderManager::use(ui::kShader::Texture);
//ui::ShaderManager::u_int(ui::kShaderUniform::Tex, 0);
//ui::ShaderManager::u_mat4(ui::kShaderUniform::MVP, proj * plane_camera * m_xform * m_xform_local);
//m_tex[j].bind();
//canvas->m_sampler.bind(0);
//m_shape[j].draw_fill();
//m_tex[j].unbind();
ui::ShaderManager::use(ui::kShader::Texture);
ui::ShaderManager::u_int(ui::kShaderUniform::Tex, 0);
ui::ShaderManager::u_mat4(ui::kShaderUniform::MVP, proj * plane_camera * m_xform * m_xform_local);
m_tex[j].bind();
canvas->m_sampler.bind(0);
m_shape[j].draw_fill();
m_tex[j].unbind();
}
@@ -1019,6 +1046,7 @@ void CanvasModeTransform::on_Draw(const glm::mat4& ortho, const glm::mat4& proj,
m_tex[i].unbind();
}
ui::ShaderManager::use(ui::kShader::Color);
auto m2d = canvas->m_proj * canvas->m_mv * m_xform * m_xform_local;
for (int i = 0; i < corners.size(); i++)
{