From 9afb845a36b0a42470d9ec023b3570730fac2a92 Mon Sep 17 00:00:00 2001 From: shweet Date: Sat, 13 Sep 2025 12:28:37 -0400 Subject: [PATCH] add slight texture inset for layer UVs. --- src/canvas.h | 5 +++++ src/generate_preview.cpp | 5 +++-- src/preview.cpp | 5 +++-- src/texture.cpp | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/canvas.h b/src/canvas.h index 17fcbfb..06a9d2f 100644 --- a/src/canvas.h +++ b/src/canvas.h @@ -65,6 +65,11 @@ struct Canvas 0, 1, uvMin.x, uvMax.y \ } +#define ATLAS_UV_MIN(type) (ATLAS_POSITION(type) / TEXTURE_ATLAS_SIZE) +#define ATLAS_UV_MAX(type) ((ATLAS_POSITION(type) + ATLAS_SIZE(type)) / TEXTURE_ATLAS_SIZE) +#define ATLAS_UV_ARGS(type) ATLAS_UV_MIN(type), ATLAS_UV_MAX(type) +#define ATLAS_UV_VERTICES(type) UV_VERTICES(ATLAS_UV_MIN(type), ATLAS_UV_MAX(type)) + mat4 canvas_transform_get(Canvas* self, vec2 pan, f32 zoom, OriginType origin); void canvas_axes_draw(Canvas* self, GLuint& shader, mat4& transform, vec4& color); void canvas_bind(Canvas* self); diff --git a/src/generate_preview.cpp b/src/generate_preview.cpp index f02aca7..7faa101 100644 --- a/src/generate_preview.cpp +++ b/src/generate_preview.cpp @@ -38,8 +38,9 @@ void generate_preview_draw(GeneratePreview* self) const s32 column = index % columns; vec2 crop = startPosition + vec2(size.x * column, size.y * row); - vec2 uvMin = crop / vec2(texture.size); - vec2 uvMax = (crop + size) / vec2(texture.size); + vec2 textureSize = vec2(texture.size); + vec2 uvMin = (crop + vec2(0.5f)) / textureSize; + vec2 uvMax = (crop + size - vec2(0.5f)) / textureSize; f32 vertices[] = UV_VERTICES(uvMin, uvMax); mat4 generateTransform = transform * quad_model_get(size, {}, pivot); diff --git a/src/preview.cpp b/src/preview.cpp index b5610f2..8001854 100644 --- a/src/preview.cpp +++ b/src/preview.cpp @@ -134,8 +134,9 @@ void preview_draw(Preview* self) Texture& texture = spritesheet->texture; if (texture.isInvalid) return; - vec2 uvMin = frame.crop / vec2(texture.size); - vec2 uvMax = (frame.crop + frame.size) / vec2(texture.size); + vec2 inset = 0.5f / vec2(texture.size); + vec2 uvMin = frame.crop / vec2(texture.size) + inset; + vec2 uvMax = (frame.crop + frame.size) / vec2(texture.size) - inset; f32 vertices[] = UV_VERTICES(uvMin, uvMax); canvas_texture_draw(&self->canvas, shaderTexture, texture.id, layerTransform, vertices, frameTint, frameColorOffset); diff --git a/src/texture.cpp b/src/texture.cpp index c09424f..8b80bb2 100644 --- a/src/texture.cpp +++ b/src/texture.cpp @@ -126,4 +126,4 @@ bool texture_pixel_set(Texture* self, ivec2 position, vec4 color) glTexSubImage2D(GL_TEXTURE_2D, 0,position.x, position.y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, rgba8); return true; -} \ No newline at end of file +}