SC Post Effects
SC Post Effects
Thank you for purchasing SC Post Effects!
This package offers 33 post effects to enhance your art style or feedback. Made to reap the full benefits of the Post Processing Stack v2.
The minimum supported version will be Unity 2018.2. Only an installation of the Post Processing Stack through the Package Manager will be supported.
Feedback and suggestions can be made in the forum thread:
This manual is intended to clarify the use of the package.
To be added
Other effects may be added in the future, suggestions are welcome!
Trello board: https://trello.com/b/J5mEv8Cn/sc-post-effects
Import the Unity package through the Asset Store download manager (Found under Window->Asset Store).
- All the effects are contained in separate folders, so you easily leave out any effects you don’t want.
- Be sure to include all other folders, they contain installation and help functionality as well as shader libraries.
You will be presented with the installation screen, should anything not check out, instructions will be displayed.
If the installation window doesn’t appear, or you’ve close it, open it through Help->SC Post Effects Installer.
The Post Processing Stack (v2) must be installed before you can continue. You can either use the GitHub or Package Manager installation. Unity versions older than 2018.1 must use the GitHub installation.
Installation will continue on the next screen, where you can choose to install the demo content as well.
In order to use the Post Processing Stack, a script component must be added to your camera. Additionally a post processing volume must be active in the scene.
Open the help window through Help -> SC Post Effects
This window has a “Quick setup” section which allows you to quickly add Post Processing to your scene.
Manual set up:
- Select your main camera, and add a “Post Process Layer” script component.
- On the component, in the “Layer” dropdown, select the “PostProcessing” layer
Post Processing Volume Setup
- Go to GameObject -> 3D Object -> Post-process Volume to create a new volume.
- Assign the “PostProcessing” layer to this object
- Tick the “Global” box
- Choose a profile in the profile field
Each field has an override checkbox on its left, you’ll need to toggle the settings you want to override for this volume before you can edit them. You can quickly toggle them all on or off by using the small
None shortcuts at the top left.
On/Off toggle is used to override the active state of the effect itself.
Finally, you can right-click and effect title to show a quick-action menu.
From there you can start adding local volumes with various priorities and blend distances to your scene and see all of them blend automatically.
There are a few example profiles in the SC Post Effects/_Examples/Profiles folder you can try out.
(Excerpts from GitHub documentation)
The way post-processing works in this framework is by using local & global volumes. It allows you to give each volume a priority and a set of effect overrides to automatically blend post-processing settings in your scene. For instance, you could have a light vignette effect set-up globally but when the player enters a cave you would only override the
intensity setting of the vignette to make it stronger while keeping the rest of the settings intact.
Post Process Volume component can be added to any game object, the camera itself included. But it’s generally a good idea to create a dedicated object for each volume. Let’s start by creating a global
Post Process Volume. Create an empty game object and add the component to it. Don’t forget to add it to a layer that’s being used by the mask set in the
Post Process Layercomponent you added to your camera!
By default it’s completely empty. From there we can do two types of volumes:
- Global: a global volume doesn’t have any boundary and will be applied to the whole scene. You can of course have several of these in your scene.
- Local: a local volume needs a collider or trigger component attached to it to define its boundaries. Any type of 3D collider will work, from cubes to complex convex meshes but we recommend you use simple colliders as much as possible, as meshes can be quite expensive to traverse. Local volumes can also have a
Blend Distancethat represents the outer distance from the volume surface where blending will start.
We want a global volume, so let’s enable
Weight can be used to reduce the global contribution of the volume and all its overrides, with
0being no contribution at all and
1 full contribution.
Priority field defines the volume order in the stack. The higher this number is, the higher priority a volume has.
Supported through Unity 5.6.1 to 2018.3.
Beta and Alpha versions are not officially supported and may run into issues.
Scriptable Render Pipeline
The Post Processing Stack is intrinsically compatible with the SRP (LWHP/HDRP), as such any effects will work out-of-the-box. Though, due to some things not being readily available as they are in the legacy pipeline, certain features are excluded:
- Edge Detection, Depth Normals and Cross Normals solver
- 3D Hue Shift, Geometry influence parameter
- Lens Flares
- Black Bars
Please do note that the SRP is an experimental feature and undergoing a lot of change. Updates may cause unexpected issues. LWRP and HDRP have been tested with version 3.0.0.
Has been tested using an Oculus Rift with Multi- and Single-Pass Stereo Rendering. Mobile VR remains untested. Please note that the Post Processing Stack requires Unity 2017.2+ for full Single-Pass Stereo Rendering support.
Effects excluded from VR compatibility:
- Fog (height fog feature)
- Cloud Shadows
- Ambient Occlusion 2D
- Radial Blur
- Lens Flares
- Sketch (World-Space projection mode)
Mobile devices are bandwidth limited, so post processing must always be used sparingly. Multi-pass effects such as Blur and Lens Flares should be avoided.
This platform has not yet been tested for artifacts or performance, so it currently not considered compatible.
Multi-pass effects such as Blur, Ambient Occlusion 2D and Lens Flares currently do not work correctly.
The Kaleidoscope effect doesn’t work on OpenGL at all, the reason is currently unknown.
Fog ignores water shaders
This is a general 3D rendering issue. Seeing as water shaders are transparent, they do not write to the depth buffer. Fog is a depth-based effect, making water shaders virtually invisible to it. Circumventing this is not a trivial thing to do, and would at least require the water shader to be modified. Unfortunately, I cannot offer such a solution.
This occurrence is barely noticed for shallow water bodies.
Some effects that rely on the depth buffer (such as Edge Detection and Fog) may look slightly different in Scene View, since the far clipping plane varies, depending on your scene’s size.
The sun shafts are cast from the skybox, for color values exceeding the set threshold. If highly emissive objects are placed between the viewer and the skybox, they will appear to cast sun shafts as well.
Fog height noise artifacts
When the camera is inside of the height fog and looking up, slight noise artifacts may show due to precision issues. Though, when using a skybox, this is barely noticeable.
[Error] CS1061: ‘PostProcessRenderContext’ does not contain a definition for ‘stereoRenderingMode’
You are using an old version of the Post Processing Stack, update to the latest version through the Package Manager
[Error] RenderingCommandBuffer: invalid pass index X in DrawMesh
This error is thrown if there is a shader error, or a shader is missing. Be sure to have all package contents imported and use the latest Post Processing Stack version.
[Warning] Font size and style overrides are only supported for dynamic fonts.
Can be safely ignored, the demo scenes use a custom font. The demo scenes are to be revised for version 1.0.0 and will use geometry text instead.
When the camera is perpendicular to a XYZ axis, the sketch projection will appear to morph slightly.
The Fog effect may show artifacts where the skybox and objects meet.
Disable (MSAA) Anti Aliasing in your Quality Settings
When using Metal rendering on macOS, you may see the following warning: “Metal: Fragment shader missing texture binding at index X”.
Disable “Metal API Validation” in your Player Settings to resolve this. This warning will be thrown when a shader has an empty texture assigned, but is harmless.
Please refer to our refund policy
It’s important to remember the rendering order can greatly affect the behavior of the effects. You can adjust the order on the “Post Process Layer” component on your camera.
A few examples:
- If the Ripples effect is put before the Edge Detection effect, the edges will not be affected by the Ripples.
- If Tube Distortion is put after Scanlines, the scanlines will also be distorted.
Draws a line where an edge is detected. This is a revamp of the legacy edge detection image effect. The option to set an edge color and opacity has been added.
Several method can be used, the result of which entirely depends on what is drawn on the screen.
Triangle Depth Normals
Checks the difference between a pixel’s normal value and their distance from the camera.
Rovert’s Cross Normals
Works the same as the method described above, but uses an addition sample for higher precision.
Sobel Depth (Thin)
Draws an edge where neighboring pixels greatly differ in their depth value. Same method as used in “Borderlands”
Uses the image’s luminosity and creates an edge where the values differ. This works great for aesthetics that make use of strong and sharp color difference.
Adds distance and height-based fog to the scene. Also allows for a gradient texture to control the colors and opacity.
Height fog density can be controlled by supplying a grayscale texture.
Allows you to add a black bars to your screen, either horizontal (21:9) or vertical (4:3).
Transform the image into an oil painting. Has the option to fade out the effect over distance.
This effect is quite heavy, which should be kept in mind when dealing with a performance sensitive project.
3D Hue Shift
A 3D hue shifting effect.
The “Geo Influence” parameter determines how strongly the effect adheres to the scene geometry. High values may induce banding artifacts.
Draws a gradient texture over the screen.
This is to be extended with rotation options and blending modes.
Offsets the RGB channel, making the colors appear to separate from each other.
Simulates low color bit depth, as seen in older games when hardware was limited.
Can be used to create a effect that simulates pain or poisoning. Especially useful when used with volumes. You could set up a “frost” effect on your Global volume, and create local volumes around say… barrels of fire, that override the “Size” parameter.
A grayscale texture can be used to improve this effect. A few examples are included in the SC Post Effects/_Examples/Overlays folder.
In order for the “Size” parameter to work as intended, your texture must have white values between 0 and 1. The parameter interpolates between these values, making the texture appear to grow towards the center of the screen.
Makes the camera go cross eyed.
Reduces the image fidelity by omitting certain pixels through a Bayer 4×4 dithering matrix.
Brighter parts of the screen will show less dense dithering, whereas dark areas may turn entirely black.
This effect is currently calculated entirely on the GPU. If this proves to be too inefficient, an option to use a lookup texture will be added.
Tiles the screen in “pie pieces”. Has great uses for non-game purposes, like dynamic art works.
Inverts the screen colors.
Simulates a low resolution screen to easily transform your image into pixel art.
Note: Does not actually lower the rendering resolution, the effect is only visual.
When supplied with a refraction map this can be used to create cracked glass, frost, scratches, water drops etc.
Several example maps are included:
- Clear ice
- Cracked glass
- Water drops
If you’d like to use your own refraction map, you can convert a normal map to a DUDV map, which is similar to a normal map, but doesn’t have a blue channel. More information can be found here: http://wiki.polycount.com/wiki/DuDv_map
Makes the screen appear to wave. Has both a wave (emitting from the center of the screen) and a omni-directional mode.
Values like strength, speed and distance can be adjusted.
Draws horizontal lines over the image, to simulate a CRT screen.
Simulates the curvature of a CRT screen.
Has three modes: