Route mask cut composite setup through helper

This commit is contained in:
2026-06-13 05:27:01 +02:00
parent 96a13eec72
commit 76f0061840
3 changed files with 24 additions and 12 deletions

View File

@@ -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. `CanvasModeMaskCut::apply`
retained `CompDraw` shader setup now routes through
`legacy_canvas_stroke_composite_services.h`; mask-cut still owns render-task
ordering, framebuffer copy bounds, sampler/texture binding, and draw
execution.
- 2026-06-13: DEBT-0036 was narrowed again. Desktop VR retained temporary erase
and draw shader setup now route through the shared stroke erase/composite
helpers; VR still owns sampler/texture binding, per-eye/view transforms,

View File

@@ -3017,6 +3017,10 @@ Results:
erase and composite shader setup helpers, while sampler/texture binding,
per-eye/view transforms, temporary stroke texture selection, and draw
execution remain in retained VR code.
- `CanvasModeMaskCut::apply` retained mask-cut compositing now shares the
stroke composite shader setup helper, while render-task ordering, framebuffer
copy bounds, sampler/texture binding, and draw execution remain in retained
canvas-mode code.
- `Canvas::stroke_draw_mix` now shares the retained stroke composite shader
helper for mixer-pass `CompDraw` setup, while preserving its caller-specific
texture slot uniforms. Mixer framebuffer/scissor state, sampler and texture

View File

@@ -8,6 +8,7 @@
#include "canvas.h"
#include "shader.h"
#include "node_canvas.h"
#include "legacy_canvas_stroke_composite_services.h"
#include "legacy_ui_overlay_services.h"
#include "legacy_ui_gl_dispatch.h"
#include "app.h"
@@ -1478,18 +1479,20 @@ void CanvasModeTransform::leave(kCanvasMode next)
set_canvas_mode_active_texture_unit(1);
for (int j = 0; j < 6; j++)
{
ShaderManager::use(kShader::CompDraw);
ShaderManager::u_mat4(kShaderUniform::MVP, mvp);
ShaderManager::u_int(kShaderUniform::Tex, 0);
ShaderManager::u_int(kShaderUniform::TexStroke, 1);
ShaderManager::u_float(kShaderUniform::Alpha, 1);
ShaderManager::u_int(kShaderUniform::UseFragcoord, true);
ShaderManager::u_int(kShaderUniform::Lock, false);
ShaderManager::u_int(kShaderUniform::Mask, false);
ShaderManager::u_vec2(kShaderUniform::Resolution, Canvas::I->m_size);
ShaderManager::u_int(kShaderUniform::BlendMode, 0);
ShaderManager::u_int(kShaderUniform::UseDual, false);
ShaderManager::u_int(kShaderUniform::UsePattern, false);
pp::panopainter::setup_legacy_stroke_composite_shader(
pp::panopainter::LegacyStrokeCompositeUniforms {
.resolution = Canvas::I->m_size,
.mvp = mvp,
.texture_slot = 0,
.stroke_texture_slot = 1,
.layer_alpha = 1.0f,
.alpha_lock = false,
.mask_enabled = false,
.use_fragcoord = true,
.blend_mode = 0,
.use_dual = false,
.use_pattern = false,
});
Canvas::I->m_sampler_linear.bind(1);
Canvas::I->m_sampler_linear.bind(0);
m_tex[j].bind();