#version 300 es precision mediump float; in vec2 texCoord; uniform sampler2D colorTexture; uniform float inset; out vec4 fragColor; void main() { vec4 color = texelFetch(colorTexture, ivec2(texCoord), 0); vec2 changePerTexel = fwidth(texCoord); vec2 fraction = fract(texCoord); vec2 colorMixesMin = min(vec2(inset, inset), fraction / changePerTexel); vec2 colorMixesMax = min(vec2(inset, inset), (1.0 - fraction) / changePerTexel); vec2 colorMixes = min(colorMixesMin, colorMixesMax); float colorMix = 0.5 + smoothstep(inset - 0.125, inset - 0.0625, min(colorMixes.x, colorMixes.y)) * 0.5; fragColor = color * colorMix; }