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

Volumetric Ambient Occlusion Image Effect

Discussion in 'Assets and Asset Store' started by wilberforce, Aug 29, 2016.

  1. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Volumetric Ambient Occlusion


    Download Demo View on Asset Store User Manual

    Volumetric Ambient Occlusion (VAO) provides additional level of visual quality by simulating soft ambient light shadows. It accentuates local geometric detail and produces shadows by nearby occluding surfaces (in the corners, cracks, holes, rough surfaces etc.). Resulting scenes have more depth and appear more realistic.

    Combining classic screen-space ambient occlusion (SSAO) algorithm with a more physically based approach lets us achieve better visual quality and performance compared to classic SSAO.


    Features
    • High performance and visual quality.
    • Plugin is compatible with all Unity rendering paths (Forward, Deferred and Legacy) and anti-aliasing.
    • Implemented as image effect attached to camera.
    • Easy to control - no magic variables (such as Bias).
    • Color bleed option
    • Single Pass Stereo Rendering Support
    • Not prone to self-intersection issues.
    • Compatible with Unity 5.3 and higher.
    • Plugin is not tested on mobile devices.


    See user manual or contact us at projectwilberforce@gmail.com for additional support.

    Screenshots




    Changelog
    1.1
    • Made compatible with Unity 5.4.
    1.2
    • More quality options
    • Enabled downsampling
    • Color Tint Mode
    1.3
    • Luminance Sensitivity
    • Improved Sample sets
    1.4
    • Free Demo
    • Color Bleed
    • Presence Control
    • Speed Boost
    • Single Pass Stereo Rendering support for VR
    1.5
    • Adaptive Sampling
    • Downsampled Pre-pass
    • Improved Sample sets #2
    1.6
    • Unity Post-processing stack compatibility
    • Command buffer implementation
    • Enhanced Blur
     
    Last edited: Apr 6, 2017
  2. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Version 1.2

    More Quality Options -
    we added more quality settings - users can now select from 4, 8, 16, 32 or 64 samples, with even the lowest setting providing good visual result

    Downsampling - option to lower the resolution of computed occlusion = performance boost at the cost of visual quality (be sure to tweak the quality setting first before enabling this)

    Color Tint Mode - gives you the option to change the color of the occlusion. Used to get better control of how the final scene looks - for example choosing a bluish color for the shadows when using yellow lighting.
     
  3. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Version 1.3

    Luminance Sensitivity -
    you can now control how are the bright surfaces occluded. Can also be used in combination with downsampling option to reduce the most visible artifacts caused by occlusion texture size reduction.

    Better sample sets - Much better visual quality with improved performance. Effect produces reasonable results with as low as 8 samples (Low quality).
     
  4. JonDadley

    JonDadley

    Joined:
    Sep 2, 2013
    Posts:
    139
    Hi. This seems like an interesting AO solution. Do you know if it works in VR at all? Does it function with Unity's Single Pass Stereo feature?
     
  5. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Hello,
    unfortunately, we don't have access to any VR device so we can't 100% confirm. However it should work on most of them (except Gear VR and other similar mobile devices, as they are not powerful enough).
    The Ambient Occlusion algorithm is computed solely in fragment shader which is unaffected by the Single Pass Stereo feature - so it will be computed once per eye. This is common for all Screen Space algorithms.
    The plugin has its own quality settings (like downsampling) to gain performance.
     
  6. Joybutton

    Joybutton

    Joined:
    Jun 25, 2014
    Posts:
    4
    I looked at a couple other AO shaders and I think I like the look of yours the best. My project is VR (Vive) so I can give you feedback on the results and let you know if there are any issues. I'd like to use this throughout my project and hopefully balance any performance hits with a in-game quality slider or presets.

    I'm finishing up some assets and later today I'll try this out.
     
  7. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Good to hear that, looking forward to your feedback :)
     
  8. zmaxz

    zmaxz

    Joined:
    Sep 26, 2012
    Posts:
    143
    wilberforce likes this.
  9. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Hi,

    VXAO and our VAO are different solutions. While NVidia's VXAO works with world space representation of the scene, our VAO takes just screen space data available in G-Buffer into account (just like clasical SSAO, HBAO and others).

    However, thanks to finely tuned algorithm and volumetric approach, it minimizes halos, blurriness, works well on screen borders and is as fast or faster than SSAO/HBAO.

    Also take a look at https://projectwilberforce.github.io/blog/VAO-1-3-Released for a little more technical description.

    Project Wilberforce Team
     
  10. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Version 1.4 has been released!

    Free Demo -
    Try it out before you buy it. Demo includes all features of the full version.

    Color Bleed - Now in addition to ambient occlusion, nearby surfaces “bleed” their color onto each other.

    Presence - New option that lets you better control the intensity of the occlusion.

    Speed Boost -
    Experimental feature that speeds up the calculation (especially on higher quality settings and screen resolutions)

    Further Optimizations -
    Another batch of tweaks to deliver better speed and quality.
     
    jimburn, one_one and chiapet1021 like this.
  11. orrbain

    orrbain

    Joined:
    Aug 12, 2015
    Posts:
    20
    Just wanted to stop by and say that I tested it today, and this is not currently working with Single-Pass Stereo. When you enable it you get a messed up display where it shows both 'eyes' on the screen at once. Here's a screenshot:
     

    Attached Files:

  12. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    We are currently working on supporting Single-Pass Stereo. We have a working development version. Please send us an email to projectwilberforce@gmail.com and we can send it to you for testing.
     
  13. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Version 1.4.1 has been released!

    :eek: We are VR ready!

    Single Pass Stereo Render - As of now VAO supports VR devices including the SPSR option
     
  14. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Currently working on adaptive sampling - optimization scheme that lowers the quality for more distant geometry - idea is to progressively lower the quality but makes it visually imperceptible. Currently getting almost double the performance at the cost of very little detail loss (not noticeable on textured scenes)

    measurements were run on nVidia GTX 970

    feedback is welcome

     
    DevMember likes this.
  15. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Version 1.5 has been released!

    o_O Huge performance optimizations!

    Adaptive Sampling - Automatically uses less samples further from camera
    Downsampled Pre-pass - Less samples on less occluded areas
    Newer, better sample sets - Better visual quality with less samples
     
  16. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Working on improving the colorbleed part of the effect. Currently trying to supress 'self-bleed' - see that in the new version the white specular color is still visible on the teapot.

     
    chiapet1021 and JonDadley like this.
  17. Lars-Steenhoff

    Lars-Steenhoff

    Joined:
    Aug 7, 2007
    Posts:
    3,521
    I would to be able to bake these occlusion to a lightmap texture would that be possible?
     
  18. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    No, not at the moment, sorry. I assume you're asking because of mobile platforms? Our priority at the moment is optimizing the speed of the dynamic effect. If we end up doing baking ao textures in the future it would be as a separate tool.
     
  19. tosvus

    tosvus

    Joined:
    Dec 27, 2016
    Posts:
    44
    Ok so please be gentle with me...Renderers/Shaders is one area I have a trouble understanding. I have started developing a game for the HTC Vive VR headset. Currently using The Lab Renderer that Valve has released. It seems to do pretty well, and wondering if this could be a replacement for it. If so, what are the benefits? One issue I think the Lab Renderer has is that it does not work with the Unity Terrain renderer properly. Do you have any insight? If I can get a better and more versatile solution, this would be money well spent in my view. Thanks!
     
  20. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    No, this is not a standalone renderer but a post-process image effect - which means that it adds additional step that is put onto whatever your renderer of choice outputs. In the case of this effect it's ambient occlusion (shadows along the creases), but a wide variety of effects can be done in post-process - blurs, blooms, god-rays, color corrections etc. Downside is that every additional effect you add to your project will cost you some computation time per frame so you have to balance visual quality with performance.
     
    tosvus likes this.
  21. tosvus

    tosvus

    Joined:
    Dec 27, 2016
    Posts:
    44
    Thank you for the detailed response! :) I still think this can be a useful effect, where I have scenes where I can afford the hit to the performance - definitely keeping this high on the list of future asset purchases!
     
  22. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Version 1.6 has been released!

    Unity Post-processing stack compatibility -
    Many users reported that the asset does not work if the camera has the new postprocess stack attached, this has been resolved.
    Command buffer - Added command buffer implementation
    Enhanced blur - Customizable and more effective Gaussian blur
     
  23. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    chiapet1021 likes this.
  24. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    nxrighthere likes this.
  25. nxrighthere

    nxrighthere

    Joined:
    Mar 2, 2014
    Posts:
    567
    Hi there! I tried VAO demo in my project and it looks pretty neat! But, I noticed that if I enable Command Buffer option, then it breaks the smooth gradients of the skybox.
     

    Attached Files:

    wilberforce likes this.
  26. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Hi, thank you for pointing this out! We will take a look at it.
     
  27. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    So I tried to check out what is causing the issue, but I'm unable to reproduce it. If you could provide some additional info to narrow it down - Unity version, Rendering Path and Graphics API (DX/OpenGl...). Are you using some other postprocess effects? Or mail me the whole sample project.

    Thanks.
     
  28. nxrighthere

    nxrighthere

    Joined:
    Mar 2, 2014
    Posts:
    567
    Banding appears only if the color space was set to Linear.
    Done.
     
  29. jontaguse

    jontaguse

    Joined:
    Nov 28, 2014
    Posts:
    3
    Hey, i get weird results using this asset on a VR (VIVE), Tested different shaders (valve and Unity standard), Multi and single pass and tried tweaking the settings but nothing really helps.

    Attached images for my result



     

    Attached Files:

  30. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    this looks like banding artifact caused by near/far plane setting in the camera.

    Try setting near plane further from camera and far plane closer. This should reduce the banding. Also when you turn on the setting "GBuffer Depth&Normals", this might also help.
     
  31. castor76

    castor76

    Joined:
    Dec 5, 2011
    Posts:
    2,517
    Interesting, how does it fair against Amplify Occlusion? In terms of performance? Any comparsions?
     
  32. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    In terms of performance - very comparable, especially after the optimizations we developed over the last year. I am not comfortable with posting any comparisons (computation times) with assets by other developers (I'm biased.) But there is a free demo available so you could try it out and see for yourself.
     
    Last edited: Aug 19, 2017
  33. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Since performance is an important factor you can always gain time by lowering quality - VAO performs very well even for low sample counts and depending on your scene and settings there might not be any loss of visual detail at all.

    Here is a side-by-side comparison of 4 samples (second lowest setting) and 32 samples (second highest)



    image without ambient occlusion for reference:
     
  34. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Version 1.8 has been released!

    We've fixed aliasing problem in single pass stereo mode:

    fixed-jaggy-edges.jpg
     
    Lars-Steenhoff likes this.
  35. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
  36. Emerald_Eel_Entertainment

    Emerald_Eel_Entertainment

    Joined:
    Mar 30, 2016
    Posts:
    120
    And now it's 65% off! :)
     
  37. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Exactly! Unity approved new version so fast!

    corridor.jpg

    New version 1.9 has been released:
    - performance optimizations
    - hierarchical buffers option
    - blur sharpness control improved
    - more blur quality options
    - GUI improvements
    - fixed flickering in screen corners
    - support for transparent queue geometry in deferred path
    - AO integration into "before reflections" and "after lighting" events

    Also it is now on SALE FOR 65% OFF!
     
    chiapet1021 likes this.
  38. chiapet1021

    chiapet1021

    Joined:
    Jun 5, 2013
    Posts:
    605
    Nice! Question for you @wilberforce: how much have you looked into scriptable render pipelines in the 2018.1 beta? Seems like asset developers will need to do quite a bit of work to support either of the SRPs Unity is working on. I'm not sure how easy/hard it will be to implement post-processing effects like VAO (or Color Bleed) in either of those SRPs.

    Thanks!
     
  39. deraggi

    deraggi

    Joined:
    Apr 29, 2016
    Posts:
    88
    Hi,
    I attempted to get VAO today running on a web player without success. The documentation states it's not tested there. Do you know if there is some way to get it running on web player?
     
  40. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Hi, sorry about the late reply. I looked at it and I'm not sure how hard it will be - I may be able to reuse command buffer implementation for scriptable pipeline. I will attempt to do it and report back, hopefully it will work out
     
    chiapet1021 likes this.
  41. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Web player is not supported by Unity anymore as long as I know. Can you please post errors you are getting?

    I just tried building for WebGL and found an issue I'll fix in next version.
     
  42. deraggi

    deraggi

    Joined:
    Apr 29, 2016
    Posts:
    88
    Yes, I meant WebGL as well. Sorry I was unclear. Eagerly waiting for that fix :)
     
  43. Fairennuff

    Fairennuff

    Joined:
    Aug 19, 2016
    Posts:
    88
    Is there any comparison to the Post processing stack V2 from unity? Currently using that in my VR game and saw this on the store. Wondering if I can expect performance gains or if there is any reason to swap. It looks very nice!
     
  44. dl290485

    dl290485

    Joined:
    Feb 4, 2018
    Posts:
    160
    I bought this hoping it would work better with VR than the regular post processing stack. Unfortunately I have some of the same issues. I think the aliasing isn't so bad, but the real deal breaker right now is ghosting/double vision that happens when moving. For example I have a low poly tree with a triangular prism top, but when moving sideways it looks like it has 3 tips (one solid in the middle, two ghosts either side).

    Does anyone know how to get rid of or reduce this?
     
  45. Fairennuff

    Fairennuff

    Joined:
    Aug 19, 2016
    Posts:
    88
    Don't know about this asset yet. But I currently use the post processing v2 stack I'm my game and do not have that issue. Going to test this asset tonight.
     
  46. dl290485

    dl290485

    Joined:
    Feb 4, 2018
    Posts:
    160
    My first issue with the Post Processing Stack was terrible aliasing. I found this was eased by lowering the intensity to around 0.5 or so. It gives me the same ghosting effect though. In general when moving it makes edges look like they are shaking, which is very off putting. It's most noticeable on flat edges. If you are looking at the general mass and broad planes then you probably won't notice. I'm noticing it on the tip of the small tree, the edge of a table, and a set of small boxes/trays that are placed around each other on a 45 degree angle.
     
  47. dl290485

    dl290485

    Joined:
    Feb 4, 2018
    Posts:
    160
    Actually one of the easiest ways to see it is the actual controller model. When waving it in front of view it's ghosting/motion blurring/double vision as heck. With AO off it's perfectly crisp in motion.
     
  48. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    Hi. That is weird, ghosting from previous frames should not happen with our VAO because it does not store previous frames at all. If it happens also with other effects (Post Processing Stack v1) there might be some other thing that is causing it. Could you list/screenshot other effects you are using? Maybe some kind of temporal anti-aliasing? I may be able to reproduce this.
     
  49. dl290485

    dl290485

    Joined:
    Feb 4, 2018
    Posts:
    160
    I have no other effects installed/enabled.

    I don't have technical knowledge, but what you said sounds off. I don't think it's "previous frames" that are the issue, as it's ghosting both sides of the controller equally. As in ghosting where it hasn't yet gone to. The center is solid but both sides of it are equally ghosted.

    As this is 100% in the headset and not showing up on the monitor I can't take a screenshot. The best I could do is a mock up image to show what it looks like. To do that I would simply cut out the shape of the effected item and paste a transparent copy of it slightly misaligned each side.

    I'm not using Temporal AA. I've tried turning MSAA on and off.
     
  50. wilberforce

    wilberforce

    Joined:
    Aug 29, 2016
    Posts:
    92
    I see. I have an idea what is the issue. Can I ask the exact Unity version you are using? Also I will need following to reproduce it:

    - are you using single pass or multi pass stereo?
    - what kind of controller do you have (Vive/Oculus/...)
    - are you in deferred or forward rendering path?
    - I assume you are using most recent VAO version (1.9). Are you running in command buffer mode? Also what is the "Cmd. buffer integration stage" option?

    The problem is that when running in VR there is certain shader code for adjusting UV coordinates of rendered screen image - to position it correctly for each eye. There seems to be problem with various Unity versions. To put it simply - some versions need slightly different adjustment than others. If it is this case it should be quick fix, as long as I manage to reproduce this.

    Thanks