Lost Signal - custom Iris shaderpack
====================================

WHAT THIS IS
An original VHS-style post-processing shader -- YIQ color-space chroma
compression, luminance/chroma noise, post-sharpening, interlacing, tape
wobble, a warm tint, vignette, and a head-switching artifact at the
bottom of frame.

This does NOT contain any of MC VHS's original code (it's ARR licensed).
Clean-room re-implementation targeting GLSL 120.

VISUALS (latest pass)
  - Surface Darkness: new slider that dims overworld/sky-lit areas
    (day and night both), per feedback that the surface felt too
    bright compared to the cave atmosphere. Doesn't touch caves/
    indoors, which are already governed by torches and Pure Darkness.
  - Fixed broken lighting on entities/mobs -- previously entities only
    got proper relighting via Iris's fallback chain from
    gbuffers_textured_lit, which apparently wasn't happening reliably
    and caused dark/wrong shading ("shadows on entities"). Now
    explicitly overridden with its own gbuffers_entities program so
    there's no ambiguity.
  - Fog is now fully configurable instead of hardcoded -- new Fog
    screen with an on/off toggle, Fog Density, and Ground Mist
    Strength sliders. Every profile also tunes these together with
    everything else, same as before.
  - The flashlight-near-a-placed-torch issue should already be covered
    by the recent Auto-Dim tightening (only shows full brightness in
    actually-dark areas now) -- test it and let me know if it's still
    happening specifically near placed torches, since that's a
    slightly different scenario than what I originally fixed it for.
  - Removed the dust motes effect -- didn't land well visually.
  - Lit ground fog: a low mist near the floor now becomes visible
    specifically where the flashlight beam is shining on it, like the
    light is scattering through mist at your feet. Different from the
    general darkening fog -- this one only shows up in the beam.
  - Auto-Dim is stricter now -- the flashlight only shows at full
    strength in areas that are actually dark, not just moderately dim
    ones you're still in range of some other light source.
  - The flashlight now flickers briefly when switching on or off,
    like an old torch/lantern catching or dying out, instead of an
    instant cut. Uses the same flicker system as everything else.
  - Flashlight is brighter again now that fog isn't fighting it as much
    (2.2 -> 2.6 base intensity) -- fog is still there, just not
    drowning out what the beam lights up.
  - Lightning flash during thunderstorms -- triggers on an actual
    lightning bolt rendering (using Iris's real lightningBoltPosition
    uniform, not a faked random chance), brighter the closer the bolt
    struck.
  - Fixed the flashlight being hard to see through ground fog -- the
    beam now cuts through the mist where it's actually shining, and
    base ground mist strength was reduced a bit too.
  - Battery drain: the flashlight flickers more after 5-10 minutes of
    continuous use, cuts out entirely for a few seconds around 10-15
    minutes, then recovers and the 15-minute cycle repeats. Toggle in
    Flashlight settings.
  - Two new profiles: NoVHS (turns off everything specifically
    simulating a VHS tape -- grain, scanlines, interlacing, color
    bleed, warm tint, wobble, head-switch artifact -- while leaving
    flashlight/fog/panic/rain/fear alone) and Horror (pushes everything
    further than Intense for maximum atmosphere).
  - Removed tracking glitch bands entirely (no more sudden noise burst
    or horizontal jump) -- wasn't wanted anymore.
  - Flashlight brightness is now fixed at the old "Intense" level on
    every profile, instead of being dimmer on Default/Light -- so you
    get the good beam without needing to switch profiles for it.
  - Flashlight reach bumped from 4 to 6 blocks (4 felt too short).
  - Rain Blur now shows actual droplets sliding down the glass at
    different speeds -- the screen is split into vertical columns, each
    scrolling downward at its own random rate, with a slight refraction
    bend and a small glint on each droplet's body -- instead of one
    uniform blur. A light overall softening is layered underneath for
    the "damp lens" feel.
  - Removed the whole-frame vertical roll (it read as the screen
    splitting apart rather than authentic VHS tracking loss) and the
    red/blue channel split during glitch bands (too much like generic
    glitch-art chromatic aberration, not what MC VHS actually does).
    Replaced both with a burst of extra grain during glitch bands
    instead, consistent with the noise/YIQ-based approach the rest of
    this shader already uses.
  - Flashlight now falls off more like a real light (proper
    inverse-square-style curve) instead of a somewhat arbitrary mix.
  - Fog now includes ground-hugging mist near your feet (relative to
    your own eye height, so it works everywhere without needing to
    know the actual floor height) with a slow drift so it doesn't feel
    static, on top of the existing distance fog.
  - Flashlight beam now has a real hotspot-and-corona shape instead of a
    flat uniform disc -- bright crisp-white center fading to a warmer,
    softer edge, like an actual flashlight instead of a glowing blob.
    There's also a small dark dot right at dead-center now, surrounded
    by the bright ring, plus a second wider dark ring further out
    between the hotspot and the edge -- the layered, faceted-reflector
    look real flashlights have instead of one smooth fade.
  - The VHS interlace/scanline flicker is now dampened specifically
    inside the beam, so the flashlight reads as a steady light source
    instead of flickering along with the tape artifacts.
  - Distance fog -- things get swallowed by dark/mist as they get
    farther away instead of a bright hazy overlay, fitting the horror
    tone. Shifts from near-black at night to a dim grey-blue mist by
    day. Not exposed as a setting.
  - Cheap bloom on bright highlights (torches, lava, the flashlight
    beam) -- reuses samples already being fetched elsewhere, so it
    costs nothing extra.
  - Grain is now heavier in shadows and lighter in bright areas, like
    real film stock, instead of a flat amount everywhere.
  - A cool-shadow/warm-highlight color grade for a more filmic look.

