Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

[RELEASED] VHS Pro - Analog video signal and CRT screen emulation

Discussion in 'Assets and Asset Store' started by vladstorm_, Sep 12, 2015.

  1. vladstorm_

    vladstorm_

    Joined:
    Nov 26, 2013
    Posts:
    184
    @BloodRedDeer
    it works / some people used it for xbox1 and ps4

    @radiantboy
    >Unity 2017
    but is it final a beta or unity 2017 is out already? coz last time i checked it - a lot of things were broken

    @indieNendoroid
    i'll check
     
  2. vladstorm_

    vladstorm_

    Joined:
    Nov 26, 2013
    Posts:
    184
    I just checked VHS Pro with 2017.1. It works.
     
  3. KarlKarl2000

    KarlKarl2000

    Joined:
    Jan 25, 2016
    Posts:
    606
  4. Innovine

    Innovine

    Joined:
    Aug 6, 2017
    Posts:
    522
    Does this only work on the full screen? I want to implement a CRT display inside my game world, and only have this effect on the in-game CRT. Will that work?
     
  5. atomicjoe

    atomicjoe

    Joined:
    Apr 10, 2013
    Posts:
    1,869
    It's an image effect so it is full screen. However, if you are using a second camera to render your in-game CRT to a rendertexture, you can add the effect only to that second camera and the effect will be applied to the CRT only.
    However if your CRT displays just a texture or a video, then you can't apply an image effect to it directly: you will have to set an extra camera for that.
     
  6. arkogelul

    arkogelul

    Joined:
    Nov 14, 2016
    Posts:
    105
    Hi, this effect looks really great !
    I'd be interested in including it to my game, but I'd like to know if it's possibly/easily editable. I'm interested in a couple of features only and would like to cut away all that's not necessary.

    Thanks
     
  7. atomicjoe

    atomicjoe

    Joined:
    Apr 10, 2013
    Posts:
    1,869
    Every effect can be enabled or disabled easily in the editor.
    I have gone the extra mile and edited the source code to disable some features I'm not using for my game to try and gain some extra performance but I haven't noticed anything, so you can safely just disable the effects you don't want in the editor and that's it. ;)
     
  8. arkogelul

    arkogelul

    Joined:
    Nov 14, 2016
    Posts:
    105
    Thanks, that's good to know.
     
  9. arkogelul

    arkogelul

    Joined:
    Nov 14, 2016
    Posts:
    105
    So I bought it and it does look great. But when I use it on a blank scene/project in 1080p on a simple image, it goes from 200 fps to around 30 fps. Is it normal ? I linked a picture of the settings I use.
     

    Attached Files:

  10. bgmulti15a

    bgmulti15a

    Joined:
    Feb 9, 2017
    Posts:
    25
    Can I use it on mobile?
     
  11. Immu

    Immu

    Joined:
    Jun 18, 2013
    Posts:
    240
    Hi. Just stumble upon your cool asset. Is is compatible with post processing stack v2 and LightWeightRenderingPipeline ? If not, any plan on making it compatible for those ?
     
  12. jejouelejeu

    jejouelejeu

    Joined:
    Aug 23, 2017
    Posts:
    5
    Is there still support for this asset?
    It doesn't seem to be working with Unity 2019.1. Or at least, when I opened my project (made in 2018.3, where the asset worked), it does not seem to work anymore. Reimporting it didn't make a difference.
     
  13. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,084
    I'm having similar issues. I'm trying to find a way to get it to work that doesn't involve redistributing parts of the asset itself that will bring it in line with the new post-processing stack but I don't have an ETA since I've got more critical projects to work on that don't involve this specific effect.
     
  14. Deleted User

    Deleted User

    Guest

    In postVHSPro.cs script file find and replace your current void CreateMaterials() with the following one:

    Code (CSharp):
    1. void CreateMaterials()
    2.     {
    3.         //1st pass      
    4.         mat1 = new Material(Shader.Find("Hidden/postVHSPro_First"));
    5.         //mat1 = new Material(shader1);
    6.         mat1.hideFlags = HideFlags.DontSave;
    7.        
    8.         //2nd pass
    9.         mat2 = new Material(Shader.Find("Hidden/postVHSPro_Second"));
    10.         //mat2 = new Material(shader2);
    11.         mat2.hideFlags = HideFlags.DontSave;
    12.  
    13.         //3rd pass (for feedback)  
    14.         mat3 = new Material(Shader.Find("Hidden/postVHSPro_Third"));
    15.         //mat3 = new Material(shader3);
    16.         mat3.hideFlags = HideFlags.DontSave;
    17.  
    18.         //4th pass  
    19.         mat4 = new Material(Shader.Find("Hidden/postVHSPro_Forth"));
    20.         //mat4 = new Material(shader4);      
    21.         mat4.hideFlags = HideFlags.DontSave;
    22.  
    23.         //clear mat
    24.         mat_clear = new Material(Shader.Find("Hidden/postVHSPro_Clear"));
    25.         //mat_clear = new Material(shader_clear);
    26.         mat_clear.hideFlags = HideFlags.DontSave;
    27.  
    28.         //tape noise
    29.         mat_tape = new Material(Shader.Find("Hidden/postVHSPro_Tape"));
    30.         //mat_tape = new Material(shader_tape);
    31.         mat_tape.hideFlags = HideFlags.DontSave;
    32.  
    33.         //texture for caching curves              
    34.         if(crtMode==3) buildCurves();
    35.     }
     
    Murgilod and atomicjoe like this.
  15. max_color

    max_color

    Joined:
    Jun 15, 2017
    Posts:
    8
    So is this asset dead? No news on 2019 support. If by any chance it isn't it would be fantastic for it to support the post processing stack v.2. Thank you for the great asset, had been using it extensively on an unreleased project but had to delete it after 2019.1 since it doesnt work :(
     
  16. Kabookie

    Kabookie

    Joined:
    Mar 13, 2018
    Posts:
    16
    I wish this worked for HDRP. I'd give my firstborn for that.
     
  17. westingtyler

    westingtyler

    Joined:
    Dec 7, 2013
    Posts:
    34
    Hello! this asset looks great, but on the store description I didn't see if this works in 1) Deferred, and 2) in 2019.2, and 3) with HDRP or LWRP. If so, I'd love to buy this.
     
  18. Kabookie

    Kabookie

    Joined:
    Mar 13, 2018
    Posts:
    16
    Yes, No and No.
     
    Walter_Hulsebos likes this.
  19. vladstorm_

    vladstorm_

    Joined:
    Nov 26, 2013
    Posts:
    184
    VHS Pro 2.0 is here! I rewrote the plugin for HDRP Post-Processing Stack (PPS) and removed MovieTexture support. Now there are two versions of VHS Pro, one is for HDRP PPS in Unity 2019.3+ and another is for other versions of Unity with Built-in RP. URP version comes later. I also merged VHS Pro with my other plugin Graphics Adapter Pro which is now deprecated. That's why VHS Pro 2.0 HDRP version has a few new functions such as Color Encoding, Dithering and Palette Color Replacement. You can see all the changes in the update log.

    Unity graphics engine development has been quite frustrating for the last 2 years. Today in the version 2019.3 there are 3 different rendering pipelines: Built-in RP, URP (formerly LWRP) and HDRP. Also there are different versions of post processing stack: URP PPS and HDRP PPS. HDRP PPS officially supports custom post processing effects and URP PPS doesn't but it will come in the future.

    There're two versions of VHS Pro.
    1. VHS_BuiltinRP (v1.4) is a standalone camera post processing effect for Built-in rendering pipeline. Doesn’t support PPS but works with old unity versions.

    2. VHS_HDRP (v2.0) is a post processing effect for HDRP Post-Processing Stack. Only works in Unity 2019.3+ in HDRP. It comes as .zip archive when you download the plugin. To install it, just unzip VHS_HDRP.zip and delete VHS_BuiltinRP folder.

    3. URP/LWRP are not supported. URP support will come later when unity will make official support for custom effects for URP PPS



    List of VHS Pro 2.0 HDRP parameters.
    1. Resolution
    Resolution of the output image


    a. Pixelization (Screen Resolution Quantization)
    The picture will be quantized vertically and horizontally. You can choose the amount of pixels for the output image.

    "Preset" - You can choose one of the existing resolution presets to set both parameters at once. You can also choose Fullscreen or Custom.
    "Width" - The pixels per width in the output picture
    "Height" - The pixels per height in the output picture

    2. Signal Encoding
    Nowadays we are used to see million of colors on the monitor because the videocards became very powerful. However, back in the days, the old videocards had very limited memory and data bandwidth. The same story was with the monitors. In 70s and 80s most of the time a videocard could encode only a couple of bits of color per channel. This section allows you to emulate color per channel downsampling. The information each color channel can carry.


    a. Color Encoding
    Different videocard used different way to encode the signal. So, you can choose between few color encoding modes: "Grayscale", "RGB", "YIQ (NTSC)". Each mode allows you to adjust the amount of colors per channel (it's not the same as bits per channels).

    "Type" - Type of color encoding. Colors per channel are different for different color encoding modes.

    • Grayscale type (1 channel)
    "Channel Gray" - colors per one channel
    "Color" - shading color. allows you to colour the output

    • RGB type (3 channels)
    "Channel R,G,B" - allows you to adjust colors per each channel

    • YIQ (NTSC) type (3 channels)
    "Channel Y,I,Q" - allows you to adjust colors per each channel

    "Sync Channels" - You can use this mode to tweak colors per channel simultaneously for RGB, YIQ modes.
    "All Channels" - Adjusts color per channel for all 3 channels in the same time

    b. Dithering
    Dithering creates the illusion of "color depth" in images with a limited color palette. In a dithered image, colors that are not available in the palette are approximated by a diffusion of colored pixels from within the available palette.

    "Type" - You can choose between different ways/algorithms of dithering such as 'Horizontal Lines', 'Vertical Lines', '2x2 Ordered', '2x2 Ordered 2', 'Uniform noise', 'Triangle noise'

    "Dither Amount" - Allows you to adjust the amount of dithering.

    c. 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.

    "Shift Y,I,Q" - use these to tweak/shift the values.
    "Adjust Y,I,Q" - Use these to make a permanent adjustment.

    3. Palette
    Allows you to limit the picture colors by the palette. There's a special algorithm which allows you to use big palettes up to 256-512 colors.


    "Preset" - You can use one of the existing color palettes from the the old videocards
    'IBM CGA > Full Palette',
    'IBM CGA > Palette 1, High Intensity',
    'IBM CGA > Palette 1, Low Intensity',
    'IBM CGA > Palette 2, High Intensity',
    'IBM CGA > Palette 2, Low Intensity Brown',
    'IBM CGA > Palette 2, Low Intensity Dark Yellow',
    'Atari > NTSC',
    'Atari > PAL',
    'Atari > SECAM',
    'MS DOS > Duke Nukem 3D',
    'MS DOS > Doom 1',
    'MS DOS > Quake 1',
    'Nintendo > Gameboy',
    'Nintendo > NES',
    'Apple II > Palette Hi',
    'Apple II > Palette Low',
    etc.

    "Accuracy" - This parameter allows you set how accurate the color matching is. Small values work faster but bigger are more precise. This also allow you to make more unique look of the picture.

    "Custom Palette" - You can use your own palette by setting palette texture here.

    4. CRT(Cathode Ray Tube) Emulation
    Emulates CRT Screen and signal bleeding.

    a. Bleeding
    "Type" (CRT screen bleeding type) - You can choose between these modes: "Old Three Phase", "Three Phase", "Two Phase" (works slower). These modes emulate different screen bleeding curves.
    Bleeding is a cathode ray tail on the phosphor screen. When the ray (electron beam) passing certain point on 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.

    "Stretch" - Makes bleeding curve longer or shorter by stretching the it.

    5. Noise
    Emulates various noises.


    a. Global Resolution (Noise Resolution)
    The noise resolution (quantization). If it's checked then noise resolution will be inherited from the main pixelization resolution.
    Uncheck it if you want to use custom noise resolution.
    "Width, Height" - Adjust custom noise resolution parameters

    c. Film Grain
    This is a simple background noise.
    "Alpha" - Adjusts transparency of background noise.

    d. Signal Noise
    Emulates signal noise. Changes the YIQ colors.
    "Amount" - Adjusts amount of noise.
    "Power" - Adjusts density of noise.

    e. Line Noise
    Emulates noise in the analog video signal and VHS cassettes. Noise lines popping up randomly within the screen.
    "Amount" - Adjusts transparency.
    "Speed" - Adjusts speed.

    f. Tape Noise
    Emulates noise which you can find on old VHS cassettes. Noise lines floating down the screen.
    "Amount" - Adjusts noise cutoff.
    "Speed" - Adjusts speed.
    "Alpha" - Adjusts transparency.

    6. Jitter & Twitch
    Emulates deviations in the analog video signal and CRT.


    a. Show Scanlines
    Draws the black lines in between the quantized screenlines.
    "Width" - Adjusts the width of the scanlines.

    b. 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.

    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.
    "Amount" - Adjusts the amount.

    e. Jitter Vertical
    Emulates analog video signal and CRT jitter. Adds a bit of YIQ shifting.
    "Amount" - Adjusts transparency.
    "Speed" - Adjusts speed.

    f. Twitch Horizontal
    Shifts/displaces the image horizontally sometimes.
    "Frequency" - Adjusts how often.

    g. Twitch Vertical
    Shakes/Shifts screen horizontally sometimes. The images "jumps" or "falls" vertically.
    "Frequency" - Adjusts how often.
    7. Phosphor trail
    Emulates phosphor screen decay. It basically works as a feedback and adds a part of previous frame to the current one. For easier understanding of this effect you can turn on "Tools->Debug Trail". Then you will see only the trail. It's better to adjust it that way.


    "Input Cutoff" - Adjusts brightness threshold of input signal. How much of each frame affects the trail. If it equal to X value, it means all pixels with brightness lower than X are not gonna affect the trail and all pixels with brightness above X are going to affect the trail.
    "Amount" - Amplifies the input amount after cutoff.
    "Fade" - Adjusts how fast the trail fades. In other words it's a feedback amount.

    8. 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 Trail
    Helps to debug phosphor trail.

    9. Bypass Texture
    You can use custom image texture if you want it to be processed by the effect instead of screen image.
     
    Last edited: Apr 24, 2020
    Glowing_Slab, fherbst and atomicjoe like this.
  20. atomicjoe

    atomicjoe

    Joined:
    Apr 10, 2013
    Posts:
    1,869
  21. pushingpandas

    pushingpandas

    Joined:
    Jan 12, 2013
    Posts:
    1,419
    When comes URP?
     
  22. vladstorm_

    vladstorm_

    Joined:
    Nov 26, 2013
    Posts:
    184
    when unity makes official support for URP post processing custom effects
     
    petey and The-Masked-Developer like this.
  23. Innovine

    Innovine

    Joined:
    Aug 6, 2017
    Posts:
    522
    Or writes yet another pp stack?
     
  24. The-Masked-Developer

    The-Masked-Developer

    Joined:
    Sep 23, 2013
    Posts:
    10
    This may be a bit of a newbie question, but I've not worked in Unity in a long time. I have the VHS effect running, and it looks fine in the test window. If I create a build, the scanlines and fisheye effects don't work. I tried forcing various quality levels, including "Fantastic," but those effects never show up, no matter how fine it looks in testing. Any ideas as to why this might be happening? Any feedback would be greatly appreciated (even jokes)!
     
  25. theprofessoroak

    theprofessoroak

    Joined:
    Mar 27, 2015
    Posts:
    1
    This exact issue also persists in all my Unity 2021 HDRP builds
     
  26. vladstorm_

    vladstorm_

    Joined:
    Nov 26, 2013
    Posts:
    184
    just found a bug in 2020 LTS and 2021 HDRP version.
    that the effects arent working in the build except pixelization one.
    will try to fix it next week.
    sorry about it. unity keep changing things all the time without backward compatibility
     
    radiantboy likes this.
  27. atomicjoe

    atomicjoe

    Joined:
    Apr 10, 2013
    Posts:
    1,869
    [surprised pikachu face.jpg]
     
  28. radiantboy

    radiantboy

    Joined:
    Nov 21, 2012
    Posts:
    1,633
    Yep almost every postprocessing or particle effect I have bought wont work in HDRP :-( thanks for fix.
     
  29. vladstorm_

    vladstorm_

    Joined:
    Nov 26, 2013
    Posts:
    184
    just released VHS Pro v2.1
    fixed HDRP version. Now it works with Unity 2020 LTS and Unity 2021.
    Tested with HDRP and Built-in RP.
     
    tantx and atomicjoe like this.
  30. TangoSix

    TangoSix

    Joined:
    Feb 22, 2019
    Posts:
    3
    Over a year later, any URP support yet!?!? Love the effects of this asset and would be thrilled to include this in our URP project.
     
  31. sleingrobaaf

    sleingrobaaf

    Joined:
    Sep 27, 2020
    Posts:
    1
    yeeeah, just checked in to see if there was news on URP version as well :D
     
  32. wineleaf

    wineleaf

    Joined:
    Jan 11, 2020
    Posts:
    1
    Hi there, this looks really really great!

    Before buying though, I would like to know...
    1. Does it work with the new UI system: Canvas, TEXTMeshPro etc? (In the "manual" video, which now is pretty old, I see that the nowadays unavailble "GUI Layer" component on the camera is used).
    2. If so, are examples on how to it to work with the new UI available?
    3. Just wanted to confirm that it works in WebGL with good performance.

    Thanks!
     
  33. puppetnonsense

    puppetnonsense

    Joined:
    Nov 15, 2014
    Posts:
    2
    Probably a stupid question, but, is this usable for VR?
     
  34. mgear

    mgear

    Joined:
    Aug 3, 2010
    Posts:
    9,350
    Purchased on sale, really nice effects!

    Would it be possible to make bad reception effect also (or maybe already can?)
    as in, image would fade into that kind of animated lost signal black&white noise?
     
  35. Migueljb

    Migueljb

    Joined:
    Feb 27, 2008
    Posts:
    562
    Would this work in unity 2020.3.35 for URP for android in VR using multiview rendering? Working on a project for oculus quest 2. Any info would be great.
     
  36. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    456
    Any news on URP?
     
  37. vladstorm_

    vladstorm_

    Joined:
    Nov 26, 2013
    Posts:
    184
    Hi everyone,

    VHS Pro 3.0 is released! I added URP version and re-wrote other versions for new Unity version.

    changes v3.0:
    -URP version: added
    -HDRP version: rewritten for new Unity
    -HDRP version: fixed DLSS bug
    -BRP version: rewritten for Post-Processing Stack v2 3.2.2
    -BRP version: 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 to add shader features to a build


    [Setup, Installation]

    Use Unity version 2022.2.1f+
    Use Linear color space (Edit->Project Settings->Player->Color Space: Linear)

    -BRP (Built-in Render Pipeline)
    1. Install Post-Processing
    https://docs.unity3d.com/Packages/com.unity.postprocessing@3.2/manual/Installation.html
    https://docs.unity3d.com/Packages/com.unity.postprocessing@3.2/manual/Quick-start.html
    2. Add VHSPro component to Post-Processing Volume

    -URP (Universal Render Pipeline)
    1. Add VHSPro Render Feature to current URP Asset Renderer (which is selected in Main Camera)
    2. Add VHSPro component to Post-Processing Volume

    -HDRP (High Definition Render Pipeline)
    1. Go to "Edit->Project Settings" and select the "HDRP Global Settings" tab.
    2. Scroll down until you find the "Custom Post Process Orders" section. This section contains three lists, one for each injection point.
    3. Add VHS Pro to "After Post Process" list so that HDRP can render them.
    4. Add VHS Pro to your Post-Processing Volume.
    more info https://docs.unity3d.com/Packages/c...finition@14.0/manual/Custom-Post-Process.html


    [Parameters Description]

    1. Resolution
    Resolution of the output image
    a. Pixelization (Screen Resolution Quantization)
    The picture will be quantized vertically and horizontally. You can choose the amount of pixels for the output image.
    "Preset" - You can choose one of the existing resolution presets to set both parameters at once. You can also choose Fullscreen or Custom.
    "Width" - The pixels per width in the output picture
    "Height" - The pixels per height in the output picture
    2. Signal Encoding
    Nowadays we are used to see million of colors on the monitor because the videocards became very powerful. However, back in the days, the old videocards had very limited memory and data bandwidth. The same story was with the monitors. In 70s and 80s most of the time a videocard could encode only a couple of bits of color per channel. This section allows you to emulate color per channel downsampling. The information each color channel can carry.
    a. Color Encoding
    Different videocard used different way to encode the signal. So, you can choose between few color encoding modes: "Grayscale", "RGB", "YIQ (NTSC)". Each mode allows you to adjust the amount of colors per channel (it's not the same as bits per channels).
    "Type" - Type of color encoding. Colors per channel are different for different color encoding modes.
    • Grayscale type (1 channel)
    "Channel Gray" - colors per one channel
    "Color" - shading color. allows you to colour the output
    • RGB type (3 channels)
    "Channel R,G,B" - allows you to adjust colors per each channel
    • YIQ (NTSC) type (3 channels)
    "Channel Y,I,Q" - allows you to adjust colors per each channel
    "Sync Channels" - You can use this mode to tweak colors per channel simultaneously for RGB, YIQ modes.
    "All Channels" - Adjusts color per channel for all 3 channels in the same time
    b. Dithering
    Dithering creates the illusion of "color depth" in images with a limited color palette. In a dithered image, colors that are not available in the palette are approximated by a diffusion of colored pixels from within the available palette.
    "Type" - You can choose between different ways/algorithms of dithering such as
    'Horizontal Lines',
    'Vertical Lines',
    '2x2 Ordered',
    '2x2 Ordered 2',
    'Uniform noise',
    'Triangle noise'
    "Dither Amount" - Allows you to adjust the amount of dithering.
    c. 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.
    "Shift Y,I,Q" - use these to tweak/shift the values.
    "Adjust Y,I,Q" - Use these to make a permanent adjustment.
    3. Palette
    Allows you to limit the picture colors by the palette. There's a special algorithm which allows you to use big palettes up to 256-512 colors.
    "Preset" - You can use one of the existing color palettes from the the old videocards
    'IBM CGA > Full Palette',
    'IBM CGA > Palette 1, High Intensity',
    'IBM CGA > Palette 1, Low Intensity',
    'IBM CGA > Palette 2, High Intensity',
    'IBM CGA > Palette 2, Low Intensity Brown',
    'IBM CGA > Palette 2, Low Intensity Dark Yellow',
    'Atari > NTSC',
    'Atari > PAL',
    'Atari > SECAM',
    'MS DOS > Duke Nukem 3D',
    'MS DOS > Doom 1',
    'MS DOS > Quake 1',
    'Nintendo > Gameboy',
    'Nintendo > NES',
    'Apple II > Palette Hi',
    'Apple II > Palette Low',
    etc.
    "Accuracy" - This parameter allows you set how accurate the color matching is. Small values work faster but bigger are more precise. This also allow you to make more unique look of the picture.
    4. CRT(Cathode Ray Tube) Emulation
    Emulates CRT Screen and signal bleeding.
    a. Bleeding
    "Type" (CRT screen bleeding type) - You can choose between these modes: "Old Three Phase", "Three Phase", "Two Phase" (works slower). These modes emulate different screen bleeding curves.
    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.
    "Stretch" - Makes bleeding curve longer or shorter by stretching the it.
    5. Noise
    Emulates various noises.
    a. Global Resolution (Noise Resolution)
    The noise resolution (quantization). If it's checked then noise resolution will be inherited from the main pixelization resolution.
    Uncheck it if you want to use custom noise resolution.
    "Width, Height" - Adjust custom noise resolution parameters
    c. Film Grain
    This is a simple background noise.
    "Alpha" - Adjusts transparency of background noise.
    d. Signal Noise
    Emulates signal noise. Changes the YIQ colors.
    "Amount" - Adjusts amount of noise.
    "Power" - Adjusts density of noise.
    e. Line Noise
    Emulates noise in the analog video signal and VHS cassettes. Noise lines popping up randomly within the screen.
    "Amount" - Adjusts transparency.
    "Speed" - Adjusts speed.
    f. Tape Noise
    Emulates noise which you can find on old VHS cassettes. Noise lines floating down the screen.
    "Amount" - Adjusts noise cutoff.
    "Speed" - Adjusts speed.
    "Alpha" - Adjusts transparency.
    6. Jitter & Twitch
    Emulates deviations in the analog video signal and CRT.
    a. Show Scanlines
    Draws the black lines in between the quantized screenlines.
    "Width" - Adjusts the width of the scanlines.
    b. 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.
    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.
    "Amount" - Adjusts the amount.
    e. Jitter Vertical
    Emulates analog video signal and CRT jitter. Adds a bit of YIQ shifting.
    "Amount" - Adjusts transparency.
    "Speed" - Adjusts speed.
    f. Twitch Horizontal
    Shifts/displaces the image horizontally sometimes.
    "Frequency" - Adjusts how often.
    g. Twitch Vertical
    Shakes/Shifts screen horizontally sometimes. The images "jumps" or "falls" vertically.
    "Frequency" - Adjusts how often.
    7. Phosphor trail
    Emulates phosphor screen decay. It basically works as a feedback and adds a part of previous frame to the current one.
    For easier understanding of this effect you can turn on "Tools->Debug Trail". Then you will see only the trail. It's better to adjust it that way.
    "Input Cutoff" - Adjusts brightness threshold of input signal. How much of each frame affects the trail. If it equal to X value, it means all pixels with brightness lower than X are not gonna affect the trail and all pixels with brightness above X are going to affect the trail.
    "Amount" - Amplifies the input amount after cutoff.
    "Fade" - Adjusts how fast the trail fades. In other words it's a feedback amount.
    8. 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 Trail
    Helps to debug phosphor trail.
    9. Bypass Texture
    You can use custom image texture if you want it to be processed by the effect instead of screen image.


    [Notes]

    - Shader Feature switching in a Build
    I'm following the best practices and using shader features for this plugin. It means that you can play with the plugin in the Editor but after you made a build, all the shader features are baked and can't be changed in the build. You still can tweak the shader parameters tho.
    If you need to change shader features in a build then you have to use multi_compile instead of shader feature in shaders for the effects you need.
    For example, if you wanna switch film grain in runtime (in the build) then you have to change shader_compile line to the main shader file to this
    #pragma multi_compile ___ VHS_FILMGRAIN_ON
    more info about it here https://docs.unity3d.com/Manual/SL-MultipleProgramVariants.html

    -Custom Palette
    if you want to add a custom palette just add it in VHSHelper.cs and Resources/Palettes folder
     
    Last edited: Jan 5, 2023
    petey, mgear and atomicjoe like this.
  38. JayG81

    JayG81

    Joined:
    Sep 4, 2012
    Posts:
    72
    I was looking to purchase this. Is it still compatible with 2021.3 HDRP?

    Also, in your video trailer for VHS Pro you have glitch transition effects between the scenes--are those video clips, and do they come with the asset?

    This asset looks great!
     
  39. ace_eisu

    ace_eisu

    Joined:
    Mar 8, 2023
    Posts:
    1
    Looks to be transition effect where you can probably chose what you wish to put in between the clips. Maybe there are stock assets for those who don't wanna fine tune it. Just like in that one cool game PD2k that I haven't heard of in a long while. Lots of cool effects. Shame it was closed down and not released as open source...
     
  40. vladstorm

    vladstorm

    Joined:
    Oct 4, 2021
    Posts:
    9
    there're just some video clip cuts for the transitions just to fit the concept.
    it should be compatible with 2021.3 but its better to use 2022.2.1f+ because the plugin was re-written to fit new functionality of unity
     
  41. sturmburg

    sturmburg

    Joined:
    Jul 16, 2012
    Posts:
    7
    I'm getting this error when running VHS Pro, anyone else seeing it?
    A call to Blit with source and dest set to the same RenderTexture may result in undefined behaviour.

    I'm also seeing the effect when I run in the Editor, but when I do a build the effect is not appearing. I'm running 2022..3.18f1.

    Any thoughts?
     
  42. andrea17scazzieri

    andrea17scazzieri

    Joined:
    Jan 28, 2022
    Posts:
    2
    waiting for a carnival kinda discount and i'm gonna buy this straight away