uniform sampler2D m_ColorMap; uniform vec2 m_OverlayOrigin; uniform vec2 m_OverlaySize; uniform float m_FadePx; in vec2 texCoord; out vec4 outFragColor; void main() { vec4 col = texture(m_ColorMap, texCoord); // Abstand des Fragments vom nächsten Overlay-Rand in Screen-Pixeln float distL = gl_FragCoord.x - m_OverlayOrigin.x; float distR = (m_OverlayOrigin.x + m_OverlaySize.x) - gl_FragCoord.x; float distB = gl_FragCoord.y - m_OverlayOrigin.y; float distT = (m_OverlayOrigin.y + m_OverlaySize.y) - gl_FragCoord.y; float edgeFade = clamp(min(min(distL, distR), min(distB, distT)) / m_FadePx, 0.0, 1.0); outFragColor = vec4(col.rgb, col.a * edgeFade); }