Render heightmap to layer
This commit is contained in:
@@ -304,90 +304,7 @@ void NodeCanvas::draw()
|
||||
for (auto& mode : Canvas::modes[(int)Canvas::kCanvasMode::Grid])
|
||||
mode->on_Draw(ortho_proj, proj, camera);
|
||||
|
||||
|
||||
if (App::I.grid->m_groud_opacity->get_value() > 0.f)
|
||||
{
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glClear(GL_DEPTH_BUFFER_BIT);
|
||||
bool blend = glIsEnabled(GL_BLEND);
|
||||
|
||||
auto mvp = proj * camera
|
||||
* glm::translate(glm::vec3(0, glm::pow(App::I.grid->m_groud_offset->get_value() - 0.5f, 3), 0))
|
||||
* 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
|
||||
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)
|
||||
{
|
||||
glEnable(GL_BLEND);
|
||||
ShaderManager::use(kShader::Color);
|
||||
ShaderManager::u_vec4(kShaderUniform::Col, glm::vec4(
|
||||
glm::vec3(App::I.grid->m_groud_value->get_value()),
|
||||
App::I.grid->m_groud_opacity->get_value() *
|
||||
App::I.grid->m_hm_wireframe->get_value()
|
||||
));
|
||||
ShaderManager::u_mat4(kShaderUniform::MVP, mvp);
|
||||
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();
|
||||
}
|
||||
|
||||
blend ? glEnable(GL_BLEND) : glDisable(GL_BLEND);
|
||||
}
|
||||
|
||||
// box grid
|
||||
// ceiling
|
||||
// ShaderManager::u_vec4(kShaderUniform::Col, glm::vec4(
|
||||
// glm::vec3(App::I.grid->m_groud_value->get_value()),
|
||||
// App::I.grid->m_box_opacity->get_value()));
|
||||
// ShaderManager::u_mat4(kShaderUniform::MVP, proj * camera
|
||||
// * glm::translate(glm::vec3(0, (App::I.grid->m_groud_height->get_value() + App::I.grid->m_box_height->get_value() - 0.5f) * 2.f, 0))
|
||||
// * glm::eulerAngleX(glm::radians(90.f))
|
||||
// * glm::scale(glm::vec3(grid_scale, grid_scale, 1))
|
||||
// );
|
||||
// m_grid.draw_stroke();
|
||||
|
||||
|
||||
//ShaderManager::use(kShader::Equirect);
|
||||
//ShaderManager::u_mat4(kShaderUniform::MVP, glm::scale(glm::vec3(.5, .5, 1)));
|
||||
//ShaderManager::u_int(kShaderUniform::Tex, 0);
|
||||
//glBindTexture(GL_TEXTURE_CUBE_MAP, m_canvas->cube_id);
|
||||
//m_face_plane.draw_fill();
|
||||
//glBindTexture(GL_TEXTURE_CUBE_MAP, 0);
|
||||
|
||||
// ShaderManager::use(kShader::Color);
|
||||
// ShaderManager::u_mat4(kShaderUniform::MVP, proj * camera);
|
||||
// ShaderManager::u_vec4(kShaderUniform::Col, { 1, 0, 0, 1 });
|
||||
// static glm::vec4 AB[4]{ {-.75, 0, -1, 1},{ -.75, 0, 1, 1 } };
|
||||
// m_line.update_vertices(AB);
|
||||
// m_line.draw_stroke();
|
||||
App::I.grid->draw_heightmap(proj, camera);
|
||||
|
||||
blend ? glEnable(GL_BLEND) : glDisable(GL_BLEND);
|
||||
depth ? glEnable(GL_DEPTH_TEST) : glDisable(GL_DEPTH_TEST);
|
||||
|
||||
Reference in New Issue
Block a user