implement shading modes switch for heightmap
This commit is contained in:
@@ -297,16 +297,28 @@ void NodeCanvas::draw()
|
||||
* glm::scale(glm::vec3(1, glm::pow(App::I.grid->m_hm_height->get_value() - 0.5f, 3.f) * 10.f, 1))
|
||||
* glm::eulerAngleX(glm::radians(90.f));
|
||||
|
||||
|
||||
// DRAW SOLID
|
||||
glDisable(GL_BLEND);
|
||||
ShaderManager::use(kShader::Lambert);
|
||||
ShaderManager::u_mat4(kShaderUniform::MVP, mvp);
|
||||
auto light_yaw = App::I.grid->m_hm_lyaw->get_value() * glm::pi<float>() * 2.f;
|
||||
auto light_pitch = App::I.grid->m_hm_lpitch->get_value();
|
||||
auto light_pos = glm::vec3(sinf(light_yaw), cosf(light_yaw), light_pitch);
|
||||
ShaderManager::u_vec3(kShaderUniform::LightDir, glm::normalize(-light_pos));
|
||||
App::I.grid->m_hm_plane.draw_fill();
|
||||
if (App::I.grid->m_shade_mode == NodePanelGrid::ShadeMode::Solid)
|
||||
{
|
||||
glDisable(GL_BLEND);
|
||||
ShaderManager::use(kShader::Lambert);
|
||||
ShaderManager::u_mat4(kShaderUniform::MVP, mvp);
|
||||
auto light_yaw = App::I.grid->m_hm_lyaw->get_value() * glm::pi<float>() * 2.f;
|
||||
auto light_pitch = App::I.grid->m_hm_lpitch->get_value();
|
||||
auto light_pos = glm::vec3(sinf(light_yaw), cosf(light_yaw), light_pitch);
|
||||
ShaderManager::u_vec3(kShaderUniform::LightDir, glm::normalize(-light_pos));
|
||||
App::I.grid->m_hm_plane.draw_fill();
|
||||
}
|
||||
else if (App::I.grid->m_shade_mode == NodePanelGrid::ShadeMode::Flat)
|
||||
{
|
||||
ShaderManager::use(kShader::Color);
|
||||
ShaderManager::u_vec4(kShaderUniform::Col, glm::vec4(
|
||||
glm::vec3(1.f - App::I.grid->m_groud_value->get_value()),
|
||||
App::I.grid->m_groud_opacity->get_value()
|
||||
));
|
||||
ShaderManager::u_mat4(kShaderUniform::MVP, mvp);
|
||||
App::I.grid->m_hm_plane.draw_fill();
|
||||
}
|
||||
|
||||
// DRAW GRIDS
|
||||
if (App::I.grid->m_hm_wireframe->get_value() > 0.f)
|
||||
@@ -319,9 +331,12 @@ void NodeCanvas::draw()
|
||||
App::I.grid->m_hm_wireframe->get_value()
|
||||
));
|
||||
ShaderManager::u_mat4(kShaderUniform::MVP, mvp);
|
||||
//glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
|
||||
//App::I.grid->m_hm_plane.draw_fill();
|
||||
//glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||
if (App::I.grid->m_shade_mode == NodePanelGrid::ShadeMode::Transparent)
|
||||
{
|
||||
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
|
||||
App::I.grid->m_hm_plane.draw_fill();
|
||||
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||
}
|
||||
App::I.grid->m_hm_plane.draw_stroke();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user