DANIR ULTIMATE SHADER — BUILD VALIDATION
========================================

Static validation completed 2026-08-01:
- 30 vertex/fragment program pairs found per pipeline.
- Root, Overworld, Nether and End pipelines each contain all 30 pairs.
- Every root and dimension shader starts with #version 330 compatibility.
- Every #include resolves inside shaders/.
- Every vertex and fragment file compiled after include expansion with
  Khronos glslangValidator 11.7.0.
- Every matching vertex/fragment pair linked successfully.
- Matrix total: 720 shader stages compiled and 360 vertex/fragment pairs linked.
- LOW configuration compiled with shadows/reflections/Sun glow/bloom disabled.
- High-cost configuration compiled with 25-tap shadows, 20-step clouds,
  maximum safe Sun glow and high water.
- DEBUG_VIEW values 0 through 9 each compiled.
- Render-target declarations match fragment outputs.
- No TODO, placeholder or incomplete required shader file remains.
- Buffer-format directives are kept in an Iris-readable block comment, so
  RGBA16F/RGBA8 never reach the NVIDIA GLSL compiler as undefined identifiers.
- Validation runs without artificial RGBA16F/RGBA8 preprocessor definitions.
- No vertex path calls ftransform(); this avoids the Iris LINES patcher's
  simultaneous use of the builtin gl_Vertex and bound iris_Position attributes.
- dimension.properties explicitly maps minecraft:overworld,
  minecraft:the_nether and minecraft:the_end to separately compiled pipelines.
- Celestial discs, spherical star points, night visibility, End atmosphere and
  reshaped cloud branches all compile in every dimension pipeline.
- Water depth rejection, ray-distance absorption, straight/premultiplied alpha
  conversion and 6/12/20-step volumetric cloud branches compile in every pipeline.
- Beacon-beam geometry remains intentionally discarded before HDR/bloom, and
  the world-border stage remains filtered independently.
- A CPU mirror of the cloud density/intersection equations was rendered from
  below and above the 72-block layer to verify separated billowing silhouettes
  and terrain-facing cloud coverage before packaging.
- Day-gated cloud visibility and the cloud-free night fast path compile for all
  quality levels; the Milky Way band, dust, core and clustered-star branches
  compile in the root and all explicit dimension pipelines.
- A CPU mirror of the Milky Way equations was rendered to confirm a clearly
  visible diagonal stellar band, blue-violet structure and broken dark dust lane.
- The root, Overworld, Nether and End gbuffers_textured programs compile and
  link with the renderStage uniform and MC_RENDER_STAGE_WORLD_BORDER filter.
  Only the border stage is discarded, so ordinary textured particles still use
  their existing path.
- The border shader also compiles when an external test value overrides
  MC_RENDER_STAGE_WORLD_BORDER, confirming the standalone fallback cannot mask
  the macro value injected by Iris at runtime.
- Beacon-beam vertex and fragment programs now contain independent early-kill
  paths in every dimension; shaders.properties additionally disables both its
  colour contribution and depth writes.
- No composite pipeline contains the former projectedSun/rayStep depth-marching
  code. The replacement Sun glow is explicitly gated by empty sky depth.
- All four composite pipelines use getDimensionFogSkyBase for terrain fog. No
  flattened horizon direction is passed to getDimensionSkyBase anymore.
- The fog-sky function excludes HDR Sun/Moon discs and stars and bounds the
  Overworld atmosphere to 1.35 before fog blending.
- A CPU mirror reproduced the old defect across every row of a synthetic frame:
  flattening the direction made the HDR Sun disc a full-height strip. Replacing
  the full celestial sky with the atmosphere-only fog function removed it.
- All root and dimension gbuffers_hand programs write a dedicated alpha mask to
  the otherwise-unused normal-buffer channel. Every deferred pipeline consumes
  that mask to bypass invalid world shadows and wet specular for first-person
  geometry without adding a constant brightness floor.
- Every gbuffers_hand_water pipeline compiles without its former neutral light
  floor; translucent held geometry now retains only sampled lightmap lighting.
- Numeric checks of representative dark linear albedos confirm the new contrast
  S-curve remains continuous and does not clip nonzero shaded texels to black.
- Deep-shadow chroma control and the low-light readability lift compile in all
  three profile configurations without affecting the empty-sky early return.
- Iris camera medium 3 is handled explicitly as powdered snow in both fog amount
  and fog colour. A CPU mirror verifies a minimum 86% occlusion, 88.9% at one
  block and 98.8% at two blocks, including nearby hand geometry.
