The latest feature to be added to Caretaker was a kind of faux volumetric smoke cloud. This was something I've wanted to add from the complete beginning.
I had looked into more traditional volumetric techniques but they were either too expensive to implement or far too complicated. At one point I actually implemented a ray-marching shader that produced a fantastic volumetric cloud but as the game would run at 10 frames a second it wasn't appropriate

So I decided to implement it using static particles and find ways to cope with the issues they come up with.
This is what the end result looks like:


Getting to those images too hours - not because it's a hard thing to do but because the Unity 5 docs are out of date and just plain wrong.
The first problem is implementing soft particles. Soft particles are great because they fade out any edges that happen to be intersecting with any other surfaces. If you don't implement them you get stuff that looks like this:

See the hard edges where the particle intersects with the other geometry? It might look fine in a static image to a degree but when you are flying through all you can see is the intersections and it really detracts from the experience so soft particles it had to be. This should have been easy.
What I didn't know was that Unity changed the way to access the camera depth texture in Unity 5 but the docs still reflected the way you used to it in Unity 4.x. So I spent a couple of hours trying to figure out why none on my geometry was appearing in the depth texture. The big problem is that I use custom shaders (written by me) for everything - so there are no standard unity supplied shaders in the game.
Whereas Unity 4.x used a shader replacement method to generate the depth texture Unity 5.x uses the shadow caster pass of the shader framework to generate it. This is a massive difference and since none of my shaders implemented a shadow caster pass they weren't turning up in the depth texture.
Thankfully, once I figured out this was the issue making my shaders hook into the shadow caster pass was simple. All it took was adding this pass into each of the shaders:
Pass {
Name "ShadowCaster"
Tags { "LightMode" = "ShadowCaster" }
ZWrite On ZTest LEqual
CGPROGRAM
#pragma target 3.0
// TEMPORARY: GLES2.0 temporarily disabled to prevent errors spam on devices without textureCubeLodEXT
#pragma exclude_renderers gles
// -------------------------------------
#pragma multi_compile_shadowcaster
#pragma vertex vertShadowCaster
#pragma fragment fragShadowCaster
#include "UnityStandardShadow.cginc"
ENDCG
}
All of a sudden my geometry was writing to the camera depth texture and my soft particles were working


The next issue was the layer popping issue you get when flying through particles. It happens because one moment you are looking through a particle and the next, as you've flown through it - you're not and everything just 'pops'. This was easy to fix - all I had to do was let the shader for the particle know where the player position was and within 10 units distance fade it to completely transparent. This way as you approach the particle they simply fade to nothing - no more popping.
The end result is a smooth faux volumetric cloud system that behaves really smoothly in the world.