DAP SHADERS 7.0
===============
The lighting rebuild. Four things were structurally wrong with how light was
computed, and no amount of tone-curve tuning could have fixed any of them.

Also: all six Presets rebuilt with actual intent, and a Skyblock preset built for
how Hypixel SkyBlock is really laid out.


FIXED - ambient occlusion was darkening sunlight and emissive blocks
  The AO pass multiplied the entire finished pixel by the occlusion value: direct
  sunlight, glowstone, lava, beacon beams, everything.

  That is wrong twice over. Whether the sun reaches a surface is a question the
  shadow map has already answered - darkening lit ground again because a wall
  happens to be nearby just makes sunlit corners muddy. And an emissive block is a
  light SOURCE; glowstone was being dimmed by its own neighbours.

  Ambient occlusion means "how much surrounding sky and bounced light can reach
  this point". It now applies to the ambient term and nothing else. The gbuffer
  records what fraction of each pixel is ambient, and the AO pass scales by that.
  Measured: a pixel in full sun is 20% ambient, one in shade is 100%.

FIXED - the light-level quantiser was terracing every smooth surface
  The 16-step ladder was applied to ambient + block light + SUN. The sun term is
  continuous: it varies smoothly with surface angle, and since 6.5 it also varies
  smoothly through the soft shadow penumbra. Quantising that into 16 steps put
  visible terracing across every curved or angled surface, and cut hard rings
  through every soft shadow edge - undoing the contact-hardening shadows in the
  same frame they were computed.

  Vanilla's 16 light levels ARE the lightmap, which is genuinely discrete. Sun
  shading is not. The ladder now runs on the lightmap only.

  Measured on a 64-step sweep of the sun angle: 51 distinct brightnesses now,
  where the quantiser previously collapsed it to about 16. The requested 16 light
  levels are untouched - they were only ever meaningful on the lightmap anyway.

FIXED - ambient light had no direction at all
  It was one flat colour multiplied by the skylight value, so every face of every
  block received identical ambient. The underside of an overhang was lit exactly
  like the top of it. That single fact is the biggest reason the lighting read
  flat, and it could not be fixed downstream because the information was not there.

  Skylight is now hemispheric: a surface pointing up sees the sky (cool, bright),
  one pointing down sees the ground (warm, dim, and tinted by the sun colour it
  bounced off - so it goes orange at sunset along with everything else). There is
  also a ground-bounce term, the cheapest possible stand-in for global
  illumination, gated on sky access so it never leaks into caves.

FIXED - a torch lit every wall of a room identically
  Minecraft supplies block light as a single number with no direction, so it was
  added flat. Ceiling, floor and all four walls got the same value, which is why
  torch-lit interiors looked like flat cutouts.

  A true direction is not available, but two things are: light sources in
  Minecraft sit at or below eye level almost without exception, and the player is
  usually near the light they are carrying. Block light is now shaped by surface
  angle on that basis. It is an approximation and it is deliberately gentle - it
  only has to break the perfect uniformity, and the eye does the rest.


PRESETS - all six rebuilt
  They used to be a handful of brightness nudges. Each is now built around what
  the person picking it is actually doing.

  VANILLA    Not "a dimmer shader" - the goal is the game looking like the game,
             with better shadows. Every effect with no vanilla counterpart is
             switched OFF rather than turned down: subsurface scattering,
             specular, ground bounce, glare, rainbows, fireflies, aurora, ripples,
             parallax, star twinkle. Block light is flattened, because vanilla
             block light genuinely has no direction. The moon is always full,
             because vanilla lights every night the same regardless of the phase
             it draws. Reinhard tonemap for a flatter, less filmic curve.

  SKYBLOCK   See below - the biggest rebuild of the six.

  BEDWARS    Team colours are the information that wins games, so saturation and
             emissive strength are pushed hard: which wool that bridge is, and
             whose bed is under the glass, must read at distance and through
             glass. Nothing hides, nothing blurs, no glare across a fight.

  HOPLITE    Competitive clarity with a teal/orange grade. Keeps the PvP rules
             where they decide fights, allows the grade everywhere they do not.
             Specular stays on here on purpose: a highlight sliding across armour
             is a motion cue, not a distraction.

  MINEMEN    The most aggressive preset in the pack, and meant to be. Nothing may
             be dark - an opponent in shade must read like one in the open.
             Nothing may move that is not a player: waving foliage is the worst
             offender, because peripheral motion is exactly what you use to catch
             someone, and grass that sways constantly trains you to ignore it.
             Nothing may blur - depth of field, motion blur AND temporal AA are
             all off, leaving FXAA, which is free and non-temporal.
             Colour is MUTED, not boosted - the opposite of Bedwars, and
             deliberate: with no team colours to read, saturated terrain is just
             noise, and a drab world makes a moving skin stand out more.

  CINEMATIC  The other extreme. Everything that costs clarity and buys atmosphere
             is on: volumetric fog, clouds, depth of field, film grain, every
             surface-detail effect, wide soft shadows.