FLASHLIGHT (real dynamic lighting)
Hold a torch, lantern, or any light-emitting item in either hand. It
relights raw block texture color directly (not just brightening the
already-lit image), so it reveals detail in pitch-black areas. Reach is
fixed at 6 blocks for both torch and lantern. Brightness is fixed too --
same beam strength no matter which profile you're on, so you're not
stuck putting it on Intense just to get a decent flashlight.

Dialed back for horror: the beam is dimmer and narrower than the very
first version (tighter cone) instead of feeling like a floodlight -- it
should feel less reassuring and more like a weak light source barely
holding back the dark. Auto-Dim now cuts to a true hard zero once
you're somewhere lit, rather than a faint reduction that got lost once
the image was already bright.

Flicker on Hit: if it seemed to trigger randomly with nothing hitting
you, check the "Flicker Test Chance" slider (Flashlight screen) -- it's
meant for testing and defaults to 0%, but if you'd previously turned it
up to test, it stays at that value until changed back (switching
profiles now resets it to 0 automatically as of this version).

DARKNESS
Nights and unlit areas can be true pitch black (no ambient light at
all) or just dim but visible -- controlled by the "Pure Darkness"
toggle in Visuals. It's automatically ON for Medium/Intense profiles
and OFF for Default/Light, but you can override it by hand regardless
of which profile you're on. This now also steepens how quickly light
falls off around torches/lanterns, so it actually makes a visible
difference in caves and indoors, not just outdoor nights (which is all
it affected before). This is a visual approximation of the "True
Darkness" mod's look -- can't literally hook into that mod since
shaders and mods are separate systems.

PANIC (optional)
When your health is low, or you're sprinting through the dark with no
torch/lantern in hand, the screen shakes and blurs a bit to sell the
panic. Fully optional. Settings: master on/off, screen shake on/off,
motion blur on/off, and blur intensity.

RAIN BLUR (optional)
Briefly blurs the camera like water hitting a lens when it starts
raining -- and only while you're actually under open sky. It now
automatically turns off once you go indoors or underground, and the
blur is guaranteed to fade out on its own (8-15s) even if it keeps
raining the whole time, instead of staying on indefinitely.

FEAR PULSE (optional)
At low health, the corners of the screen pulse red in rhythm with a
heartbeat. Minecraft already plays its own heartbeat sound at low
health -- a shader can't add new sounds, so this just adds a matching
visual alongside it. Settings: on/off and intensity.

SETTINGS
1. Select LostSignal in Video Settings -> Shader Packs.
2. Tap the gear/wrench icon next to the shaderpack name.
3. Top screen: Profile[Default/Light/Medium/Intense/NoVHS/Horror] plus five buttons:
   "Flashlight", "Visuals", "Advanced", "Panic", "Rain", "Fear".
4. Profile scales every OTHER effect together -- Default is the normal
   look, and each step up (Light -> Medium -> Intense) turns vignette,
   grain, scanlines, interlacing, sharpening, color bleed, warm tint,
   tape wobble, panic blur, rain blur, and fear pulse all up a notch.
   Flashlight brightness/reach stay fixed regardless of profile. Fine-
   tune individual settings below if you want something in between.
