A retro LCD mono post-processing effect for Unity's Universal Render Pipeline (URP). Simulates the look of monochrome LCD screens.
| Hi-Res | Low-Res |
|---|---|
![]() |
![]() |
Video Demo
retroprocess.mp4
- Quantization & Dithering
- Filters
- Pixel Grid
- Shadow
- Ghosting
- Unity 6 (6000.0) or later
- Universal Render Pipeline (URP) 17.0.0 or later
Install via OpenUPM:
- Package is available on OpenUPM. If you have openupm-cli installed, run this in your Unity project root:
openupm add net.aki-null.retroprocess - To update, specify the version you want:
openupm add net.aki-null.retroprocess@1.0.0
Install via UPM (Git URL):
- Open Window > Package Manager
- Click the + button in the top-left corner
- Select Add package from git URL
- Enter:
https://github.com/aki-null/RetroProcess.git
Alternatively, add it to your Packages/manifest.json:
{
"dependencies": {
"net.aki-null.retroprocess": "https://github.com/aki-null/RetroProcess.git"
}
}- Select your URP Renderer Asset (e.g.,
Assets/Settings/URP-Renderer.asset) - In the Inspector, click Add Renderer Feature
- Select Retro Process LCD Mono Renderer Feature
The shader is automatically assigned when the feature is added.
- Create or select a GameObject with a Volume component
- In the Volume's Profile, click Add Override
- Select Post-processing > Retro Process LCD Mono
- Enable and configure the parameters
| Parameter | Description |
|---|---|
| Enabled | Master toggle to enable or disable the LCD effect. Disabled by default. |
| Input Mode | Selects the input source. Camera (default) uses the rendered scene. Custom Texture uses a user-provided texture, where the texture dimensions become the base resolution directly. Useful for applying the LCD filter to offscreen rendered images or static textures. |
| Custom Texture | The texture to use when Input Mode is set to Custom Texture. The texture's dimensions determine the LCD resolution. |
| Base Resolution | The pixel count for the shorter dimension of the LCD. For landscape screens, this is the height. The other dimension is calculated automatically from the screen's aspect ratio. Only used when Input Mode is Camera. |
| Strict Base Resolution | Controls how the display area is calculated. When enabled (default), the base resolution is locked exactly as specified, but the margin may be slightly larger than requested. When disabled, the margin is more accurate, but the base resolution may vary slightly. Only used when Input Mode is Camera. |
| High Quality Downsample | Use pyramid downsample chain for more stable downsampling. When enabled, the image is downsampled through multiple 2x steps instead of a single large step, producing more consistent results (though slightly blurrier). Disable for better performance. Only used when Input Mode is Camera. |
| Grid Density | Controls the thickness of the grid lines between LCD pixels. Sparse creates thick, prominent lines; Fine, Finer, and Finest get progressively thinner. |
The effect uses integer scaling so all grid lines render at identical widths.
Image processing applied before quantization.
| Parameter | Description |
|---|---|
| Sharpness | Edge sharpening strength. Higher values enhance edges but may cause haloing. Set to 0 to disable. |
| Contrast | Contrast adjustment applied before quantization. Values below 1 reduce contrast, above 1 increase it. Default is 1 (no change). |
| Invert | Inverts the luminance output, swapping light and dark areas. |
Quantization reduces your image to a limited number of shades, and dithering uses patterns to simulate additional shades.
| Parameter | Description |
|---|---|
| Color Levels | The number of distinct shades. Defaults to 4 shades. Set to 2 for pure black and white. |
| Dither Mode | The pattern used to simulate extra shades. Bayer patterns create regular, grid-like dithering. Texture mode lets you provide a custom pattern. |
| Dither Strength | How strongly the dithering pattern affects the image. |
| Dither Texture | Your custom dither pattern texture, used when Dither Mode is set to Texture. |
Appearance settings for the LCD display.
| Parameter | Description |
|---|---|
| Margin | The border space around the LCD area, as a fraction of the screen size. |
| Background Color | The color of the LCD when pixels are off. |
| Foreground Color | The color of active pixels. |
| Background Noise Strength | Adds subtle noise to the background, simulating the slight imperfections of real LCD panels. |
| LCD Off Brightness | On real LCDs, you can see the pixel grid even when pixels are turned off. This controls how visible that grid structure is in dark areas. |
| Screen Contrast | Adjusts the overall brightness range of the LCD pixels. |
Adds a colored tint around the edges of the screen that blends into the LCD background.
| Parameter | Description |
|---|---|
| Color | The tint color for the screen edges. |
| Width | How far the tint extends from the screen edges. |
| Corner Radius | Rounds the corners of the gradient. |
| Power | Controls how sharply the gradient falls off. Higher values create a more sudden transition. |
Adds a soft shadow behind the LCD pixel grid.
| Parameter | Description |
|---|---|
| Radius | The size of the shadow blur. |
| Sigma | Controls the softness of the shadow edges. Lower values create harder shadows. |
| Strength | The opacity of the shadow effect. |
| Color | The color of the shadow. |
| Offset | The direction and distance of the shadow. Positive X shifts right, positive Y shifts down. |
Old LCD screens had slow pixel response times, causing moving objects to leave faint trails behind them.
| Parameter | Description |
|---|---|
| Enabled | Toggle the ghosting effect on or off. |
| Decay | How quickly the ghost trails fade away. Lower values create longer-lasting trails. The decay is framerate-independent, so it looks consistent regardless of your game's framerate. |
The effect runs 3-5 render passes depending on your settings. With shadow disabled, you get the minimum: downsample chain, image preparation, upsample, and composite. Enabling shadow adds a horizontal blur pass (the vertical blur is folded into the composite pass).
For better performance: disable High Quality Downsample if you can tolerate slight blurriness, set Shadow Strength to 0 to skip blur passes entirely, use a lower Base Resolution, and disable Ghosting if you don't need it.
Memory-wise, intermediate textures use R8 format (1 byte/pixel) where possible. Ghosting needs a double-buffered history at base resolution. Shadow blur allocates an additional padded texture at visible resolution.
See LICENSE file for details.

