diff --git a/docs/modernization/debt.md b/docs/modernization/debt.md index 0294060..17f88fc 100644 --- a/docs/modernization/debt.md +++ b/docs/modernization/debt.md @@ -18,6 +18,11 @@ agent or engineer to remove them without reconstructing context from chat. ## Recent Reductions +- 2026-06-13: DEBT-0036 was narrowed again. `NodeCanvas` now reuses + `legacy_canvas_draw_merge_services.h` for retained checkerboard grid shader + setup and the final cached-layer texture redraw setup. NodeCanvas still owns + panorama layer traversal, onion-frame drawing, blend destination copies, + sampler/texture binding, and draw ordering. - 2026-06-13: DEBT-0036 was narrowed again. `Canvas::stroke_draw_mix` now reuses `legacy_canvas_stroke_composite_services.h` for mixer-pass retained `kShader::CompDraw` binding and blend uniform writes, with the helper now diff --git a/docs/modernization/roadmap.md b/docs/modernization/roadmap.md index 45c666d..6a1f7e3 100644 --- a/docs/modernization/roadmap.md +++ b/docs/modernization/roadmap.md @@ -2996,6 +2996,10 @@ Results: helper for mixer-pass `CompDraw` setup, while preserving its caller-specific texture slot uniforms. Mixer framebuffer/scissor state, sampler and texture binding, and draw execution remain retained. +- `NodeCanvas` panorama drawing now uses the same retained draw-merge shader + setup helper for checkerboard grids and final cached-layer texture redraws; + onion-frame traversal, blend copies, texture binding, and draw order remain + retained in the node. - Canvas thumbnail layer blending now uses the same canvas destination-feedback plan for framebuffer-fetch versus texture-copy decisions; the thumbnail draw itself still executes through retained OpenGL canvas code under DEBT-0036. diff --git a/src/node_canvas.cpp b/src/node_canvas.cpp index 26f1b58..6a5cc97 100644 --- a/src/node_canvas.cpp +++ b/src/node_canvas.cpp @@ -12,6 +12,7 @@ #include "app_core/document_animation.h" #include "app.h" #include "node_panel_grid.h" +#include "legacy_canvas_draw_merge_services.h" #include "legacy_preference_storage.h" #include "legacy_ui_gl_dispatch.h" #include "legacy_ui_overlay_services.h" @@ -374,9 +375,11 @@ void NodeCanvas::draw() m_canvas->m_plane_transform[plane_index] * glm::translate(glm::vec3(0, 0, -1)); - ShaderManager::use(kShader::Checkerboard); - ShaderManager::u_int(kShaderUniform::Colorize, false); - ShaderManager::u_mat4(kShaderUniform::MVP, plane_mvp); + pp::panopainter::setup_legacy_canvas_draw_merge_checkerboard_shader( + pp::panopainter::LegacyCanvasDrawMergeCheckerboardUniforms { + .mvp = plane_mvp, + .colorize = false, + }); m_face_plane.draw_fill(); int z = 1; @@ -425,9 +428,11 @@ void NodeCanvas::draw() m_canvas->m_plane_transform[plane_index] * glm::translate(glm::vec3(0, 0, -1)); - ShaderManager::use(kShader::Checkerboard); - ShaderManager::u_int(kShaderUniform::Colorize, false); - ShaderManager::u_mat4(kShaderUniform::MVP, plane_mvp); + pp::panopainter::setup_legacy_canvas_draw_merge_checkerboard_shader( + pp::panopainter::LegacyCanvasDrawMergeCheckerboardUniforms { + .mvp = plane_mvp, + .colorize = false, + }); m_face_plane.draw_fill(); } } @@ -676,9 +681,11 @@ void NodeCanvas::draw() m_canvas->m_plane_transform[plane_index] * glm::translate(glm::vec3(0, 0, -1.f)); - ShaderManager::use(kShader::Checkerboard); - ShaderManager::u_int(kShaderUniform::Colorize, false); - ShaderManager::u_mat4(kShaderUniform::MVP, plane_mvp); + pp::panopainter::setup_legacy_canvas_draw_merge_checkerboard_shader( + pp::panopainter::LegacyCanvasDrawMergeCheckerboardUniforms { + .mvp = plane_mvp, + .colorize = false, + }); m_face_plane.draw_fill(); } @@ -686,9 +693,11 @@ void NodeCanvas::draw() m_sampler.bind(0); set_active_texture_unit(0); m_cache_rtt.bindTexture(); - ShaderManager::use(kShader::Texture); - ShaderManager::u_int(kShaderUniform::Tex, 0); - ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-1, 1, -1, 1)); + pp::panopainter::setup_legacy_canvas_draw_merge_texture_shader( + pp::panopainter::LegacyCanvasDrawMergeTextureUniforms { + .mvp = glm::ortho(-1, 1, -1, 1), + .texture_slot = 0, + }); m_face_plane.draw_fill(); m_cache_rtt.unbindTexture(); }