What appears to be happening is something on the fire particles is writing to the depth buffer. Generally speaking you want to be very careful when you have transparent objects write to the depth buffer as it means any transparent objects that render afterwards can get depth rejected, which is what’s happening with your fog particles. Because the fog is a large particle system it’s having a hard time sorting properly. Exact transparent sorting for real time rendering is an unsolved problem, so instead it’s approximated with what’s known as Painter’s Algorithm. That is objects that are further away are rendered first, then closer objects are rendered on top of them. As long as transparent objects don’t intersect, this works pretty well. Unfortunately when you have a single particle system that covers a large area, the entire particle system is treated as a single “object” and is sorted as such rather than each particle being sorted individually against other transparent objects in the scene.
You may want to break up your ground fog into smaller parts so they can sort more easily, though that won’t solve the issue entirely. As I said, this is an unsolved problem for real time rendering as a whole, not just a Unity thing.
As for what is writing to the depth buffer I couldn’t say from the screenshots or information you’ve provided. The legacy additive particle doesn’t write to the depth, so unless it’s been replaced in your project with an identically named shader that has ZWrite On, it’s not that. So either some script is adding another material to your particle effects, or there’s another particle system that happens to be placed in the same position as your fire that is using a transparent material that’s writing to the depth buffer.
There’s a few things I would try:
Does modifying the size of the fire or smoke particles while the scene is running have an effect on the size of the area being blocked? If not, then it’s not actually those particles and it’s something else in the scene that shouldn’t be there.
If changing the size of the particles does affect those, then make sure you don’t have any scripts that are modifying the .materials or .sharedMaterials on the particle system renderer to add an extra pass. You can search your scripts, or you can try using the Frame Debugger window to step through the rendering and see if the fire particles show up twice, perhaps with one of those times seemingly nothing rendering. Or you can write a script to print out the .sharedMaterials at runtime. The UI does not support showing more than one material per particle system renderer, but you can do that from script, hence why I bring it up.
Lastly, I’d see if there’s a duplicate shader with the same name in your project. You can easily test this if you click on the “Edit…” button next to the shader name on the material. If nothing happens, it’s using the built in shader. If it opens up a new window with the shader code in it, then you have a shader in your project with the same name (the part in quotes at the start of the file after Shader), and which likely has ZWrite On somewhere within the text or the ZWrite Off line removed. If this is the case, then you’ll either need to remove this shader or rename it, depending of what it was being used for, and reassign the real additive particle shader to your particle materials.
For reference, this is what the additive shader should look like:
https://github.com/TwoTailsGames/Unity-Built-in-Shaders/blob/master/DefaultResourcesExtra/Particle Add.shader