SKYBLOCK - built for how the game is actually laid out
  First, the honest part: a shaderpack receives NO server data. There is no access
  to Hypixel's mod API, no scoreboard, no area name. A shader cannot know it is in
  the Hub rather than the Barn, and any pack claiming per-island detection by name
  is not doing it from the shader.

  What the shader does get is enough for the cases that matter visually:
    * the dimension - the Crimson Isle IS the Nether and The End IS the End, so
      both get real per-area treatment through this pack's existing paths
    * the biome fog colour, which Hypixel does set per area
    * sky access at the eye, which cleanly separates the open island areas from
      the enclosed ones - Dwarven Mines, Crystal Hollows, the Deep Caverns,
      dungeon interiors

  Built on those:
    * Islands float in a void, so anything unlit is seen against empty sky and
      reads as a silhouette hole. Ambient is raised hard, ground bounce is up, and
      a light floor is set - the one preset where a minimum light above zero is
      right.
    * Distance fog hides the island you are trying to reach, so it is cut hard
      rather than reduced, and ground fog is off entirely - there is no ground for
      it to pool on, so it just hangs in mid-air.
    * Enormous amounts of SkyBlock happen in enclosed mining areas where block
      light is the ONLY light. Cave exposure and block light are both raised.
    * The Crimson Isle inherits this pack's Nether work - hue-only biome tint,
      thin fog - pushed thinner still, because it is a combat area where seeing
      mobs coming beats atmosphere.
    * Lamps, glowstone and beacons in builds get more emissive strength, and
      depth of field is force-disabled: never blur a build.


FIXED - the dots, properly this time
  5.5 fixed two causes of speckling near the sun (an undeclared buffer and an
  under-blurred bloom). It missed the general one.

  Six separate sampling loops - the shadow filter, ambient occlusion, reflections,
  the fog march, and two more - jittered their samples using a FIXED screen-space
  pattern. Because it never changed between frames, the sampling error never moved
  either: a stationary field of speckles locked to the same pixels. Temporal
  anti-aliasing cannot dissolve that, because averaging a value with itself
  changes nothing. Only the clouds got the animated version in 5.5.

  Adding contact-hardening shadows in 6.5 made it worse, by widening the exact
  penumbra region where the shadow dither is most visible.

  All six now advance by the golden ratio each frame, so the same pixel samples
  somewhere different every frame and the error averages out.

FIXED - the lines across the sky, which were never the clouds
  The sky's banding dither was ditherBayer, an ordered 8x8 matrix. On a large
  smooth gradient - a dawn sky being the worst case in the game - the matrix
  itself becomes visible as a regular cross-hatch.

  So the "weird lines throughout the screen" were being drawn by the sky
  underneath the clouds, not by the clouds. The 5.5 cloud fix was real, but it was
  fixing a different thing, which is why the lines survived it.

  Now a triangular-PDF hash: same dithering strength, no structure to see, same
  cost. ditherBayer is deprecated and used by nothing.

  Both of the above are now build-gated, and both checks were verified by
  reintroducing the exact regressions in a scratch copy.


