Skip to content

A retro LCD mono post-processing effect for Unity's Universal Render Pipeline (URP). Simulates the look of monochrome LCD screens.

License

Notifications You must be signed in to change notification settings

aki-null/RetroProcess

Repository files navigation

RetroProcess

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
Sample post-processing effect result (Green) Sample post-processing effect result (Gray)
Video Demo
retroprocess.mp4

Features

  • Quantization & Dithering
  • Filters
  • Pixel Grid
  • Shadow
  • Ghosting

Requirements

  • Unity 6 (6000.0) or later
  • Universal Render Pipeline (URP) 17.0.0 or later

Installation

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):

  1. Open Window > Package Manager
  2. Click the + button in the top-left corner
  3. Select Add package from git URL
  4. 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"
    }
}

Setup

1. Add Renderer Feature

  1. Select your URP Renderer Asset (e.g., Assets/Settings/URP-Renderer.asset)
  2. In the Inspector, click Add Renderer Feature
  3. Select Retro Process LCD Mono Renderer Feature

The shader is automatically assigned when the feature is added.

2. Add Volume Component

  1. Create or select a GameObject with a Volume component
  2. In the Volume's Profile, click Add Override
  3. Select Post-processing > Retro Process LCD Mono
  4. Enable and configure the parameters

Parameters

General

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.

Filter

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

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.

Screen

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.

Edge Gradient

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.

Shadow

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.

Ghosting

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.

Performance

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.

License

See LICENSE file for details.

About

A retro LCD mono post-processing effect for Unity's Universal Render Pipeline (URP). Simulates the look of monochrome LCD screens.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published