Route remaining shader setup through helpers
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. Remaining live shader setup
|
||||||
|
outside retained helper headers now routes through retained helper surfaces
|
||||||
|
for canvas modes, equirect layer export, `NodeCanvas` debug dirty bounds,
|
||||||
|
atlas image drawing, and text drawing; those paths still own geometry,
|
||||||
|
framebuffer flow, texture/sampler binding, blend/depth state, readback, and
|
||||||
|
draw execution.
|
||||||
- 2026-06-13: DEBT-0036 was narrowed again. Remaining simple color, hue,
|
- 2026-06-13: DEBT-0036 was narrowed again. Remaining simple color, hue,
|
||||||
color-quad, grid heightmap, and pen/line preview shader setup in UI nodes
|
color-quad, grid heightmap, and pen/line preview shader setup in UI nodes
|
||||||
and canvas modes now routes through retained helper surfaces; those paths
|
and canvas modes now routes through retained helper surfaces; those paths
|
||||||
|
|||||||
@@ -3068,6 +3068,11 @@ Results:
|
|||||||
- Scrollbar, text-input, and VR frame/cursor/controller shader setup now share
|
- Scrollbar, text-input, and VR frame/cursor/controller shader setup now share
|
||||||
retained UI/preview helpers, while geometry, blend/depth state,
|
retained UI/preview helpers, while geometry, blend/depth state,
|
||||||
sampler/texture binding, and draw execution remain retained.
|
sampler/texture binding, and draw execution remain retained.
|
||||||
|
- Remaining live shader setup outside retained helper headers now shares
|
||||||
|
retained helper surfaces for canvas modes, equirect layer export,
|
||||||
|
`NodeCanvas` debug dirty bounds, atlas image drawing, and text drawing, while
|
||||||
|
geometry, framebuffer flow, texture/sampler binding, blend/depth state,
|
||||||
|
readback, and draw execution remain retained.
|
||||||
- Remaining simple color, hue, color-quad, grid heightmap, and pen/line
|
- Remaining simple color, hue, color-quad, grid heightmap, and pen/line
|
||||||
preview shader setup in UI nodes and canvas modes now shares retained helper
|
preview shader setup in UI nodes and canvas modes now shares retained helper
|
||||||
surfaces, while geometry, texture/sampler binding, blend/depth state,
|
surfaces, while geometry, texture/sampler binding, blend/depth state,
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "canvas_layer.h"
|
#include "canvas_layer.h"
|
||||||
#include "app.h"
|
#include "app.h"
|
||||||
|
#include "legacy_canvas_draw_merge_services.h"
|
||||||
#include "legacy_ui_gl_dispatch.h"
|
#include "legacy_ui_gl_dispatch.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "renderer_gl/opengl_capabilities.h"
|
#include "renderer_gl/opengl_capabilities.h"
|
||||||
@@ -145,9 +146,8 @@ Texture2D Layer::gen_equirect(glm::ivec2 size /*= { 0, 0 }*/)
|
|||||||
set_layer_active_texture_unit(0U);
|
set_layer_active_texture_unit(0U);
|
||||||
bind_layer_texture_cube(cube.m_cubetex_id);
|
bind_layer_texture_cube(cube.m_cubetex_id);
|
||||||
|
|
||||||
ShaderManager::use(kShader::Equirect);
|
pp::panopainter::setup_legacy_canvas_draw_merge_equirect_shader(
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f));
|
{.mvp = glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f), .texture_slot = 0});
|
||||||
ShaderManager::u_int(kShaderUniform::Tex, 0);
|
|
||||||
Canvas::I->m_sampler.bind(0);
|
Canvas::I->m_sampler.bind(0);
|
||||||
Canvas::I->m_plane.draw_fill();
|
Canvas::I->m_plane.draw_fill();
|
||||||
|
|
||||||
@@ -187,9 +187,8 @@ PBO Layer::gen_equirect_pbo(glm::ivec2 size /*= { 0, 0 }*/)
|
|||||||
set_layer_active_texture_unit(0U);
|
set_layer_active_texture_unit(0U);
|
||||||
bind_layer_texture_cube(cube.m_cubetex_id);
|
bind_layer_texture_cube(cube.m_cubetex_id);
|
||||||
|
|
||||||
ShaderManager::use(kShader::Equirect);
|
pp::panopainter::setup_legacy_canvas_draw_merge_equirect_shader(
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f));
|
{.mvp = glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f), .texture_slot = 0});
|
||||||
ShaderManager::u_int(kShaderUniform::Tex, 0);
|
|
||||||
Canvas::I->m_sampler.bind(0);
|
Canvas::I->m_sampler.bind(0);
|
||||||
Canvas::I->m_plane.draw_fill();
|
Canvas::I->m_plane.draw_fill();
|
||||||
|
|
||||||
|
|||||||
@@ -593,9 +593,10 @@ void CanvasModeGrid::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, cons
|
|||||||
auto const& l = m_lines[i];
|
auto const& l = m_lines[i];
|
||||||
auto origin = l.o;
|
auto origin = l.o;
|
||||||
auto dir = l.d;
|
auto dir = l.d;
|
||||||
ShaderManager::use(kShader::Color);
|
pp::panopainter::setup_legacy_vr_color_shader({
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, proj * camera);
|
.color = m_highlight && i == m_selected_index ? blue : red,
|
||||||
ShaderManager::u_vec4(kShaderUniform::Col, m_highlight && i == m_selected_index ? blue : red);
|
.mvp = proj * camera,
|
||||||
|
});
|
||||||
static glm::vec4 AB[2];
|
static glm::vec4 AB[2];
|
||||||
AB[0] = {origin - dir * 10.f, 1};
|
AB[0] = {origin - dir * 10.f, 1};
|
||||||
AB[1] = {origin + dir * 10.f, 1 };
|
AB[1] = {origin + dir * 10.f, 1 };
|
||||||
@@ -612,9 +613,10 @@ void CanvasModeGrid::init()
|
|||||||
void CanvasModeGrid::commit()
|
void CanvasModeGrid::commit()
|
||||||
{
|
{
|
||||||
auto drawer = [this](const glm::mat4& camera, const glm::mat4& proj){
|
auto drawer = [this](const glm::mat4& camera, const glm::mat4& proj){
|
||||||
ShaderManager::use(kShader::Color);
|
pp::panopainter::setup_legacy_vr_color_shader({
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, proj * camera);
|
.color = { 1, 0, 0, 1 },
|
||||||
ShaderManager::u_vec4(kShaderUniform::Col, {1, 0, 0, 1});
|
.mvp = proj * camera,
|
||||||
|
});
|
||||||
static glm::vec4 AB[2];
|
static glm::vec4 AB[2];
|
||||||
AB[0] = {origin - dir * 10.f, 1};
|
AB[0] = {origin - dir * 10.f, 1};
|
||||||
AB[1] = {origin + dir * 10.f, 1 };
|
AB[1] = {origin + dir * 10.f, 1 };
|
||||||
@@ -742,10 +744,10 @@ void CanvasModeMaskFree::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
|||||||
auto drawer = [this](const glm::mat4& camera, const glm::mat4& proj) {
|
auto drawer = [this](const glm::mat4& camera, const glm::mat4& proj) {
|
||||||
// blending state intentionally left unchanged here.
|
// blending state intentionally left unchanged here.
|
||||||
apply_canvas_mode_capability(pp::renderer::gl::depth_test_state(), false);
|
apply_canvas_mode_capability(pp::renderer::gl::depth_test_state(), false);
|
||||||
ShaderManager::use(kShader::Color);
|
pp::panopainter::setup_legacy_vr_color_shader({
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, proj * camera);
|
.color = App::I->keys[(int)kKey::KeyCtrl] ? glm::vec4(0, 0, 0, 1) : glm::vec4(1, 1, 1, 1),
|
||||||
ShaderManager::u_vec4(kShaderUniform::Col,
|
.mvp = proj * camera,
|
||||||
App::I->keys[(int)kKey::KeyCtrl] ? glm::vec4(0, 0, 0, 1) : glm::vec4(1, 1, 1, 1));
|
});
|
||||||
m_shape.draw_fill();
|
m_shape.draw_fill();
|
||||||
};
|
};
|
||||||
// use m_shape to render the mask polygon
|
// use m_shape to render the mask polygon
|
||||||
@@ -825,9 +827,10 @@ void CanvasModeMaskFree::on_Draw(const glm::mat4& ortho, const glm::mat4& proj,
|
|||||||
{
|
{
|
||||||
if (m_dragging)
|
if (m_dragging)
|
||||||
{
|
{
|
||||||
ShaderManager::use(kShader::Color);
|
pp::panopainter::setup_legacy_vr_color_shader({
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, glm::scale(glm::vec3(1,-1,1)) * ortho);
|
.color = { 0, 0, 0, 1 },
|
||||||
ShaderManager::u_vec4(kShaderUniform::Col, { 0, 0, 0, 1 });
|
.mvp = glm::scale(glm::vec3(1, -1, 1)) * ortho,
|
||||||
|
});
|
||||||
//m_dragging ? m_shape.draw_stroke() : m_shape.draw_fill();
|
//m_dragging ? m_shape.draw_stroke() : m_shape.draw_fill();
|
||||||
m_shape.draw_stroke();
|
m_shape.draw_stroke();
|
||||||
}
|
}
|
||||||
@@ -877,9 +880,10 @@ void CanvasModeMaskLine::leave(kCanvasMode next)
|
|||||||
{
|
{
|
||||||
auto drawer = [this](const glm::mat4& camera, const glm::mat4& proj) {
|
auto drawer = [this](const glm::mat4& camera, const glm::mat4& proj) {
|
||||||
// blending state intentionally left unchanged here.
|
// blending state intentionally left unchanged here.
|
||||||
ShaderManager::use(kShader::Color);
|
pp::panopainter::setup_legacy_vr_color_shader({
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, proj * camera);
|
.color = { 1, 1, 1, 1 },
|
||||||
ShaderManager::u_vec4(kShaderUniform::Col, {1, 1, 1, 1});
|
.mvp = proj * camera,
|
||||||
|
});
|
||||||
m_shape.draw_fill();
|
m_shape.draw_fill();
|
||||||
};
|
};
|
||||||
Canvas::I->draw_objects_direct(std::bind(drawer, std::placeholders::_1, std::placeholders::_2), Canvas::I->m_smask, 0);
|
Canvas::I->draw_objects_direct(std::bind(drawer, std::placeholders::_1, std::placeholders::_2), Canvas::I->m_smask, 0);
|
||||||
@@ -982,17 +986,19 @@ void CanvasModeMaskLine::on_Draw(const glm::mat4& ortho, const glm::mat4& proj,
|
|||||||
{
|
{
|
||||||
if (m_active_tool)
|
if (m_active_tool)
|
||||||
{
|
{
|
||||||
ShaderManager::use(kShader::Color);
|
pp::panopainter::setup_legacy_vr_color_shader({
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, glm::scale(glm::vec3(1,-1,1)) * ortho);
|
.color = { 0, 0, 0, 1 },
|
||||||
ShaderManager::u_vec4(kShaderUniform::Col, { 0, 0, 0, 1 });
|
.mvp = glm::scale(glm::vec3(1, -1, 1)) * ortho,
|
||||||
|
});
|
||||||
//m_dragging ? m_shape.draw_stroke() : m_shape.draw_fill();
|
//m_dragging ? m_shape.draw_stroke() : m_shape.draw_fill();
|
||||||
m_shape.draw_stroke();
|
m_shape.draw_stroke();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ShaderManager::use(kShader::Color);
|
pp::panopainter::setup_legacy_vr_color_shader({
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, proj * camera);
|
.color = { 0, 0, 0, 1 },
|
||||||
ShaderManager::u_vec4(kShaderUniform::Col, { 0, 0, 0, 1 });
|
.mvp = proj * camera,
|
||||||
|
});
|
||||||
m_shape.draw_stroke();
|
m_shape.draw_stroke();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1010,9 +1016,10 @@ void CanvasModeFill::leave(kCanvasMode next)
|
|||||||
if (m_points.size() > 2)
|
if (m_points.size() > 2)
|
||||||
{
|
{
|
||||||
auto drawer = [this](const glm::mat4& camera, const glm::mat4& proj) {
|
auto drawer = [this](const glm::mat4& camera, const glm::mat4& proj) {
|
||||||
ShaderManager::use(kShader::Color);
|
pp::panopainter::setup_legacy_vr_color_shader({
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, proj * camera);
|
.color = { 1, 1, 1, 1 },
|
||||||
ShaderManager::u_vec4(kShaderUniform::Col, {1, 1, 1, 1});
|
.mvp = proj * camera,
|
||||||
|
});
|
||||||
m_shape.draw_fill();
|
m_shape.draw_fill();
|
||||||
};
|
};
|
||||||
Canvas::I->draw_objects_direct(std::bind(drawer, std::placeholders::_1, std::placeholders::_2), Canvas::I->m_smask, 0);
|
Canvas::I->draw_objects_direct(std::bind(drawer, std::placeholders::_1, std::placeholders::_2), Canvas::I->m_smask, 0);
|
||||||
@@ -1102,9 +1109,10 @@ void CanvasModeFill::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, cons
|
|||||||
{
|
{
|
||||||
if (!m_points.empty())
|
if (!m_points.empty())
|
||||||
{
|
{
|
||||||
ShaderManager::use(kShader::Color);
|
pp::panopainter::setup_legacy_vr_color_shader({
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, proj * camera);
|
.color = { 0, 0, 0, .25 },
|
||||||
ShaderManager::u_vec4(kShaderUniform::Col, { 0, 0, 0, .25 });
|
.mvp = proj * camera,
|
||||||
|
});
|
||||||
m_dragging ? m_shape.draw_fill() : m_shape.draw_stroke();
|
m_dragging ? m_shape.draw_fill() : m_shape.draw_stroke();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1352,9 +1360,10 @@ void CanvasModeTransform::enter(kCanvasMode prev)
|
|||||||
apply_canvas_mode_capability(pp::renderer::gl::depth_test_state(), false);
|
apply_canvas_mode_capability(pp::renderer::gl::depth_test_state(), false);
|
||||||
apply_canvas_mode_capability(pp::renderer::gl::blend_state(), false);
|
apply_canvas_mode_capability(pp::renderer::gl::blend_state(), false);
|
||||||
set_canvas_mode_active_texture_unit(0);
|
set_canvas_mode_active_texture_unit(0);
|
||||||
ShaderManager::use(kShader::Color);
|
pp::panopainter::setup_legacy_vr_color_shader({
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, mvp);
|
.color = { 0, 0, 0, 0 },
|
||||||
ShaderManager::u_vec4(kShaderUniform::Col, { 0, 0, 0, 0 });
|
.mvp = mvp,
|
||||||
|
});
|
||||||
layer->rtt(i).bindFramebuffer();
|
layer->rtt(i).bindFramebuffer();
|
||||||
// copy framebuffer to action data
|
// copy framebuffer to action data
|
||||||
layer->rtt(i).readPixelsRgba8(
|
layer->rtt(i).readPixelsRgba8(
|
||||||
@@ -1522,9 +1531,10 @@ void CanvasModeTransform::on_Draw(const glm::mat4& ortho, const glm::mat4& proj,
|
|||||||
apply_canvas_mode_capability(pp::renderer::gl::blend_state(), true);
|
apply_canvas_mode_capability(pp::renderer::gl::blend_state(), true);
|
||||||
for (int i = 0; i < 6; i++)
|
for (int i = 0; i < 6; i++)
|
||||||
{
|
{
|
||||||
ShaderManager::use(kShader::Color);
|
pp::panopainter::setup_legacy_vr_color_shader({
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, proj * camera * m_xform * m_xform_local);
|
.color = { 0, 1, 1, .1 },
|
||||||
ShaderManager::u_vec4(kShaderUniform::Col, { 0, 1, 1, .1 });
|
.mvp = proj * camera * m_xform * m_xform_local,
|
||||||
|
});
|
||||||
m_shape[i].draw_fill();
|
m_shape[i].draw_fill();
|
||||||
|
|
||||||
pp::panopainter::setup_legacy_canvas_draw_merge_texture_shader({
|
pp::panopainter::setup_legacy_canvas_draw_merge_texture_shader({
|
||||||
@@ -1538,7 +1548,6 @@ void CanvasModeTransform::on_Draw(const glm::mat4& ortho, const glm::mat4& proj,
|
|||||||
m_tex[i].unbind();
|
m_tex[i].unbind();
|
||||||
}
|
}
|
||||||
|
|
||||||
ShaderManager::use(kShader::Color);
|
|
||||||
auto m2d = Canvas::I->m_proj * Canvas::I->m_mv * m_xform * m_xform_local;
|
auto m2d = Canvas::I->m_proj * Canvas::I->m_mv * m_xform * m_xform_local;
|
||||||
for (int i = 0; i < corners.size(); i++)
|
for (int i = 0; i < corners.size(); i++)
|
||||||
{
|
{
|
||||||
@@ -1548,15 +1557,17 @@ void CanvasModeTransform::on_Draw(const glm::mat4& ortho, const glm::mat4& proj,
|
|||||||
auto c3d = c / c.w;
|
auto c3d = c / c.w;
|
||||||
auto c2d = (xy(c3d) * 0.5f + 0.5f) * zw(Canvas::I->m_box);
|
auto c2d = (xy(c3d) * 0.5f + 0.5f) * zw(Canvas::I->m_box);
|
||||||
|
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP,
|
pp::panopainter::setup_legacy_vr_color_shader({
|
||||||
ortho * glm::translate(glm::vec3(c2d, 0)) * glm::scale(glm::vec3(20.f) * App::I->zoom));
|
.color = { 1, 1, 1, i == corner_hl ? 1.f : .1f },
|
||||||
|
.mvp = ortho * glm::translate(glm::vec3(c2d, 0)) * glm::scale(glm::vec3(20.f) * App::I->zoom),
|
||||||
// draw inside
|
});
|
||||||
ShaderManager::u_vec4(kShaderUniform::Col, { 1, 1, 1, i == corner_hl ? 1.f : .1f });
|
|
||||||
m_circle.draw_fill();
|
m_circle.draw_fill();
|
||||||
|
|
||||||
// draw black border
|
// draw black border
|
||||||
ShaderManager::u_vec4(kShaderUniform::Col, { 0, 0, 0, 1 });
|
pp::panopainter::setup_legacy_vr_color_shader({
|
||||||
|
.color = { 0, 0, 0, 1 },
|
||||||
|
.mvp = ortho * glm::translate(glm::vec3(c2d, 0)) * glm::scale(glm::vec3(20.f) * App::I->zoom),
|
||||||
|
});
|
||||||
m_circle.draw_stroke();
|
m_circle.draw_stroke();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,18 @@ struct LegacyCanvasDrawMergeTextureUniforms {
|
|||||||
int texture_slot = 0;
|
int texture_slot = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct LegacyCanvasDrawMergeAtlasUniforms {
|
||||||
|
glm::mat4 mvp { 1.0f };
|
||||||
|
int texture_slot = 0;
|
||||||
|
glm::vec2 offset {};
|
||||||
|
glm::vec2 size { 1.0f };
|
||||||
|
};
|
||||||
|
|
||||||
|
struct LegacyCanvasDrawMergeEquirectUniforms {
|
||||||
|
glm::mat4 mvp { 1.0f };
|
||||||
|
int texture_slot = 0;
|
||||||
|
};
|
||||||
|
|
||||||
struct LegacyCanvasDrawMergeTextureMaskUniforms {
|
struct LegacyCanvasDrawMergeTextureMaskUniforms {
|
||||||
int texture_slot = 0;
|
int texture_slot = 0;
|
||||||
glm::vec2 pattern_offset {};
|
glm::vec2 pattern_offset {};
|
||||||
@@ -106,6 +118,38 @@ 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_atlas_shader(
|
||||||
|
const LegacyCanvasDrawMergeAtlasUniforms& uniforms,
|
||||||
|
const LegacyCanvasDrawMergeShaderExecution& execution) noexcept
|
||||||
|
{
|
||||||
|
execution.use_shader(kShader::Atlas);
|
||||||
|
execution.set_vec2(kShaderUniform::Tof, uniforms.offset);
|
||||||
|
execution.set_vec2(kShaderUniform::Tsz, uniforms.size);
|
||||||
|
execution.set_int(kShaderUniform::Tex, uniforms.texture_slot);
|
||||||
|
execution.set_mat4(kShaderUniform::MVP, uniforms.mvp);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void setup_legacy_canvas_draw_merge_atlas_shader(
|
||||||
|
const LegacyCanvasDrawMergeAtlasUniforms& uniforms)
|
||||||
|
{
|
||||||
|
setup_legacy_canvas_draw_merge_atlas_shader(uniforms, legacy_shader_manager_draw_merge_execution());
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void setup_legacy_canvas_draw_merge_equirect_shader(
|
||||||
|
const LegacyCanvasDrawMergeEquirectUniforms& uniforms,
|
||||||
|
const LegacyCanvasDrawMergeShaderExecution& execution) noexcept
|
||||||
|
{
|
||||||
|
execution.use_shader(kShader::Equirect);
|
||||||
|
execution.set_mat4(kShaderUniform::MVP, uniforms.mvp);
|
||||||
|
execution.set_int(kShaderUniform::Tex, uniforms.texture_slot);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void setup_legacy_canvas_draw_merge_equirect_shader(
|
||||||
|
const LegacyCanvasDrawMergeEquirectUniforms& uniforms)
|
||||||
|
{
|
||||||
|
setup_legacy_canvas_draw_merge_equirect_shader(uniforms, legacy_shader_manager_draw_merge_execution());
|
||||||
|
}
|
||||||
|
|
||||||
inline void setup_legacy_canvas_draw_merge_texture_mask_shader(
|
inline void setup_legacy_canvas_draw_merge_texture_mask_shader(
|
||||||
const LegacyCanvasDrawMergeTextureMaskUniforms& uniforms,
|
const LegacyCanvasDrawMergeTextureMaskUniforms& uniforms,
|
||||||
const LegacyCanvasDrawMergeShaderExecution& execution) noexcept
|
const LegacyCanvasDrawMergeShaderExecution& execution) noexcept
|
||||||
|
|||||||
@@ -39,6 +39,12 @@ inline void configure_legacy_ui_color_shader(
|
|||||||
ShaderManager::u_vec4(kShaderUniform::Col, color);
|
ShaderManager::u_vec4(kShaderUniform::Col, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void configure_legacy_ui_color_shader(
|
||||||
|
const glm::mat4& mvp) noexcept
|
||||||
|
{
|
||||||
|
configure_legacy_ui_color_shader(mvp, { 0, 0, 0, 1 });
|
||||||
|
}
|
||||||
|
|
||||||
inline void configure_legacy_grid_lambert_shader(
|
inline void configure_legacy_grid_lambert_shader(
|
||||||
const glm::mat4& mvp,
|
const glm::mat4& mvp,
|
||||||
const glm::vec3& light_dir,
|
const glm::vec3& light_dir,
|
||||||
|
|||||||
@@ -657,14 +657,13 @@ void NodeCanvas::draw()
|
|||||||
auto bb = m_canvas->m_layers[layer_index]->box(plane_index) / (float)m_canvas->m_layers[layer_index]->w;
|
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 bbmin = xy(bb);
|
||||||
glm::vec2 bbsz = zw(bb) - xy(bb);
|
glm::vec2 bbsz = zw(bb) - xy(bb);
|
||||||
ShaderManager::use(kShader::Color);
|
pp::panopainter::configure_legacy_ui_color_shader(
|
||||||
ShaderManager::u_vec4(kShaderUniform::Col, { 1, 0, 0, 1 });
|
plane_mvp_z
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, plane_mvp_z
|
* glm::translate(glm::vec3(bbmin * 2.f, 0))
|
||||||
* glm::translate(glm::vec3(bbmin * 2.f, 0))
|
* glm::translate(glm::vec3(-1, -1, 0))
|
||||||
* glm::translate(glm::vec3(-1, -1, 0))
|
* glm::scale(glm::vec3(bbsz, 1))
|
||||||
* glm::scale(glm::vec3(bbsz, 1))
|
* glm::translate(glm::vec3(1, 1, 0)),
|
||||||
* glm::translate(glm::vec3(1, 1, 0))
|
{ 1, 0, 0, 1 });
|
||||||
);
|
|
||||||
m_face_plane.draw_stroke();
|
m_face_plane.draw_stroke();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -107,11 +107,11 @@ void NodeImage::draw()
|
|||||||
pp::legacy::ui_gl::set_blend_enabled(true, "NodeImage");
|
pp::legacy::ui_gl::set_blend_enabled(true, "NodeImage");
|
||||||
if (m_use_atlas)
|
if (m_use_atlas)
|
||||||
{
|
{
|
||||||
ShaderManager::use(kShader::Atlas);
|
pp::panopainter::setup_legacy_canvas_draw_merge_atlas_shader(
|
||||||
ShaderManager::u_vec2(kShaderUniform::Tof, m_off);
|
{.mvp = m_mvp * glm::scale(glm::vec3(m_scale, 1.f)),
|
||||||
ShaderManager::u_vec2(kShaderUniform::Tsz, m_sz);
|
.texture_slot = 0,
|
||||||
ShaderManager::u_int(kShaderUniform::Tex, 0);
|
.offset = m_off,
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, m_mvp * glm::scale(glm::vec3(m_scale, 1.f)));
|
.size = m_sz});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
|
#include "legacy_ui_overlay_services.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "legacy_ui_gl_dispatch.h"
|
#include "legacy_ui_gl_dispatch.h"
|
||||||
#include "node_text.h"
|
#include "node_text.h"
|
||||||
@@ -170,10 +171,7 @@ void NodeText::update_layout()
|
|||||||
void NodeText::draw()
|
void NodeText::draw()
|
||||||
{
|
{
|
||||||
glm::mat4 pos = glm::translate(glm::vec3(glm::floor(m_pos + m_off), 0));
|
glm::mat4 pos = glm::translate(glm::vec3(glm::floor(m_pos + m_off), 0));
|
||||||
ShaderManager::use(kShader::Font);
|
pp::panopainter::configure_legacy_ui_font_shader(m_proj * pos, m_color);
|
||||||
ShaderManager::u_int(kShaderUniform::Tex, 0);
|
|
||||||
ShaderManager::u_mat4(kShaderUniform::MVP, m_proj * pos);
|
|
||||||
ShaderManager::u_vec4(kShaderUniform::Col, m_color);
|
|
||||||
pp::legacy::ui_gl::set_blend_enabled(true, "NodeText");
|
pp::legacy::ui_gl::set_blend_enabled(true, "NodeText");
|
||||||
m_text_mesh.draw();
|
m_text_mesh.draw();
|
||||||
pp::legacy::ui_gl::set_blend_enabled(false, "NodeText");
|
pp::legacy::ui_gl::set_blend_enabled(false, "NodeText");
|
||||||
|
|||||||
Reference in New Issue
Block a user