Basic Info
VHS Pro is a camera post-processing effect for Unity 3D which emulates look and feel of retro video cards, graphics adapters and cathode ray tube (CRT) screens. It emulates resolution decimation, signal color encoding and downsampling, screen bleeding and phosphor trail (ray tail/fading on a phosphor screen), VHS tape noise (VHS data corruption), interlacing and jitter (deviation) in the analog video signal, color dithering and color palette matching from existing palettes or your own custom one. Itâs best for 2D console-like games, 80âs/90âs/retro/VHS look, security cameras and robot/computer vision and video processing.
VHS Pro supports Built-in RP, URP and HDRP. It also supports Unity 6 Render Graph.
Link (To Asset Store)
Trailer
Manual
Installation
Use Unity version 6000.26.1f1+
for VHS Pro v4.1
Use Linear color space (Edit->Project Settings->Player->Color Space: Linear
)
-
Built-in Render Pipeline
- Install Post-Processing
Installation | Post Processing | 3.2.2
Getting started with post-processing | Post Processing | 3.2.2 - Add VHSPro component to Post-Processing Volume
- Install Post-Processing
-
Universal Render Pipeline
- Add VHSPro Render Feature to current URP Asset Renderer (which is selected in Main Camera)
- Add VHSPro component to Post-Processing Volume
-
High Definition Render Pipeline
- Go to âEdit->Project Settingsâ and select the âHDRP Global Settingsâ tab.
- Scroll down until you find the âCustom Post Process Ordersâ section. This section contains three lists, one for each injection point.
- Add VHS Pro to âAfter Post Processâ list so that HDRP can render them.
- Add VHS Pro to your Post-Processing Volume.
more info Custom post-processing | High Definition RP | 14.0.11
VHS Pro v1.1 Built-in RP features
1. Custom Texture
You can use custom movie texture or a sprite if you want it to be affected by the effect.
2. Cathode Ray Tube Emulation
Emulates CRT Screen. Bleeding, Fisheye, discretion (quantization) and vignette.
a.Vertical Resolution / Quantization
The picture will be quantized vertically by lines. You can choose the amount of lines:
You can choose between these modes:
âFullScreenâ (no quantization), âPAL 240 Linesâ (240 Lines per height), âNTSC 480 Linesâ (480 Lines per height) or âCustomâ (you can set custom number of lines).
b. Bleed Mode (CRT screen bleeding mode)
âBleedingâ is a cathode ray tail on the phosphor screen. When the ray (electron beam) passing certain point of the phosphor screen, the point keep glowing some small amount of time after the ray is already gone. So, the ray has a fading tail behind itself while going across the screen. This effect called bleeding.
You can choose between these modes: âOld Three Phaseâ, âThree Phaseâ, âTwo Phaseâ. These modes emulate different screen bleeding curves. You can make bleeding longer or shorter.
c. Custom Bleeding Curve
Allows you to generate your own bleeding YIQ curves. Sync YQ channels and change the Bleed Length.
d. Fisheye
Emulates a real screen by âbendingâ the corners of the image and making it look like if it would be put thru a wide-angle lens. You can adjust fisheye amount.
e. Vignette
Emulates vignette (reduction of an imageâs brightness or saturation at the periphery compared to the image center). You can adjust amount and change speed how it pulsates.
3. Noise
Emulates different sorts of noises.
a. Vertical Resolution / Quantization
The noise vertical quantization. You can inherit from the CRT Vertical Resolution or use custom vertical resolution for noise which is different from CRT Vertical Resolution.
b. Quantize Noise X / Pixilate
If you want to quantize noise by width (i.e. make squares instead of tiny vertical lines) then adjust this value.
c. Background Noise
This is a simple background noise (âfilm grainâ-like noise). You can adjust transparency.
d. Tape Noise
Emulates noise which you can find on old VHS cassettes. Noise lines floating down the screen.
You can adjust transparency and speed.
e. Line Noise
Emulates noise in the analog video signal and VHS cassettes. Noise lines popping up randomly within the screen. You can adjust transparency and speed.
4. Jitter
Emulates deviations in the analog video signal and CRT.
a. Floating Lines
After the screen was quantized vertically it consist of the horizontal lines which will float down the screen if this option is on. It works the best on the low resolution.
b. Scan lines
draws the black lines in between the screen lines. You can adjust the width.
c. Stretch Noise
Emulates noise, and data corruption on the VHS cassette plus some CRT jitter. Looks like if some of the screen lines were stretched and floating up and down the screen.
d. Jitter Horizontal
Emulates interlacing jitter. You can adjust the amount.
e. Jitter Vertical
Emulates analog video signal and CRT jitter. Adds a bit of YIQ shifting. You can adjust transparency and speed.
f. Twitch Horizontal
Shifts/displaces the image horizontally sometimes. You can adjust the frequency.
g. Twitch Vertical
Shakes/Shifts screen horizontally sometimes. The images âjumpsâ or âfallsâ vertically. You can adjust the frequency.
5. Analog Signal Tweak
YIQ is the color space used by the NTSC color TV system. The analog video signal is transmitted in YIQ and not in RGB. In this section you can adjust the YIQ values.
a. YIQ Permanent Adjustment
âAdjust Yâ, âAdjust Iâ, âAdjust Qâ - use these to make a permanent adjustment.
b. Shift YIQ
âShift Yâ, âShift Iâ, âShift Wâ - use these to tweak/shift the values.
c. Gamma Correction
use this to balance the gamma(brightness) of the signal.
6. Phosphor Trail
Emulates phosphor screen decay.
âInput Cutoffâ - Adjusting brightness threshold of input. How much of each frame affects the trail.
âInput Amountâ - Amplifies the input amount after cutoff.
âFadeâ - Adjusts how fast the trail fades. In other words itâs a feedback amount.
7. Tools
Additional tools.
a. Unscaled Time
When you are pausing the game using Time.timeScale = 0 (or Application.timeScale = 0) it stops all the animation, sound, etc. It also stops shader timer and itâs animation. If you still need shader to run while this sort of pause you can use âunscaled timeâ feature. The shader will keep running even when your Time.timeScale == 0. It will use Time.unscaledTime instead of Time.time.
b. Debug Bleed Curve
Helps to debug bleed curve.
c. Debug Trail
Helps to debug phosphor trail.
Update Log
v4.1
- added Bleed Mode feature to choose the direction of bleeding (Left, Right, Both).
- added Black Point and White Point Filters for signal tweak. You can use them to reduce signal value range. Try to use small values like 0.05.
- BRP: fixed extra brightness when bleeding is on
- URP: fixed blurry output (texture sampler_LinearClamp â sampler_PointClamp)
- HDRP: fixed DLSS
v4.0
- URP: fully re-written for Render Graph API, no compatibility mode
- HDRP: no update, waiting for Unified Renderer support
- Built-in RP: no update
- tapeNoiseTH renamed to tapeNoiseAmt
- tapeNoiseAmount renamed to tapeNoiseAlpha
- tapeNoiseAmt range flipped, so itâs more intuitive
v3.0
- URP: added URP support
- HDRP: rewritten for new Unity 2022.2.1f
- HDRP: fixed DLSS bug in
- BRP: rewritten for Post-Processing Stack v2 3.2.2
- BRP: merged with Graphics Adapter Pro Plugin, new features added
- Graphics Adapter Pro is deprecated
- all 3 version have the same fields now
- custom palette field is deprecated. but itâs still possible to add one
- fixed bug for adding shader features to a build
v2.0
- re-wrote for Unity 2019.3 HDRP Post-Processing Stack
- added resolution presets
- merged with Graphics Adapter Pro plugin and added functions like Color Encoding, Dithering, Palette Color Replacement
- removed features like fisheye, vignette, gamma correction because they already exist in Post-Processing Stack
- removed âcustom curveâ support
v1.3
- switched from multi_compiles to shader_features (faster building, smaller build size, but you have to turn on multi_compile for the features you switching on/off in runtime)
- added feedback color
- added fisheye hard and soft cutoff
- added hyperspace cuttoff
- renamed movietex to bypass tex
- auto disable movie texture for ps4/xbox/mobile
- added bleeding on/off switch
- fixed âforâ loops for windows
- fixed âlines floatâ feature
- added âlines floatâ speed - with both ways
- fixed ps4 bug
v1.2
- added signal noise
- added distortion to tape noise
- added tails to tape noise
- added color shift to tape noise
- make better background noise (fixed cross pattern)
- renamed background noise amount to alpha
- renamed background noise to film grain
- put noises into YIQ space
- a lot of noise performance optimizations
- renamed jitter vertical to jitter
- renamed jitter horizontal to interlacing
- renamed tape noise values (amount to alpha, threshhold to amount)
- renamed/switched shift and adjust of signal tweak
Contact
If you have any questions or want to report a bug, please, contact me via email: vladstormx@gmail.com
or X: x.com
Screenshots

