Shaders explained#
Available since version 3.82
Shaders are GPU-powered visual effects that transform how layers and items look in real time. They can be applied in two ways:
- FX Shader — applied as a layer effect on Overlap Groups (available in KWGT, KLWP and KLCK)
- Animation Shader — applied as an animation action, reacting to scroll, gyroscope or other triggers (KLWP and KLCK only)
Both paths use the same shader library and parameters.
How to apply a shader#
As a Layer FX#
- Select an Overlap Group
- Go to the Layer tab
- Set FX to Shader
- Pick a shader type from the Shader dropdown
- Adjust Intensity and the shader-specific parameters
As an Animation#
- Select an item on the root layer
- Go to the Animation tab, add a new animation
- Set Action to Shader (or Shader Inverted)
- Pick a shader type from the Shader Type dropdown
- Set Param 1 and Param 2 default values
- The animation will drive shader Intensity (or Scroll for Scanline/Scanline Fade) based on the trigger
Samples#
Common parameters#
Every shader has these base controls:
| Parameter | Range | Description |
|---|---|---|
| Intensity | 0–100 | Overall effect strength. At 0 the original image is shown unchanged. |
| Param 1 | 0–100 | Shader-specific, see table below. |
| Param 2 | 0–100 | Shader-specific, see table below. |
| Scroll | animated | Used by shaders that support continuous animation (Scanline, Halftone, Heat Haze, Film Grain, VHS Glitch). Driven automatically when used as animation. |
| Color 1 | color | Primary color, used by some shaders. The alpha channel may control a secondary effect (e.g. fringe amount). |
| Color 2 | color | Secondary color, used by Duotone and Halftone. |
Not all shaders use all parameters — the editor only shows the ones relevant to the selected shader.
Shader reference#
Vignette#
Darkens the edges of the image, drawing focus to the center.
| Parameter | Label | Effect |
|---|---|---|
| Intensity | Intensity | How dark the vignette gets at the edges |
| Param 1 | Softness | Edge falloff — 0 is a hard edge, 100 is a very gradual fade |
| Param 2 | Radius | Size of the clear center area — 0 is a small opening, 100 covers most of the image |
Scanline#
Overlays horizontal scan lines that simulate a CRT monitor. Supports scrolling animation and color fringing.
| Parameter | Label | Effect |
|---|---|---|
| Intensity | Intensity | Visibility of the scan lines and brightness boost |
| Param 1 | Spacing | Distance between lines — 0 is very tight (2px), 100 is wide (8px) |
| Param 2 | Hardness | Line sharpness — 0 is a smooth sine wave, 100 is a hard on/off pattern |
| Scroll | Scroll | Moves the line pattern vertically for animation |
| Color 1 | Color | Fringe color — the alpha channel controls how much chromatic aberration (color separation) is applied |
Scanline Fade#
Same visual effect as Scanline, but when used as an animation the intensity fades in/out instead of scrolling.
Pixelate#
Reduces the image to large pixel blocks with optional color quantization and shape control.
| Parameter | Label | Effect |
|---|---|---|
| Intensity | Intensity | Pixel block size — 0 shows the original image, 100 creates large 64px blocks |
| Param 1 | Shape | Block shape — 0 is square, 100 is circular (rounded dots) |
| Param 2 | Color Depth | Color quantization — 0 keeps full color, 100 reduces to 4 levels per channel (retro look) |
Duotone#
Maps the image to two colors based on luminance, like a duotone print.
| Parameter | Label | Effect |
|---|---|---|
| Intensity | Intensity | Blend between original image and duotone output |
| Param 1 | Threshold | Luminance split point — 0 maps most pixels to the shadow color, 100 maps most to the highlight color |
| Param 2 | Spread | Transition sharpness — 0 is a hard cutoff between colors, 100 is a smooth gradient |
| Color 1 | Shadow Color | Color applied to dark areas |
| Color 2 | Highlight Color | Color applied to bright areas |
CRT Curvature#
Simulates the barrel distortion and edge characteristics of a curved CRT screen.
| Parameter | Label | Effect |
|---|---|---|
| Intensity | Intensity | Amount of barrel distortion (screen curvature) |
| Param 1 | Edge Dark | Edge vignette on the curved surface — higher values darken edges more |
| Param 2 | Corner Crop | How aggressively corners are cropped to black — 0 is a sharp cutoff, 100 is a wide soft fade |
| Color 1 | Tint Color | Screen tint — the alpha channel controls how much tint is applied to darkened edges |
Halftone#
Converts the image to a dot pattern like newspaper print, with configurable dot shape and rotation.
| Parameter | Label | Effect |
|---|---|---|
| Intensity | Intensity | Dot spacing — 0 shows the original image, higher values create larger, more spaced-out dots |
| Param 1 | Rotation | Pattern rotation angle — 0 to 100 sweeps through a full 360 degrees |
| Param 2 | Dot Shape | Dot geometry — 0 is circular, 100 is square |
| Scroll | Scroll | Continuously rotates the pattern when animated |
| Color 1 | Dot Color | Color of the printed dots |
| Color 2 | Background Color | Color of the background between dots |
Heat Haze#
Creates a wavy horizontal distortion that simulates heat shimmer or underwater effects.
| Parameter | Label | Effect |
|---|---|---|
| Intensity | Intensity | Distortion amplitude — how far pixels are displaced |
| Param 1 | Frequency | Wave frequency — 0 is slow, wide waves, 100 is rapid, tight ripples |
| Param 2 | Complexity | Wave layering — 0 is a simple sine wave, 100 blends in a second wave for more organic movement |
| Scroll | Scroll | Animates the wave phase for continuous motion |
Film Grain#
Adds photographic noise to simulate analog film texture.
| Parameter | Label | Effect |
|---|---|---|
| Intensity | Intensity | Grain visibility — how bright/dark the noise is |
| Param 1 | Scale | Grain size — 0 is fine single-pixel grain, 100 is coarse chunky blocks |
| Param 2 | Contrast | Grain contrast — 0 is soft, subtle noise, 100 is harsh, punchy grain |
| Scroll | Scroll | Randomizes the grain pattern each frame for animation |
| Color 1 | Grain Tint | Tint color for the grain — the alpha channel controls how much tint is applied (0 alpha = white noise) |
VHS Glitch#
Simulates VHS tape artifacts with horizontal tears, jitter, and chromatic aberration.
| Parameter | Label | Effect |
|---|---|---|
| Intensity | Intensity | Controls tear severity and chromatic aberration spread |
| Param 1 | Tear Freq | Number of horizontal tear bands — 0 is a few wide bands, 100 is many narrow bands |
| Param 2 | Jitter | Random horizontal pixel displacement — 0 is stable, 100 is chaotic shaking |
| Scroll | Scroll | Randomizes which bands tear each frame |
Tips#
- Combine with animations: Use Scanline or Film Grain with scroll-based animation for a constantly shifting retro effect.
- Stack shaders: Apply a CRT Curvature FX on the layer, then add a Scanline animation for a full CRT simulation.
- Use formulas: All shader parameters support Kustom formulas, so you can tie intensity to battery level, time of day, or any other data source.
- Performance: Shaders are GPU-accelerated and have minimal impact on battery. On Android 13+ they use AGSL (Android Graphics Shading Language), on older devices they fall back to OpenGL ES 3.0.