HASTE V115 BETA 18 - LIGHT FOG COLOUR MIXING FIX

Problem: where two differently coloured light fogs met they glitched, went pale or seemed to disappear.

Cause 1 (shadowcomp.csh): the light volume mixed colours by taking the maximum of each colour channel on its own.
A brighter light's red and green therefore flooded a dimmer light's cells: a soul torch next to a torch turned pale
lavender, and a light's own source cell was recoloured by its neighbour.
Fix: brightness still fades 1/15 per block (unchanged), but the hue is now a brightness-weighted blend
(softMix): each neighbour counts by (brightness / brightest)^2, and a cell's own emitter counts 12x
(EMITTER_HUE_WEIGHT) so a source keeps its colour. Colours cross-fade over about six blocks between two lights, so both coexist.

Cause 2 (lib/volumetric_fog.glsl): the beta 15 hand-made trilinear filtering only went into coloured_light.glsl;
the fog still used one hardware read. vfogLight now interpolates by hand too, so the glow cannot turn into blocky
one-block colour steps if the driver filters the volume NEAREST. Costs 8 reads per fog step instead of 1.

Checked: shadowcomp.csh and composite1.fsh (with the fog on) pass glslang. Not run in Minecraft; test in Iris on
the Ethereal preset with a torch and a soul torch a few blocks apart. If the colours blend too sharply or too
softly, adjust the exponent in softMix (the weight in softMix) and EMITTER_HUE_WEIGHT.

Bloom outline fix (final.fsh)
- The bloom blurred the light mask over the whole screen and added it on top, so lava glow was painted over blocks
  standing in front of it, which looked like a bright outline round their silhouettes.
- Each bloom tap that lands on a light now checks the depth buffer: if the light is farther away than the pixel
  being shaded, its glow is reduced there (smoothstep over 0.3-2.5 blocks of depth difference). Sky lights (sun, moon)
  are exempt so their glow still spills over trees and hills.
- New option BLOOM_OCCLUSION (Bloom Behind Blocks, default 1.0; 0 = old behaviour) in the Bloom menu.
- Depth is taken as the farthest of 5 reads around each tap, because the mip-filtered mask leaks past the light onto the foreground edge. Cost: 5 depth reads per bloom tap that lands on a light.
- final.fsh passes glslang. Not run in Minecraft.
- Fixed: in the Nether the bloom ignored Bloom Strength and always ran at Nether Bloom Strength, so setting Bloom
  Strength to 0 did not turn it off there. 0 now disables it in the Nether too.
- Fixed: the depth test used a fraction of the distance, so lava only a few blocks behind a pillar was barely
  counted as behind it. It now uses blocks (full effect from 2.5 blocks).
- Fixed: a thin dark line round glowing blocks (magma...). Depth for the occlusion test is now the depth of the
  pixels where the UN-filtered light mask is bright (the real light), not the farthest depth near the tap, which
  made a glowing block's own edge count as in front of the background and lose its glow.
- Fixed: dark outline just outside glowing blocks (magma, lava, lanterns). The "do not pile bloom on the emitter" rule
  read a blurred copy of the mask, so it also dimmed the glow in a ring a few pixels outside the light. It now uses
  the smaller of the blurred and raw mask, so there is no dimming outside the light itself.
