PostMagic: Post Processing v0.1

(This is old, new version here!)  Success! At least partial. This is still very experimental, but I manged to get various post effects working in VaM. Yes, you read correctly...VaM post effects in VR!

From the tech-side I'm exposing and messing with one off the deactivated post-processing systems hidden in VaM, actually I discovered are at least three independent systems in MeshedVR's code. In particular this is an old version of the Post Processing Stack provided by Unity Technologies.

My plugin is divided into sub-plugins for each effect and a manager. The package includes a standard version (MacGruber_PostMagic.cslist) and an experimental version (MacGruber_PostMagicExperimental.cslist) which adds additional effects that are not yet working correctly. Note that all parameters that are float or bool values can be animated, for example using an AnimationPattern, if you fancy so.

UserLUT

UserLUT is a rather simple, but very powerful effect. It uses a LookUpTexture (LUT) to remap colors however you want. You can take a screenshot of the game and load it up in Photoshop, GIMP or whatever you use and apply any color filters and re-mappings you need to achieve what you like. 

All you have to do is apply all the same filters in the exact same way to one of the neutral lookup textures included in the package (e.g. NeutralLUT32.png), save it in PNG format and load it into VaM in the UserLUT settings. The only limitation is that you can't do anything that depends somehow on the value of neighboring pixels, blur would be a classic example.

In my package I have included some simple examples: Desaturate for a bit of black and white movie look, Toon for a reduction in colors to achieve a simple cartoon look, a combination of the two and a Mars effect (red-tint). Someone with actual artistic skill can probably achieve much better ;)

Depth of Field

Next effect is DepthOfField (DoF), a common post-processing effect that simulates the focus properties of a camera lens. Foreground or background objects can be out of focus and appear blurred. I have also implemented an AutoFocus function, to auto-adjust the FocusDistance. For that you need to place an 'Empty' atom into the scene and name it 'AutoFocusPoint', and attach it to a person head, animate it or whatever.

Bloom

Another very common effect is Bloom. It makes bright objects "glow". Actually VaM already had an effect for this which made some special objects glow, like the lamp in the background. However, this works for all objects and allows far more control. If using this version of Bloom, you should disable 'Glow' in the VaM UserPreferences.

Grain

This effect adds some "film grain" noise to your scene. Maybe you want your scene look like some old analog movie?

Experimental: Ambient Occlusion

Screenspace Ambient Occlusion (SSAO) darkens creases, holes, intersections and surfaces that are close to each other. In real life, such areas tend to block out or occlude ambient light, hence they appear darker. Very subtle effect, but it makes a scene appear much more realistic. 

Sadly in VaM there is a rendering issue with characters. I suspect characters are not present in the depth buffer somehow. Whatever the issue, the ambient occlusion of objects behind characters is rendered on top of them, which makes this pretty much useless for the moment until someone figures out what is going on. However, you can already try this and dream how cool your scene would look like.

See those artifacts here:  https://imgur.com/a/jCi1g8m 

Experimental:  MotionBlur

Another common effect which blurs fast moving objects. Especially racing games use this a lot when rendering at low frame rates.

Works okay'ish in Desktop mode, but apparently this effect was not implemented to work in VR. Get your barf bag ready.

Experimental: Dithering

Dithering is the process of intentionally applying noise as to randomize quantization error. This prevents large-scale patterns such as color banding in images.

In this implementation I don't see any difference between turning this on or off. Most likely this is not doing anything.

Known Issues

Besides the mentioned issues for the effects marked as experimental, there are further issues. There is a reason Meshed has all these effects embedded in the code base without actually using them.

  • DepthOfField can produce some bleeding of focused objects into things in the background. I would assume a newer version of the PostProcessingStack would fix this. At least I can't find anyone having a similar problem so I assume it was fixed.
  • Various default assets in VaM have dead pixels with NaN values in their color or depth. Could be caused by degenerate geometry or bad shaders. This is causing trouble for Bloom and DoF. Instead for a single black pixel you won't notice, this basically explodes in your face, causing huge black or white artifacts. PostProcessingStack v2 has added a "Stop-NaN-Propagation" filter for this. However, it is hard to add this with just a VaM plugin.
  • PostMagic supports post effects for the thumbnail and screenshot camera. However, note that DoF auto-focus is relative to the player, not the screenshot camera. For the 'WindowCamera' atom I have added a checkbox in the DoF settings.
  • My SuperResolution Screenshot plugin is mostly compatible with PostMagic, if it is loaded AFTER loading PostMagic. You can also just disable and re-enable SuperResolution once to make the preview camera use post effects.
  • There is probably more.

Download

2-week EarlyAccess for Patrons:  https://www.patreon.com/posts/postmagic-post-30544153 

 (Edit: Download is now public.) 

By becoming a patron, you'll instantly unlock access to 41 exclusive posts
111
Images
10
Writings
2
Videos
By becoming a patron, you'll instantly unlock access to 41 exclusive posts
111
Images
10
Writings
2
Videos