Harden runtime flags and thin Apple/canvas seams

This commit is contained in:
2026-06-16 08:00:36 +02:00
parent 34e2747867
commit 2948e907bc
7 changed files with 157 additions and 50 deletions

View File

@@ -2,6 +2,7 @@
#include "shader.h"
#include <array>
#include <functional>
namespace pp::panopainter {
@@ -238,6 +239,14 @@ struct LegacyCanvasDrawMergePostDrawExecution {
std::function<void()> draw_current_modes;
};
struct LegacyCanvasDrawMergeSmaskFacesExecution {
std::function<void()> set_active_texture_unit;
std::function<void()> enable_blend;
std::function<void(int plane_index)> bind_face_texture;
std::function<void()> draw_face;
std::function<void(int plane_index)> unbind_face_texture;
};
[[nodiscard]] inline LegacyCanvasDrawMergeShaderExecution legacy_shader_manager_draw_merge_execution() noexcept
{
return {
@@ -631,4 +640,29 @@ inline void execute_legacy_canvas_draw_merge_post_draw(
execution.draw_current_modes();
}
inline void execute_legacy_canvas_draw_merge_smask_faces(
const LegacyCanvasDrawMergeTextureMaskUniforms& uniforms,
const glm::mat4& proj,
const glm::mat4& camera,
float layer_scale,
const std::array<glm::mat4, 6>& plane_transform,
const LegacyCanvasDrawMergeSmaskFacesExecution& execution)
{
setup_legacy_canvas_draw_merge_texture_mask_shader(uniforms);
execution.set_active_texture_unit();
execution.enable_blend();
for (int plane_index = 0; plane_index < 6; ++plane_index) {
auto plane_mvp = proj * camera *
glm::scale(glm::vec3(layer_scale)) *
plane_transform[plane_index] *
glm::translate(glm::vec3(0, 0, -1.f));
apply_legacy_canvas_draw_merge_mvp(plane_mvp);
execution.bind_face_texture(plane_index);
execution.draw_face();
execution.unbind_face_texture(plane_index);
}
}
} // namespace pp::panopainter