Thin canvas state, tools menu, and node canvas draw
This commit is contained in:
@@ -476,7 +476,7 @@ void NodeCanvas::draw()
|
||||
plane_index,
|
||||
m_canvas->m_layers[layer_index]->m_opacity);
|
||||
|
||||
pp::panopainter::execute_legacy_canvas_draw_merge_layer_plane(
|
||||
pp::panopainter::execute_legacy_canvas_draw_merge_layer_path(
|
||||
m_canvas->m_current_stroke && m_canvas->m_current_mode == kCanvasMode::Erase && m_canvas->m_show_tmp && m_canvas->m_current_layer_idx == layer_index,
|
||||
m_canvas->m_current_stroke && m_canvas->m_show_tmp && m_canvas->m_current_layer_idx == layer_index,
|
||||
use_blend,
|
||||
@@ -515,9 +515,6 @@ void NodeCanvas::draw()
|
||||
set_active_texture_unit(2);
|
||||
m_canvas->m_smask.rtt(plane_index).bindTexture();
|
||||
},
|
||||
.draw_temporary_erase_frame = [&](int frame, float onion_alpha) {
|
||||
draw_layer_frame(frame, onion_alpha);
|
||||
},
|
||||
.cleanup_temporary_erase = [&] {
|
||||
set_active_texture_unit(2);
|
||||
m_canvas->m_smask.rtt(plane_index).unbindTexture();
|
||||
@@ -571,9 +568,6 @@ void NodeCanvas::draw()
|
||||
b->m_pattern_texture->bind() :
|
||||
unbind_texture_2d();
|
||||
},
|
||||
.draw_temporary_paint_frame = [&](int frame, float onion_alpha) {
|
||||
draw_layer_frame(frame, onion_alpha);
|
||||
},
|
||||
.cleanup_temporary_paint = [&] {
|
||||
set_active_texture_unit(3);
|
||||
if (b->m_dual_enabled)
|
||||
@@ -593,9 +587,6 @@ void NodeCanvas::draw()
|
||||
.highlight = m_canvas->m_layers[layer_index]->m_hightlight,
|
||||
});
|
||||
},
|
||||
.draw_layer_texture_frame = [&](int frame, float onion_alpha) {
|
||||
draw_layer_frame(frame, onion_alpha);
|
||||
},
|
||||
.cleanup_layer_texture = [&] {
|
||||
},
|
||||
.draw_blend = [&] {
|
||||
@@ -637,24 +628,28 @@ void NodeCanvas::draw()
|
||||
set_active_texture_unit(0);
|
||||
m_blender_rtt.unbindTexture();
|
||||
},
|
||||
.draw_debug_outline =
|
||||
#ifdef _DEBUG
|
||||
[&] {
|
||||
auto bb = m_canvas->m_layers[layer_index]->box(plane_index) / (float)m_canvas->m_layers[layer_index]->w;
|
||||
glm::vec2 bbmin = xy(bb);
|
||||
glm::vec2 bbsz = zw(bb) - xy(bb);
|
||||
pp::panopainter::configure_legacy_ui_color_shader(
|
||||
plane_mvp_z
|
||||
* glm::translate(glm::vec3(bbmin * 2.f, 0))
|
||||
* glm::translate(glm::vec3(-1, -1, 0))
|
||||
* glm::scale(glm::vec3(bbsz, 1))
|
||||
* glm::translate(glm::vec3(1, 1, 0)),
|
||||
{ 1, 0, 0, 1 });
|
||||
m_face_plane.draw_stroke();
|
||||
},
|
||||
#else
|
||||
[] {
|
||||
},
|
||||
#endif
|
||||
.draw_frame = draw_layer_frame,
|
||||
});
|
||||
|
||||
#ifdef _DEBUG
|
||||
// draw dirty area
|
||||
{
|
||||
auto bb = m_canvas->m_layers[layer_index]->box(plane_index) / (float)m_canvas->m_layers[layer_index]->w;
|
||||
glm::vec2 bbmin = xy(bb);
|
||||
glm::vec2 bbsz = zw(bb) - xy(bb);
|
||||
pp::panopainter::configure_legacy_ui_color_shader(
|
||||
plane_mvp_z
|
||||
* glm::translate(glm::vec3(bbmin * 2.f, 0))
|
||||
* glm::translate(glm::vec3(-1, -1, 0))
|
||||
* glm::scale(glm::vec3(bbsz, 1))
|
||||
* glm::translate(glm::vec3(1, 1, 0)),
|
||||
{ 1, 0, 0, 1 });
|
||||
m_face_plane.draw_stroke();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
if (use_blend)
|
||||
@@ -705,58 +700,56 @@ void NodeCanvas::draw()
|
||||
|
||||
apply_node_canvas_capability(pp::renderer::gl::depth_test_state(), false);
|
||||
|
||||
pp::panopainter::execute_legacy_canvas_draw_merge_post_draw(
|
||||
pp::panopainter::execute_legacy_canvas_draw_merge_post_draw_callbacks(
|
||||
m_canvas->m_smask_active,
|
||||
m_canvas->m_current_mode == kCanvasMode::Copy || m_canvas->m_current_mode == kCanvasMode::Cut,
|
||||
m_canvas->m_smask_mode,
|
||||
m_canvas->m_current_mode != kCanvasMode::Grid,
|
||||
{
|
||||
.draw_mask_free = [&] {
|
||||
m_canvas->modes[(int)kCanvasMode::MaskFree][0]->on_Draw(ortho_proj, proj, camera);
|
||||
},
|
||||
.draw_mask_line = [&] {
|
||||
m_canvas->modes[(int)kCanvasMode::MaskLine][0]->on_Draw(ortho_proj, proj, camera);
|
||||
},
|
||||
.draw_smask_faces = [&] {
|
||||
pp::panopainter::execute_legacy_canvas_draw_merge_smask_faces(
|
||||
pp::panopainter::LegacyCanvasDrawMergeTextureMaskUniforms {
|
||||
.texture_slot = 0,
|
||||
.pattern_offset = m_outline_pan,
|
||||
[&] {
|
||||
m_canvas->modes[(int)kCanvasMode::MaskFree][0]->on_Draw(ortho_proj, proj, camera);
|
||||
},
|
||||
[&] {
|
||||
m_canvas->modes[(int)kCanvasMode::MaskLine][0]->on_Draw(ortho_proj, proj, camera);
|
||||
},
|
||||
[&] {
|
||||
pp::panopainter::execute_legacy_canvas_draw_merge_smask_faces(
|
||||
pp::panopainter::LegacyCanvasDrawMergeTextureMaskUniforms {
|
||||
.texture_slot = 0,
|
||||
.pattern_offset = m_outline_pan,
|
||||
},
|
||||
proj,
|
||||
camera,
|
||||
m_canvas->m_layers.size() + 500.f,
|
||||
std::to_array(m_canvas->m_plane_transform),
|
||||
{
|
||||
.set_active_texture_unit = [&] {
|
||||
set_active_texture_unit(0);
|
||||
},
|
||||
proj,
|
||||
camera,
|
||||
m_canvas->m_layers.size() + 500.f,
|
||||
std::to_array(m_canvas->m_plane_transform),
|
||||
{
|
||||
.set_active_texture_unit = [&] {
|
||||
set_active_texture_unit(0);
|
||||
},
|
||||
.enable_blend = [&] {
|
||||
apply_node_canvas_capability(pp::renderer::gl::blend_state(), true);
|
||||
},
|
||||
.bind_face_texture = [&](int plane_index) {
|
||||
m_canvas->m_smask.rtt(plane_index).bindTexture();
|
||||
},
|
||||
.draw_face = [&] {
|
||||
m_face_plane.draw_fill();
|
||||
},
|
||||
.unbind_face_texture = [&](int plane_index) {
|
||||
m_canvas->m_smask.rtt(plane_index).unbindTexture();
|
||||
},
|
||||
});
|
||||
},
|
||||
.draw_grid_modes = pp::panopainter::make_legacy_canvas_draw_merge_grid_modes_draw(
|
||||
&Canvas::modes[(int)kCanvasMode::Grid],
|
||||
ortho_proj,
|
||||
proj,
|
||||
camera),
|
||||
.draw_heightmap = pp::panopainter::make_legacy_canvas_draw_merge_heightmap_draw(App::I->grid.get(), proj, camera),
|
||||
.draw_current_modes = pp::panopainter::make_legacy_canvas_draw_merge_current_modes_draw(
|
||||
m_canvas->m_mode,
|
||||
ortho_proj,
|
||||
proj,
|
||||
camera),
|
||||
});
|
||||
.enable_blend = [&] {
|
||||
apply_node_canvas_capability(pp::renderer::gl::blend_state(), true);
|
||||
},
|
||||
.bind_face_texture = [&](int plane_index) {
|
||||
m_canvas->m_smask.rtt(plane_index).bindTexture();
|
||||
},
|
||||
.draw_face = [&] {
|
||||
m_face_plane.draw_fill();
|
||||
},
|
||||
.unbind_face_texture = [&](int plane_index) {
|
||||
m_canvas->m_smask.rtt(plane_index).unbindTexture();
|
||||
},
|
||||
});
|
||||
},
|
||||
pp::panopainter::make_legacy_canvas_draw_merge_grid_modes_draw(
|
||||
&Canvas::modes[(int)kCanvasMode::Grid],
|
||||
ortho_proj,
|
||||
proj,
|
||||
camera),
|
||||
pp::panopainter::make_legacy_canvas_draw_merge_heightmap_draw(App::I->grid.get(), proj, camera),
|
||||
pp::panopainter::make_legacy_canvas_draw_merge_current_modes_draw(
|
||||
m_canvas->m_mode,
|
||||
ortho_proj,
|
||||
proj,
|
||||
camera));
|
||||
|
||||
if (m_density != 1.f)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user