5. Flashlight screen: Flicker on Hit (on/off, disable for
   photosensitivity), Flicker Duration, Flicker Strength, Flicker Test
   Chance (0% = normal, crank it up to test the effect), Auto-Dim in
   Light.
6. Visuals screen: Vignette, Grain, Scanlines, Interlacing, Pure
   Darkness (on/off, overrides the per-profile default).
7. Advanced screen: Sharpening, Color Bleed, Warm Tint, Tape Wobble.
8. Panic screen: Panic (master on/off), Screen Shake, Motion Blur,
   Panic Blur Intensity.
9. Rain screen: Rain Blur (on/off), Rain Blur Duration, Rain Blur
   Strength.
10. Fear screen: Fear Pulse (on/off), Fear Pulse Intensity.

After changing anything, back all the way out of the options screen so
it actually recompiles -- staying on the same screen can make it look
like nothing changed.

INSTALL
1. Do NOT extract this zip.
2. Drop LostSignal.zip directly into: .minecraft/shaderpacks/
3. In-game: Video Settings -> Shader Packs -> select "LostSignal"

If it doesn't show up in the list at all, the issue is Iris/Sodium not
loading -- check your mods folder for iris-fabric-*.jar and
sodium-fabric-*.jar matching your MC version.

PERFORMANCE NOTE
Trimmed the per-pixel cost this update, ahead of you updating to a new
version:
  - Chroma blur went from 9 texture taps to 5, reusing the center
    sample instead of computing it twice (this loop was the single
    biggest cost per pixel).
  - Flashlight math (view-space reconstruction + cone calculation) now
    only runs at all when you're actually holding a light source,
    instead of running every frame and being discarded.
  - Panic motion blur and Rain Blur both went from 4 extra samples down
    to 2 each.
  - Added a cheap color-grade pass (cool shadows/warm highlights) that
    costs nothing extra, since it's pure math with no new texture reads.
  - Found and fixed a small bug: Rain Blur was doing an extra texture
    fetch every single frame to check sky exposure, even on completely
    clear days when it was never going to trigger anything. It now only
    does that check when it's actually raining.

Panic and Rain Blur still sample the scene a couple of extra times when
actively triggered, on top of the relighting pass added for the
flashlight -- if FPS still isn't where you want it, disable Panic/Rain
Blur individually to see which costs more, and let me know.

Heads up: adding fog meant the view-space reconstruction (the thing the
flashlight-skip optimization above avoided) now has to run every frame
again regardless of whether you're holding a light, since fog needs
distance too. It's one matrix multiply + one depth read per pixel, so
it's a small, known cost -- if you'd rather drop fog for a bit more
headroom, say so and I'll make it conditional or remove it.

REMAINING TUNABLES (edit shaders/composite.fsh directly)
  nightSkyMul / nightFloor / blockLightCurve (darkness look, set
  automatically by PURE_DARKNESS but editable directly),
  FLASHLIGHT_RANGE / INNER_CONE / OUTER_CONE / MASK_CAP / INTENSITY
  (beam shape and brightness -- fixed at 6 blocks / same on every
  profile, not exposed as settings)

Hit the in-game shader reload key (default R) after editing to see
changes live.

IF IT CRASHES OR LOOKS WRONG ON YOUR LTW RENDERER
I can't compile-test this on your actual device. If you get a black
screen or crash, check the Iris log for a compile error and send me the
exact line/file it names -- that pinpoints the fix fast.

HEADS UP: LIGHTNING FLASH
The flash itself is guaranteed to work (it reads a real, standard Iris
uniform directly). I'm less certain about the smoothed fade-out on top
of it, since I'm not 100% sure the custom-uniform system supports the
swizzle syntax I used -- worst case, you still get the flash, just
snappier/shorter than intended instead of fading out. Let me know how
it looks and I can adjust.

HEADS UP: FLASHLIGHT ON/OFF FLICKER
This one relies on feeding an int uniform (your held light level)
directly into the custom-uniform smoothing system, which I haven't
been able to fully confirm is supported the same way floats are. If
you don't notice any flicker at all when switching the flashlight on
or off, this is the first thing to suspect -- tell me and I'll adjust
the approach.
