Route stroke commit composite through service
This commit is contained in:
@@ -18,6 +18,11 @@ agent or engineer to remove them without reconstructing context from chat.
|
||||
|
||||
## Recent Reductions
|
||||
|
||||
- 2026-06-12: DEBT-0036 was narrowed again. `Canvas::stroke_commit` now reuses
|
||||
`legacy_canvas_stroke_composite_services.h` for commit-time final stroke
|
||||
`kShader::CompDraw` binding and composite/pattern/dual uniform writes.
|
||||
Texture/framebuffer binding, copy ordering, layer dirty mutation, and
|
||||
non-stroke composite callers remain retained legacy execution.
|
||||
- 2026-06-12: DEBT-0036 was narrowed again. Canvas stroke padding and commit
|
||||
dilate shader setup now route retained `kShader::StrokePad` and
|
||||
`kShader::StrokeDilate` binding/uniform writes through
|
||||
|
||||
@@ -1350,11 +1350,12 @@ OpenGL stroke execution service seam. Live stroke `kShader::Stroke` binding,
|
||||
setup, blend, pattern, and per-sample uniform writes now pass through
|
||||
`legacy_canvas_stroke_shader_services.h`. Live draw-merge and preview final
|
||||
stroke composite `kShader::CompDraw` setup now pass through
|
||||
`legacy_canvas_stroke_composite_services.h`. Stroke padding and commit dilate
|
||||
`kShader::StrokePad`/`kShader::StrokeDilate` setup now pass through
|
||||
`legacy_canvas_stroke_edge_services.h`, leaving RTT/texture ownership,
|
||||
dirty-box policy, checkerboard/commit composite shaders, quad expansion, and
|
||||
retained callback execution under `DEBT-0036`.
|
||||
`legacy_canvas_stroke_composite_services.h`, and `Canvas::stroke_commit` now
|
||||
reuses that same composite service for commit-time final stroke compositing.
|
||||
Stroke padding and commit dilate `kShader::StrokePad`/`kShader::StrokeDilate`
|
||||
setup now pass through `legacy_canvas_stroke_edge_services.h`, leaving
|
||||
RTT/texture ownership, dirty-box policy, checkerboard/non-stroke composite
|
||||
shaders, quad expansion, and retained callback execution under `DEBT-0036`.
|
||||
It also owns renderer API texture-format to
|
||||
OpenGL internal/pixel/component token mapping, including depth-stencil formats,
|
||||
for future backend texture objects. `Texture2D` 2D texture binding, upload,
|
||||
|
||||
@@ -1059,30 +1059,29 @@ void Canvas::stroke_commit()
|
||||
if (b->m_pattern_flipx) patt_scale.x *= -1.f;
|
||||
if (b->m_pattern_flipy) patt_scale.y *= -1.f;
|
||||
|
||||
ShaderManager::use(kShader::CompDraw);
|
||||
ShaderManager::u_int(kShaderUniform::Tex, 0);
|
||||
ShaderManager::u_int(kShaderUniform::TexStroke, 1);
|
||||
ShaderManager::u_int(kShaderUniform::TexMask, 2);
|
||||
ShaderManager::u_int(kShaderUniform::TexDual, 3);
|
||||
ShaderManager::u_int(kShaderUniform::TexPattern, 4);
|
||||
ShaderManager::u_vec2(kShaderUniform::Resolution, m_size);
|
||||
ShaderManager::u_float(kShaderUniform::Alpha, 1);
|
||||
ShaderManager::u_int(kShaderUniform::Mask, m_smask_active);
|
||||
ShaderManager::u_int(kShaderUniform::Lock, m_layers[m_current_layer_idx]->m_alpha_locked);
|
||||
ShaderManager::u_int(kShaderUniform::UseFragcoord, false);
|
||||
ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode);
|
||||
ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f));
|
||||
ShaderManager::u_int(kShaderUniform::UseDual, stroke_material.composite_pass.use_dual);
|
||||
ShaderManager::u_int(kShaderUniform::DualBlendMode, stroke_material.composite_pass.dual_blend_mode);
|
||||
ShaderManager::u_float(kShaderUniform::DualAlpha, stroke_material.composite_pass.dual_alpha);
|
||||
ShaderManager::u_int(kShaderUniform::UsePattern, stroke_material.composite_pass.use_pattern);
|
||||
ShaderManager::u_vec2(kShaderUniform::PatternScale, patt_scale);
|
||||
ShaderManager::u_float(kShaderUniform::PatternInvert, b->m_pattern_invert);
|
||||
ShaderManager::u_float(kShaderUniform::PatternBright, b->m_pattern_brightness);
|
||||
ShaderManager::u_float(kShaderUniform::PatternContrast, b->m_pattern_contrast);
|
||||
ShaderManager::u_float(kShaderUniform::PatternDepth, b->m_pattern_depth);
|
||||
ShaderManager::u_int(kShaderUniform::PatternBlendMode, b->m_pattern_blend_mode);
|
||||
ShaderManager::u_vec2(kShaderUniform::PatternOffset, m_pattern_offset);
|
||||
pp::panopainter::setup_legacy_stroke_composite_shader(
|
||||
pp::panopainter::LegacyStrokeCompositeUniforms {
|
||||
.resolution = m_size,
|
||||
.pattern = {
|
||||
.scale = patt_scale,
|
||||
.invert = static_cast<float>(b->m_pattern_invert),
|
||||
.brightness = b->m_pattern_brightness,
|
||||
.contrast = b->m_pattern_contrast,
|
||||
.depth = b->m_pattern_depth,
|
||||
.blend_mode = b->m_pattern_blend_mode,
|
||||
.offset = m_pattern_offset,
|
||||
},
|
||||
.mvp = glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f),
|
||||
.layer_alpha = 1.0f,
|
||||
.alpha_lock = m_layers[m_current_layer_idx]->m_alpha_locked,
|
||||
.mask_enabled = m_smask_active,
|
||||
.use_fragcoord = false,
|
||||
.blend_mode = b->m_blend_mode,
|
||||
.use_dual = stroke_material.composite_pass.use_dual,
|
||||
.dual_blend_mode = stroke_material.composite_pass.dual_blend_mode,
|
||||
.dual_alpha = stroke_material.composite_pass.dual_alpha,
|
||||
.use_pattern = stroke_material.composite_pass.use_pattern,
|
||||
});
|
||||
|
||||
set_active_texture_unit(0);
|
||||
m_tex2[i].bind();
|
||||
|
||||
Reference in New Issue
Block a user