- The powdered-snow linear fog colour produces approximately sRGB
  (0.615, 0.699, 0.744) after the final ACES/contrast/gamma pipeline, matching
  the pale blue-grey vanilla reference instead of exposing terrain through snow.
- Representative full-skylight moon illumination falls from approximately
  (0.365, 0.407, 0.507) to (0.220, 0.258, 0.344), while the non-clipping contrast
  curve and reduced readability lift preserve texture detail in dark blocks.
- The water reflection path contains no getDimensionSkyBase call. It uses the
  bounded atmosphere-only function, so HDR Sun/Moon discs, stars and the Milky
  Way cannot enter water reflection before the dedicated specular calculation.
- With default WATER_TRANSPARENCY=0.62, a CPU mirror verifies water opacity of
  57.9% at zero measured depth, 68.0% at one block, 84.7% at four blocks and
  95.0% at deep-water convergence; the former shallow value was 24.4%.
- The explicit Sun glint is horizon-gated, noise-broken and capped per channel
  at linear (0.68, 0.56, 0.38), below the previous unbounded double-Sun path.
- A CPU mirror of the new galactic plane verifies a narrow tilted great-circle
  arc, fine stellar mottling and one continuous warped dust lane instead of
  low-frequency purple blobs and round holes.
- Version 1.0.13 restores the complete getMilkyWay function from 1.0.11; a
  source diff confirms that only explanatory comments differ from that build.
- shaders.properties explicitly disables blending for gbuffers_hand, and the
  shared opaque G-buffer fragment path forces every accepted PROGRAM_HAND base
  texel to alpha 1.0. Thus destination/world colour cannot enter solid hand
  albedo even when a custom skin stores partial alpha in its base layer.
- gbuffers_hand_water remains a separate post-deferred forward pass and retains
  alpha for genuinely translucent held-object geometry.
- No deferred copy contains handFill or the former hand-only stableLift term,
  and the forward hand path contains no fixed vec3(0.34, 0.35, 0.38) floor.
  A sealed zero-sky/zero-block-light case therefore uses the same cave ambient
  and low-light readability path as nearby world blocks instead of a 0.32-0.52
  hand/item multiplier.
- Unique IDs 10004/10005/10006 resolve beacon, End portal/gateway and Nether
  portal separately. Opaque, forward and translucent-terrain portal branches
  compile with the shared animated HDR portal material.
- A CPU mirror of the portal equations was rendered over a 3x3-block area to
  verify visible blue/violet nebula separation, dark dust structure and dozens
  of colour-varied stars instead of a black or flat-colour surface.

This implementation is logically checked, but it still needs testing inside
Minecraft with the specified Iris version.

Final quality review
--------------------
1. Iris load structure: yes; ZIP root contains shaders/.
2. Required files: yes; base/fallback geometry, shadow, deferred, composite,
   bloom and final programs are present.
3. Vertex/fragment interfaces: linked successfully for all 30 pairs in the
   root fallback and each of the three vanilla dimension pipelines.
4. Include references: all resolved.
5. Settings definitions: present in lib/settings.glsl and organized by
   shaders.properties with five profiles.
6. Disabled effects: bloom passes are program-gated; Sun glow, reflections,
   waves and shadows use compile-time exclusion.
7. NaN/infinity risk: risky normalization, division, depth and tone-map values
   use epsilon guards, clamps or safe fallbacks.
8. Dimensions: explicitly mapped and compile-time separated; the root fallback
   also checks hasSkylight/hasCeiling and finite cloud height.
9. Texture preservation: atlas sample, vertex colour and biome tint retained.
10. Transparency: water/weather/translucent programs use forward paths.
11. Shadow bias: slope-aware bias plus bounded shadow UV.
12. Bloom: thresholded, half resolution, two-pass blur, final controlled mix.
13. Tone mapping: one final tone map and one final linear-to-sRGB conversion.
14. Water stability: world-position waves, opaque-depth rejection, camera-ray
    thickness, bounded absorption and safe normals.
15. Preset differentiation: shadow/cloud/ray/water/bloom costs differ.
16. LOW cost: no clouds, Sun glow, sky reflection or bloom; 4-tap shadows.
17. Complete files: yes.
18. Unsupported assumptions: no compute, SSBO, external texture or OptiFine-only
   requirement; only documented Iris/OptiFine shaderpack programs and uniforms.
19. Remaining uncertainty: actual driver/Iris-patched runtime behaviour and
   visual tuning cannot be proven without launching the target game build.
20. Debugging process: nine debug views and a full README troubleshooting list.
