SC Post Effects
SC Post Effects
Thank you for purchasing SC Post Effects!
This package offers 20 non-photo realistic (NPR) post effects to enhance your art style or feedback. Made to reap the full benefits of the Post Processing Stack v2.
This package is in its beta stage, some features might not work correctly, or are in an early stage
Feedback and suggestions can be made in the forum thread:
This manual is intended to clarify the use of the package.
To be added
Currently, getting all the effects to a working standard is priority.
Other effects may be added in the future, suggestions are welcome!
In the final release you can expect:
- A tutorial for volume blending
- Demo scene, with rooms showcasing each effect
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 the “Core” folder, it is not required for the effects to work, but it contains installation and help functionality.
You may receive a warning message about obsolete APIs, it is completely safe to run the API updater.
You will be presented with the installation screen, should anything not check out, instructions will be displayed
This package is required to be used with the Post Processing Stack v2, which is currently in beta. It is not backwards compatible with v1.
You can acquire it in two ways:
This archive is always updated with the latest compatible version
The latest version from Unity, may possibly not be compatible yet, use at your own risk!
Copy the “PostProcessing” folder into your /Assets folder for correct installation.
If this window is not already open, you can find it under Help -> SC Post Effects
It allows you to automatically set up a layer, and add the Post Processing Stack to your scene.
Manual set up:
- Go to Edit->Project Settings->Tags and Layers.
- Add a new layer, dedicated to post processing.
- Select your main camera, and add a “Post Process Layer” script component.
- On the component, in the “Layer” dropdown, select the layer you created a moment ago.
Post Processing Volume Setup
- Go to GameObject -> 3D Object -> Post-process Volume to create a new volume.
- Assign the 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.
A demo scene, where all the effects can be viewed individually will be available closer to the final release.
(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.
Some shaders throw the following error:
Assertion failed: Failed to create DX11 vertex declaration; something wrong with vertex shader input data? (hr=80070057)
It is still unclear what causes this, but the error only shows when opening Unity, or importing the assets. Other than that, it’s harmless.
The Fog Gradient and Screen Gradient effects only work with a gradient texture, which is to be authored externally in something like Photoshop (PSD files can be used as textures!).
This is due to the fact that the “PostProcessEffectEditor” class currently does not support intermediate calls. So calling a function when one of the parameters has changed, like in regular editor scripts, is not possible. Everything is do be done in the rendering loop.
It is possible to create a texture from a Unity gradient, this would have to be done constantly at runtime, which is far from efficient, and breaks compatibility with volume blending.
Some effects that rely on the depth buffer (such as Edge Detection and Fog Gradient) may look slightly different in Scene View, since the far clipping plane is a little different from that of the Game View camera.
The Fog Gradient effect may show artifacts where the skybox and objects meet.
This is to be resolved in a future update.
Does not work on OpenGL. Unfortunately, the reason is currently unknown.
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 Scanlines is put after Tube Distortion, the scanlines will also be distorted.
Allows you to add a black bars to your screen, either horizontal (21:9) or vertical (4:3).
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.
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.
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.
Simulates a high field of view, often referred to as a “fisheye lens”.
Allows you to use a gradient for the fog, so it’s possible to have different colors as the fog goes into the distance.
Note: The default Unity fog is still separate, so it’s configuration has no effect on this.
Tiles the screen in “pie pieces”. Has great uses for non-game purposes, like dynamic art works.
Inverts the screen colors.
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.
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 drop
If you’d like to use your own refraction map, be sure the texture is set to “Default” instead of “Normal map”. This is by design as the blue channel is not used, and sampling a texture is cheaper in the shader than sampling a normal 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.
Draws a gradient texture over the screen.
This is to be extended with rotation options and blending modes.
Simulates the curvature of a CRT screen.
Has three modes: