Vanilla Plus Particles
Acknowledgement
Huge shout out to Hit for making me do this one, and test it on his particles.
Description
Vanilla Plus Particles is a xNVSE plugin and a shader replacer that improves particle shading by using what is called "soft particles". Enables mesh authors to flag BSShaderNoLightingProperty with the "Unknown9" shader flag to utilize a similar effect on any no lighting geometry.
Soft particles is a concept that basically translates to softening the alpha of particles at depth intersections - i.e. where particles touch other geometry, such as the terrain. Particles are often very close to other geometry. Because they are basically just 2D sprites, when they intersect something else you get a harsh line that is very hard to unsee once you spot it. The same applies to billboarded effects (such as sandstorms).
This is quite an easy problem to solve, provided you have the depth buffer ready to sample. This unfortunately wasn't really the case in vanilla FNV. I have fixed that (see the Depth Resolve - NVSE dependency). The principle utilized is then very simple, you check how far away the rendered sprite/billboard pixel is from the depth in the depth buffer, and if it's close enough, you modify the resulting alpha in a way that creates a satisfying fade.
This not only gets rid of the harsh intersections, but also makes the particles look almost volumetric. I admit I did not expect liking this so much, but the resulting effect is actually so nice that I could not imagine playing without it. Especially since there is basically no downside - from my measurements, the performance was basically the same if not slightly better.
Note: This works automatically for all particles, other geometries (such as the duststorms) will have to be edited. I have uploaded some meshes which I have edited myself (all the sand/dust storms I have found) as an optional file.
Note for mesh authors
As noted in the description, this effect is typically used for particles, but I have also made sure that it can be applied to any geometry that uses the NoLighting shader. Enabling this effect is as simple as adding the "Unknown9" shader flag to the geometry in question. The softness depends on two factors - the "size" of the geometry, and a scaling factor which I defaulted to 0.25 (or 25%).
For particles, the size is calculated automatically. For other geometries, the world bound is used. This can be less than ideal if the bound is large. Therefore, the scaling factor exists and is in fact configurable on a per geometry basis. Just add a NiFloatExtraData to the node, use the name VPSoftScale, and assign a value which you will find the most pleasing (unfortunately this will require checking in game, NifSkope does not support this). By the way, this can also be used for particles if the default scaling is not to your liking.
For an example on how to add the effect to a mesh, see the optional Vanilla Plus Particles - Meshes download.
Requirements
Installation
Install as normal. Load after LOD Flicker Fix - NVSE to override its shaders.
Source Code
Instructions
Override LOD Flicker Fix.
Requirements
Vanilla Plus Particles
Main file: Override LOD Flicker Fix.
Vanilla Plus Particles - Meshes
Optional file: Contains NoLighting meshes edited to use the soft effect.