From 73c13f8cdebda1ebdb8b337f4093ce0c098ace88 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Tue, 16 Jun 2026 07:51:35 +0200 Subject: [PATCH] Extract merged texture pass through helper --- src/node_canvas.cpp | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/src/node_canvas.cpp b/src/node_canvas.cpp index 64bd8dcd..9ed383e6 100644 --- a/src/node_canvas.cpp +++ b/src/node_canvas.cpp @@ -392,28 +392,36 @@ void NodeCanvas::draw() .draw_checkerboard_plane = draw_background_plane, }); - for (int plane_index = 0; plane_index < 6; plane_index++) - { - int z = 1; - auto plane_mvp_z = proj * camera * - //glm::scale(glm::vec3(z + 1)) * - //glm::eulerAngleYXZ(yaw, pitch, roll) * - m_canvas->m_plane_transform[plane_index] * - glm::translate(glm::vec3(0, 0, -1)); - - m_sampler.bind(0); - pp::panopainter::setup_legacy_canvas_draw_merge_texture_alpha_shader( - pp::panopainter::LegacyCanvasDrawMergeTextureAlphaUniforms { - .mvp = plane_mvp_z, + const auto draw_merged_texture_plane = [&](int plane_index) { + pp::panopainter::execute_legacy_canvas_draw_merge_layer_texture( + { + .mvp = proj * camera * + m_canvas->m_plane_transform[plane_index] * + glm::translate(glm::vec3(0, 0, -1)), .texture_slot = 0, .alpha = 1.f, .highlight = false, + }, + { + .bind_sampler = [&] { + m_sampler.bind(0); + set_active_texture_unit(0); + }, + .bind_layer_texture = [&] { + m_canvas->m_layers_merge.rtt(plane_index).bindTexture(); + }, + .draw = [&] { + m_face_plane.draw_fill(); + }, + .unbind_layer_texture = [&] { + m_canvas->m_layers_merge.rtt(plane_index).unbindTexture(); + }, }); + }; - set_active_texture_unit(0); - m_canvas->m_layers_merge.rtt(plane_index).bindTexture(); - m_face_plane.draw_fill(); - m_canvas->m_layers_merge.rtt(plane_index).unbindTexture(); + for (int plane_index = 0; plane_index < 6; plane_index++) + { + draw_merged_texture_plane(plane_index); } } else