REWRITTEN - the clouds are actually volumetric now
  The old ones sampled density from a 2D function of X and Z, then multiplied by a
  vertical shape curve. That is an EXTRUDED 2D SHAPE, not a volume: every
  horizontal slice through a cloud was identical, so a cloud had no inside. It read
  as a flat cut-out lit from one side, because that is what it was.

  Five things carry the look of good volumetric clouds, and all five were missing:

    3D NOISE           density varies with height as well as position, so clouds
                       have billowing tops, flatter bases and a real interior

    A COVERAGE MAP     a separate very-large-scale noise decides how cloudy each
                       region of sky is, giving open blue patches and dense banks
                       instead of one uniform layer of the same stuff everywhere

    DETAIL EROSION     high-frequency noise subtracted from EDGES only, where
                       density is already low, so cores stay solid while borders
                       tear into wisps. Eroding uniformly just makes clouds noisy;
                       this is most of what separates procedural from believable

    BEER-POWDER        Beer's law alone makes thin edges bright and thick cores
                       dark, which is backwards from how a cloud reads. The powder
                       term darkens the thin parts back down, and the combination
                       is the single biggest reason a cloud looks like it has an
                       inside

    FORWARD SCATTERING a Henyey-Greenstein phase, so light bends toward you near
                       the sun - the bright silver lining on a backlit cloud edge

  Self-shadowing now takes multiple taps toward the sun at increasing spacing
  (near ones matter most), and sky light fills the shadowed side from above.
  Everything scales with Cloud Quality, so the lower tiers stay affordable.


NEW SETTINGS
  Lighting > Ground Bounce          how much sunlight bounces off the ground
  Lighting > Torch Light Shaping    how much torch light varies with surface angle
                                    (0 restores the old flat behaviour)
  Sky & Weather > Cloud Wispiness   how much noise erodes cloud edges


FIXED IN REVIEW - four more, found by re-auditing this release before shipping

  THE PACK WOULD NOT HAVE COMPILED.
  When the lighting function gained two parameters, its float-shadow wrapper was
  left forwarding to a version that no longer existed. Both remaining callers -
  translucent entities and water - pass a float, so nothing would have built, for
  anyone. There is no GLSL compiler in this project's toolchain, so nothing caught
  it. Two new checks now do, and both were verified by reintroducing the exact bug
  in a scratch copy and confirming they fire.

  SPECULAR HIGHLIGHTS WERE BEING FLATTENED.
  The highlight was added before the light-level ceiling, so every sun glint on
  wet stone, ice and metal was clipped to the same 80% as the dull surface next to
  it - since 6.5, when specular was introduced. A highlight is a reflected image of
  the light source, not a lit surface, so it now goes after the ceiling, in the
  same category as an emissive block. Subsurface scattering stays inside the
  ceiling, because transmitted light through a leaf IS a surface property and a
  leaf that blows out to white looks wrong.

  AMBIENT OCCLUSION DID NOTHING IN THE NETHER OR THE END.
  Those dimensions never set the ambient fraction, so it stayed at the emissive
  default of zero and AO skipped them entirely. Exactly backwards: with no
  directional light to give surfaces shape, occlusion in the crevices is doing most
  of the work of making that terrain readable.

  THE VIEW DIRECTION WAS A CONSTANT.
  Torch-light shaping used a fixed forward vector instead of the real
  surface-to-eye direction. That is only correct for a point dead centre on screen
  and infinitely far away, and got progressively wrong toward the screen edges.


VERIFICATION
  Four build gates, all clean: 2397 menu/label/buffer checks, zero portability
  findings across 201 GLSL files, the preset and quality-ladder checks, and the
  light acceptance targets.

  Two new checks were added for this release, because the headline fixes needed to
  be provable rather than asserted:
    * a 64-sample sweep of the sun angle, which fails if the result collapses into
      steps - this is what would catch the terracing coming back
    * an ambient-fraction check, which fails if ambient occlusion starts reaching
      direct sunlight again

  A third guards the tooling itself: the Python model hardcodes several constants
  that also live in the GLSL, and if one moves and the other does not the model
  keeps reporting confident numbers about a shader that no longer exists. Those
  constants are now compared on every run.

  As always: none of this has been seen in game. The maths is checked and the
  numbers are measured; whether the hemispheric ambient and shaped torch light
  actually look right is a judgement only you can make. 6.5 remains in the outputs
  folder.

  Worth looking at first: the underside of an overhang versus its top, a torch-lit
  room's ceiling versus its floor, a curved or angled surface in sunlight (this is
  where the terracing was), and a sunlit corner where two walls meet (this is
  where AO was making things muddy).


   - DAPTIME
