# CinematicVanilla — Changelog

## V4.0.0

### Critical fixes (V3 could not compile as shipped)
V3 referenced several functions in the render pipeline that were never
actually defined anywhere in the codebase. These are fixed in V4:

- `getSkyBasic()`, `getFullSkyRender()`, `getSkyFogRender()` — called from
  `deferred1.glsl` and `composite.glsl` to build the skybox and sky-fog
  color, but not defined anywhere in V3. Implemented in `skyRender.glsl`,
  assembled from the Rayleigh sky / horizon glow / mie scatter pieces that
  already existed.
- `getSkyReflection()` — used as the SSR fallback color when a
  screen-space reflection ray misses geometry (3 call sites in
  `complexShadingDeferred.glsl`). Not defined anywhere in V3. Implemented.
- `sunMoonIntensitySqrd` / `skyBoxIntensitySqrd` — referenced in
  `gbuffers_skytextured.glsl` and `GGX.glsl` but never declared anywhere.
  Now derived as constants in `settings.glsl` from the existing
  `SUN_MOON_INTENSITY` / `SKYBOX_BRIGHTNESS` settings.
- **Stars were dead code.** `getStarField()` existed in `skyRender.glsl`
  but was never called from anywhere in the pipeline — stars did not
  render in V3 regardless of settings. Wired in via `getFullSkyRender()`.
- Removed `lib/utility/celestialFunctions.glsl` — marked
  `/* Unused, needs to be worked on */` in the source, never `#include`d
  anywhere, and contained the same function signature
  (`getCelestialPos(vec3)`) defined three times, which would fail to
  compile if it were ever wired in.

### Visual — Sky & Stars
- Stars now render, with twinkle animation (per-star phase offset so they
  don't flicker in sync), two density layers (sparse bright + denser dim
  stars), and warm/cool color variance instead of flat white.
- Added an optional Milky Way band (`MILKY_WAY` toggle,
  `MILKY_WAY_STRENGTH`).
- Added procedural shooting stars (`SHOOTING_STARS` toggle) — cheap,
  fully derived from `fragmentFrameTime`, no persistent state.
- The End now shows a dense, static starfield in the void (was previously
  disabled there via `WORLD_STARS` being commented out).

### Performance
- Added `VERY_LOW` and `ULTRA` quality presets to `shaders.properties`,
  alongside the existing `LOW` / `MEDIUM` / `HIGH` / `POSTER`.
  `VERY_LOW` drops shadow mapping resolution further, disables the new
  star extras, and forces FXAA over TAA. `ULTRA` raises every step count
  (shadow resolution, ray-tracer steps, cloud steps, contact-shadow
  steps) for high-end GPUs.

### New settings
- `STAR_BRIGHTNESS`, `MILKY_WAY`, `MILKY_WAY_STRENGTH`, `SHOOTING_STARS`
- `WIND_STRENGTH` — overall wind sway amplitude, separate from
  `WIND_SPEED`/`WIND_FREQUENCY` (pacing). Wired into both terrain wind
  (`waveTerrain.glsl`) and weather/rain sway (`weatherWave.glsl`).
- `FOG_QUALITY` (0/1/2) — quality 2 layers in a cheap secondary
  noise-driven ground mist band on top of the existing exponential fog.

### Code quality
- Fixed file-header version labels (V2 → V4) on the files touched above.
- Removed one dead/broken file (`celestialFunctions.glsl`).

---

## Known limitations carried into V4 (not yet addressed)
- Full water/lighting/cloud visual overhaul from the original upgrade
  brief (softer sunlight curve, animated wave detail pass, underwater
  caustics rework, Nether atmosphere pass) has not been done yet — this
  release focused on making the pipeline actually compile and run, plus
  the sky/star work, presets, and settings above.
- `WORLD_STARS` macro (per-dimension, in `world*.glsl`) references
  `dayCycle` in its expression for the Overworld/Nether. If a dimension
  ever sets `FORCE_DISABLE_DAY_CYCLE` while keeping `WORLD_STARS` as a
  `dayCycle`-based expression (rather than a constant, as the End now
  uses), that would fail to compile. Not a new issue introduced in V4 —
  flagging so it isn't rediscovered as a mystery bug later.
- The shader's root license header (retained in individual `.glsl`
  files) still credits "Super Duper Vanilla" / Eldeston / FlameRender
  Studios as the base this was built from. No `LICENSE` file ships with
  this project. Before redistributing CinematicVanilla V4 under its own
  name, confirm the original base's license actually permits rebranding
  and redistribution — that's a licensing question for you to resolve,
  not something this upgrade pass can determine.

## V3
- Poster Mode + seasonal color grade presets (see prior in-file comments
  for detail; no changelog was kept prior to V4).
