//go:build ignore //kage:unit pixels package main var Time float func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { // Normalize coordinates to center (0.5, 0.5) center := vec2(0.5, 0.5) uv := srcPos - center // Distance from center dist := length(uv) // Bubble distortion: radial displacement based on time wave := sin(dist*20.0 - Time*2.0) * 0.03 distortedUV := uv * (1.0 + wave) distortedUV += center // Sample original texture with distortion original := imageSrc0At(distortedUV) // Bubble edge glow bubbleEdge := 1.0 - smoothstep(0.25, 0.45, dist) glow := bubbleEdge * vec4(0.3, 0.8, 1.0, 0.6) // Soft inner highlight inner := 1.0 - smoothstep(0.0, 0.3, dist) highlight := inner * vec4(0.5, 0.9, 1.0, 0.15) // Combine: original image with bubble effects overlaid result := original * (1.0 - bubbleEdge*0.4) + glow + highlight return result * color }