//go:build ignore //kage:unit pixels package main var Time float func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { orig := imageSrc0At(srcPos) if orig.a < 0.01 { return orig } limit := min(Time/0.5, 2.0) level := imageSrc3UnsafeAt(srcPos).x // Burning effect: brighten core, add orange-red glow on edges burnWidth := 0.15 borderLow := limit - burnWidth borderHigh := limit // Inner burned area: dark (char), outer edge: bright fire colors if level < borderLow { return vec4(0.05, 0.02, 0.0, 1.0) // black char } else if level < borderHigh { t := (level - borderLow) / (borderHigh - borderLow) // Orange to yellow r := 1.0 g := 0.4 + t*0.6 b := 0.0 + t*0.2 return vec4(r, g, b, 1.0) } else if level < limit + 0.3 { t := (level - borderHigh) / 0.3 // Glow fades out r := 1.0 * (1.0 - t) g := (0.8) * (1.0 - t*t) b := (0.3) * (1.0 - t*t*t) return vec4(r, g, b, 1.0) } return imageSrc0UnsafeAt(srcPos) }