Ever since I first wrote about creating outlines in Unreal Engine 4 I’ve wondered if it was possible to render them as soft outlines instead of harsh binary lines much like you would see in games like Left 4 Dead or CS:GO as seen below.
Recently I did a quick experiment using a modified version of SpiralBlur, a node that’s available in Unreal Engine 4, and is using some custom shader code. Here is the result I got:
Looks pretty good! The effect is a little more expensive than the binary outlines since we do several steps in the SpiralBlur node to get to look decently smooth. Later in this post I will talk about performance. The final image shows an extreme setup with high Distance param so show the fade-off more clearly.
The Material Graph
Unfortunately I couldn’t find any official UE4 documentation on the Spiral Blur node. The built-in implementation takes the scene textures and over several iterations creates….a spiral blur. The default settings are at about 128 iterations, which is pretty hefty! I’ve used this node as a reference to create my own which samples the Custom Depth buffer instead of the scene color.
The node graph for it is reasonably simple and most of the logic happens inside the custom node which I added as a code sample below.
Performance was recorded on a 850M mobile GPU at 1280×720 with ~1.5ms measured and on my GTX 980 Ti it runs at 1920×1080 with 0.8ms for the post process material. It’s heavily depending on the amount of iterations in the spiral blur. You will want to keep the DistanceSteps and RadialSteps as low as possible while maintaining a smooth edge. In the demo I settled on 4 DistanceSteps and 8 RadialSteps which is 32 iterations.
To conclude, the answer is yes! It’s entirely possible to make this work. I imagine there may be more efficient ways of blurring the custom depth buffer to get similar results, I simply leveraged the available shader code to quickly get to a proof of concept. It’s important to note that being far away from the object with an outline can make it look slightly less smooth, a thinner outline helps and is a matter of tweaking.