Sprite effects without writing shader code
Most 2D games need the same handful of sprite effects: a white flash when an enemy is hit, an outline on the selected unit, a dissolve when something dies, a glow on rare loot. Each one is a small shader, but writing it by hand for Godot and again for Unity takes an afternoon of fiddling with UVs and texel sizes. Here you tick the effects you want, move the sliders while the sprite updates live, and export the finished shader.
The effects
| Effect | What it does |
|---|---|
| Outline | An outer or inner outline of any color and width, sampled in 16 directions so it stays round on curves and crisp on pixel art. |
| Hit flash | Blends the sprite toward a flat color. Animate the amount from 1 to 0 in a tenth of a second for a classic damage flash. |
| Dissolve | Eats the sprite away with noise, with a glowing edge in the color you pick. Animate the amount from 0 to 1 for a death or teleport. |
| Glow | A soft halo around the shape, with an optional pulse, for power ups, rare items and magic. |
| Drop shadow | A soft offset shadow behind the sprite, so characters read against busy backgrounds. |
| Wave | Sways the sprite sideways in a moving wave, for grass, flags, water reflections and heat haze. |
| Scroll | Moves the texture over time, for lava, water, conveyor belts and energy beams. |
| Pixelate | Turns the sprite into chunky pixels, for transitions and retro moments. |
| Tint, hue and brightness | Colorize the sprite, rotate its hue for color variants, or push saturation and brightness. |
| Petrify | Turns the sprite to grey stone with a color of your choice, also good for frozen or disabled states. |
| Rainbow | A moving rainbow sheen for invincibility, combo streaks and party modes. |
Effects run in a fixed, sensible order: wave, scroll and pixelate move the picture first, then the color effects, then the inner outline, then the shadow, glow and outer outline are drawn behind the sprite, and dissolve cuts the result last. Only the effects you tick end up in the exported shader, so it stays small and fast.
Using it in Godot 4
Copy the .gdshader and the .tres file into your project, select a Sprite2D, AnimatedSprite2D or TextureRect, and drag the .tres into its Material slot. Every slider shows up in the Inspector under Shader Parameters. To flash on hit from code, write material.set_shader_parameter("flash_amount", 1.0) and tween it back to 0. If several sprites share the material but need their own values, turn on Local to Scene or duplicate the material.
Using it in Unity
Copy the .shader file into your Assets folder, create a Material, pick the shader under GameShipKit, and put the material on a SpriteRenderer. It works in the Built-in pipeline and in URP, including the 2D Renderer, as an unlit sprite shader, and it keeps the SpriteRenderer color. Change values from a script with material.SetFloat("_FlashAmount", 1f). Set the sprite's Mesh Type to Full Rect so the outline and glow have room to draw.
Leave room around the sprite
A shader can only draw inside the sprite's own rectangle. Outlines, glow and shadows need a few empty pixels around the art, otherwise they get cut off at the edges. The export includes your sprite with transparent padding already added. For sprite sheets, leave the same gap between frames, or use the padding option of your sheet packer.
Is my art uploaded?
No. The preview runs on your graphics card in this page, and the export is built in your browser.