Both animations show three stacked transparent cubes. The first one with this implementation of order-independent transparency and correct color blending. The second one is rendered with the standard shader.
This is an implementation of order-independent transparency in Unity's Built-In Pipeline. It uses Per-Pixel Linked Lists, implemented with RWStructuredBuffers. This is a feature requiring Shader Model 5.0 with ComputeBuffers, see the Unity Manual for supported platforms. For reference a presentation by Holger Gruen and Nicolas Thibieroz was used. The code is based on their suggestions.
I recommend using this with the package Post-Processing Stack v2, because then transparent objects will be rendered in Scene View as well. Follow these steps:
- Add the post-processing override
Order Independent Transparency PP
to a global post-processing volume in your scene. - Change the shaders of every object that shall be rendered with order-independent transparency. They have to have a material using a custom shader. Two sample shaders that you can use are included in this project
OrderIndependentTransparency/Unlit
andOrderIndependentTransparency/Standard
. - Run your scene.
If you don't want to use the post-processing stack just skip the first step and instead add the component OrderIndependentTransparency
to a camera. Using this component transparent objects won't render in the editor scene view though.
Note that this project currently does not include implementations for the Universal Render-Pipeline and the High-Definition Render-Pipeline.