Route texture alpha setup through helper
This commit is contained in:
@@ -18,6 +18,12 @@ agent or engineer to remove them without reconstructing context from chat.
|
|||||||
|
|
||||||
## Recent Reductions
|
## Recent Reductions
|
||||||
|
|
||||||
|
- 2026-06-13: DEBT-0036 was narrowed again. Retained `TextureAlpha` shader
|
||||||
|
setup now routes through `legacy_canvas_draw_merge_services.h` for Canvas
|
||||||
|
draw-merge layer redraws, depth export merged-layer rendering, NodeCanvas
|
||||||
|
cached/live layer redraws, and desktop VR layer redraws; those paths still
|
||||||
|
own sampler/texture binding, render-task ordering, per-frame alpha updates,
|
||||||
|
and draw execution.
|
||||||
- 2026-06-13: DEBT-0036 was narrowed again. `NodeCanvas` density-resolve and
|
- 2026-06-13: DEBT-0036 was narrowed again. `NodeCanvas` density-resolve and
|
||||||
desktop VR UI `Texture` shader setup now route through
|
desktop VR UI `Texture` shader setup now route through
|
||||||
`legacy_canvas_draw_merge_services.h`; those paths still own render target,
|
`legacy_canvas_draw_merge_services.h`; those paths still own render target,
|
||||||
|
|||||||
@@ -3051,6 +3051,11 @@ Results:
|
|||||||
share the retained draw-merge texture shader setup helper for `Texture`,
|
share the retained draw-merge texture shader setup helper for `Texture`,
|
||||||
`Tex`, and `MVP` setup. Texture/sampler binding, viewport/state setup, and
|
`Tex`, and `MVP` setup. Texture/sampler binding, viewport/state setup, and
|
||||||
draw execution remain in the node paths.
|
draw execution remain in the node paths.
|
||||||
|
- Retained `TextureAlpha` setup now shares the draw-merge shader setup helper
|
||||||
|
for Canvas draw-merge layer redraws, depth export merged-layer rendering,
|
||||||
|
NodeCanvas cached/live layer redraws, and desktop VR layer redraws, while
|
||||||
|
sampler/texture binding, render-task ordering, per-frame alpha updates, and
|
||||||
|
draw execution remain in retained code.
|
||||||
- `NodeCanvas` density-resolve drawing and desktop VR UI drawing now share the
|
- `NodeCanvas` density-resolve drawing and desktop VR UI drawing now share the
|
||||||
retained draw-merge texture shader setup helper, while render target,
|
retained draw-merge texture shader setup helper, while render target,
|
||||||
sampler/texture binding, viewport/state restoration, and draw execution
|
sampler/texture binding, viewport/state restoration, and draw execution
|
||||||
|
|||||||
@@ -398,11 +398,13 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
sampler.bind(0);
|
sampler.bind(0);
|
||||||
ShaderManager::use(kShader::TextureAlpha);
|
pp::panopainter::setup_legacy_canvas_draw_merge_texture_alpha_shader(
|
||||||
ShaderManager::u_int(kShaderUniform::Tex, 0);
|
pp::panopainter::LegacyCanvasDrawMergeTextureAlphaUniforms {
|
||||||
ShaderManager::u_float(kShaderUniform::Alpha, canvas->m_canvas->m_layers[layer_index]->m_opacity);
|
.mvp = plane_mvp_z,
|
||||||
ShaderManager::u_int(kShaderUniform::Highlight, canvas->m_canvas->m_layers[layer_index]->m_hightlight);
|
.texture_slot = 0,
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, plane_mvp_z);
|
.alpha = canvas->m_canvas->m_layers[layer_index]->m_opacity,
|
||||||
|
.highlight = canvas->m_canvas->m_layers[layer_index]->m_hightlight,
|
||||||
|
});
|
||||||
|
|
||||||
set_active_texture_unit(0);
|
set_active_texture_unit(0);
|
||||||
canvas->m_canvas->m_layers[layer_index]->rtt(plane_index).bindTexture();
|
canvas->m_canvas->m_layers[layer_index]->rtt(plane_index).bindTexture();
|
||||||
|
|||||||
@@ -1393,11 +1393,13 @@ void Canvas::draw_merge(bool draw_checkerboard, std::array<bool, 6> faces /*= SI
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_cam_fov < 20.f ? m_sampler_nearest.bind(0) : m_sampler.bind(0);
|
m_cam_fov < 20.f ? m_sampler_nearest.bind(0) : m_sampler.bind(0);
|
||||||
ShaderManager::use(kShader::TextureAlpha);
|
pp::panopainter::setup_legacy_canvas_draw_merge_texture_alpha_shader(
|
||||||
ShaderManager::u_int(kShaderUniform::Tex, 0);
|
pp::panopainter::LegacyCanvasDrawMergeTextureAlphaUniforms {
|
||||||
ShaderManager::u_float(kShaderUniform::Alpha, m_layers[layer_index]->m_opacity);
|
.mvp = ortho,
|
||||||
ShaderManager::u_int(kShaderUniform::Highlight, m_layers[layer_index]->m_hightlight);
|
.texture_slot = 0,
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, ortho);
|
.alpha = m_layers[layer_index]->m_opacity,
|
||||||
|
.highlight = m_layers[layer_index]->m_hightlight,
|
||||||
|
});
|
||||||
|
|
||||||
set_active_texture_unit(0);
|
set_active_texture_unit(0);
|
||||||
m_layers[layer_index]->rtt(plane_index).bindTexture();
|
m_layers[layer_index]->rtt(plane_index).bindTexture();
|
||||||
@@ -2216,11 +2218,13 @@ void Canvas::export_depth_thread(std::string file_name)
|
|||||||
glm::scale(glm::vec3(2));
|
glm::scale(glm::vec3(2));
|
||||||
|
|
||||||
m_sampler.bind(0);
|
m_sampler.bind(0);
|
||||||
ShaderManager::use(kShader::TextureAlpha);
|
pp::panopainter::setup_legacy_canvas_draw_merge_texture_alpha_shader(
|
||||||
ShaderManager::u_int(kShaderUniform::Tex, 0);
|
pp::panopainter::LegacyCanvasDrawMergeTextureAlphaUniforms {
|
||||||
ShaderManager::u_float(kShaderUniform::Alpha, 1.f);
|
.mvp = plane_mvp_z,
|
||||||
ShaderManager::u_int(kShaderUniform::Highlight, false);
|
.texture_slot = 0,
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, plane_mvp_z);
|
.alpha = 1.f,
|
||||||
|
.highlight = false,
|
||||||
|
});
|
||||||
|
|
||||||
set_active_texture_unit(0);
|
set_active_texture_unit(0);
|
||||||
m_layers_merge.rtt(plane_index).bindTexture();
|
m_layers_merge.rtt(plane_index).bindTexture();
|
||||||
|
|||||||
@@ -16,6 +16,13 @@ struct LegacyCanvasDrawMergeTextureUniforms {
|
|||||||
int texture_slot = 0;
|
int texture_slot = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct LegacyCanvasDrawMergeTextureAlphaUniforms {
|
||||||
|
glm::mat4 mvp { 1.0f };
|
||||||
|
int texture_slot = 0;
|
||||||
|
float alpha = 1.0f;
|
||||||
|
int highlight = 0;
|
||||||
|
};
|
||||||
|
|
||||||
struct LegacyCanvasDrawMergeTextureBlendUniforms {
|
struct LegacyCanvasDrawMergeTextureBlendUniforms {
|
||||||
glm::mat4 mvp { 1.0f };
|
glm::mat4 mvp { 1.0f };
|
||||||
int texture_slot = 0;
|
int texture_slot = 0;
|
||||||
@@ -72,6 +79,23 @@ inline void setup_legacy_canvas_draw_merge_texture_shader(
|
|||||||
setup_legacy_canvas_draw_merge_texture_shader(uniforms, legacy_shader_manager_draw_merge_execution());
|
setup_legacy_canvas_draw_merge_texture_shader(uniforms, legacy_shader_manager_draw_merge_execution());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void setup_legacy_canvas_draw_merge_texture_alpha_shader(
|
||||||
|
const LegacyCanvasDrawMergeTextureAlphaUniforms& uniforms,
|
||||||
|
const LegacyCanvasDrawMergeShaderExecution& execution) noexcept
|
||||||
|
{
|
||||||
|
execution.use_shader(kShader::TextureAlpha);
|
||||||
|
execution.set_int(kShaderUniform::Tex, uniforms.texture_slot);
|
||||||
|
execution.set_float(kShaderUniform::Alpha, uniforms.alpha);
|
||||||
|
execution.set_int(kShaderUniform::Highlight, uniforms.highlight);
|
||||||
|
execution.set_mat4(kShaderUniform::MVP, uniforms.mvp);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void setup_legacy_canvas_draw_merge_texture_alpha_shader(
|
||||||
|
const LegacyCanvasDrawMergeTextureAlphaUniforms& uniforms)
|
||||||
|
{
|
||||||
|
setup_legacy_canvas_draw_merge_texture_alpha_shader(uniforms, legacy_shader_manager_draw_merge_execution());
|
||||||
|
}
|
||||||
|
|
||||||
inline void setup_legacy_canvas_draw_merge_texture_blend_shader(
|
inline void setup_legacy_canvas_draw_merge_texture_blend_shader(
|
||||||
const LegacyCanvasDrawMergeTextureBlendUniforms& uniforms,
|
const LegacyCanvasDrawMergeTextureBlendUniforms& uniforms,
|
||||||
const LegacyCanvasDrawMergeShaderExecution& execution) noexcept
|
const LegacyCanvasDrawMergeShaderExecution& execution) noexcept
|
||||||
|
|||||||
@@ -392,11 +392,13 @@ void NodeCanvas::draw()
|
|||||||
glm::translate(glm::vec3(0, 0, -1));
|
glm::translate(glm::vec3(0, 0, -1));
|
||||||
|
|
||||||
m_sampler.bind(0);
|
m_sampler.bind(0);
|
||||||
ShaderManager::use(kShader::TextureAlpha);
|
pp::panopainter::setup_legacy_canvas_draw_merge_texture_alpha_shader(
|
||||||
ShaderManager::u_int(kShaderUniform::Tex, 0);
|
pp::panopainter::LegacyCanvasDrawMergeTextureAlphaUniforms {
|
||||||
ShaderManager::u_float(kShaderUniform::Alpha, 1.f);
|
.mvp = plane_mvp_z,
|
||||||
ShaderManager::u_int(kShaderUniform::Highlight, false);
|
.texture_slot = 0,
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, plane_mvp_z);
|
.alpha = 1.f,
|
||||||
|
.highlight = false,
|
||||||
|
});
|
||||||
|
|
||||||
set_active_texture_unit(0);
|
set_active_texture_unit(0);
|
||||||
m_canvas->m_layers_merge.rtt(plane_index).bindTexture();
|
m_canvas->m_layers_merge.rtt(plane_index).bindTexture();
|
||||||
@@ -583,10 +585,13 @@ void NodeCanvas::draw()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_canvas->m_cam_fov < 20.f ? m_sampler_nearest.bind(0) : m_sampler.bind(0);
|
m_canvas->m_cam_fov < 20.f ? m_sampler_nearest.bind(0) : m_sampler.bind(0);
|
||||||
ShaderManager::use(kShader::TextureAlpha);
|
pp::panopainter::setup_legacy_canvas_draw_merge_texture_alpha_shader(
|
||||||
ShaderManager::u_int(kShaderUniform::Tex, 0);
|
pp::panopainter::LegacyCanvasDrawMergeTextureAlphaUniforms {
|
||||||
ShaderManager::u_int(kShaderUniform::Highlight, m_canvas->m_layers[layer_index]->m_hightlight);
|
.mvp = plane_mvp_z,
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, plane_mvp_z);
|
.texture_slot = 0,
|
||||||
|
.alpha = 1.f,
|
||||||
|
.highlight = m_canvas->m_layers[layer_index]->m_hightlight,
|
||||||
|
});
|
||||||
|
|
||||||
for (int frame = onion_range.first_frame; frame <= onion_range.last_frame; frame++)
|
for (int frame = onion_range.first_frame; frame <= onion_range.last_frame; frame++)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user