From 94898b4d9d3d6a05d534a7fb33a16893b81d3d03 Mon Sep 17 00:00:00 2001 From: maelstrom Date: Mon, 14 Apr 2025 23:53:42 +0200 Subject: [PATCH] fix(outline): make outline cling to edges rather than stretch --- assets/shaders/outline.vs | 7 ++++++- core/src/rendering/renderer.cpp | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/assets/shaders/outline.vs b/assets/shaders/outline.vs index 6dcb3ff..e3eeb5b 100644 --- a/assets/shaders/outline.vs +++ b/assets/shaders/outline.vs @@ -8,9 +8,14 @@ out vec3 vPos; uniform mat4 model; uniform mat4 view; uniform mat4 projection; +uniform vec3 scale; void main() { - gl_Position = projection * view * model * vec4(aPos, 1.0); + float thickness = 0.4; + vec3 distFromEdge = sign(aPos) * 0.5 - aPos; + vec3 tVec = (scale * sign(aPos) * 0.5 - distFromEdge * thickness) / scale; + + gl_Position = projection * view * model * vec4(tVec, 1); vPos = aPos; } diff --git a/core/src/rendering/renderer.cpp b/core/src/rendering/renderer.cpp index 26121a2..1332ddb 100644 --- a/core/src/rendering/renderer.cpp +++ b/core/src/rendering/renderer.cpp @@ -385,9 +385,9 @@ void renderOutlines() { if (!part->selected) continue; glm::mat4 model = part->cframe; - model = glm::scale(model, (glm::vec3)part->size + glm::vec3(0.01)); + model = glm::scale(model, (glm::vec3)part->size + glm::vec3(0.2)); outlineShader->set("model", model); - outlineShader->set("scale", part->size + glm::vec3(0.01)); + outlineShader->set("scale", part->size + glm::vec3(0.1)); OUTLINE_MESH->bind(); glDrawArrays(GL_TRIANGLES, 0, OUTLINE_MESH->vertexCount);