### Автоэкспозиция
- Прежняя переходная адаптация по `eyeBrightness` заменена настоящим центровзвешенным замером HDR-сцены с устойчивым логарифмическим средним. Отдельный экранный множитель `eyeBrightnessSmooth` удалён, чтобы два контроллера яркости не спорили при ходьбе.
- `colortex5.a` хранит логарифмическую яркость каждого пикселя, а mip-пирамида превращает её в плотный пространственный замер. Двухпроходное ограничение выбросов не даёт яркому окну, солнцу или почти чёрной области управлять всем изображением.
- Добавлена гибридная временная адаптация в EV: крупные перепады проходят линейно, последние 1,5 стопа — экспоненциально, с dead zone 0,08 стопа. На свету экспозиция закрывается быстрее, чем раскрывается в темноте.
- Overworld, Nether, End, вода и лава получили независимые безопасные пределы экспозиции.
- История экспозиции перенесена из квантованного R8 `colortex4` в два служебных FP32-пикселя существующей истории глубины `colortex8`, не добавляя нового полноразмерного буфера или расхода VRAM.
### Объёмные облака
- Удалено 16-фазное вращение ray origin на Ultra. При точном шаге ≤9 блоков оно каждый кадр меняло Worley-изоповерхность и выглядело как z-fighting материала; теперь Ultra использует малый стабильный spatial offset 0.40–0.60.
- Исправлен разрушенный вид комбинации Fast + half-resolution + scene upscaling: Fast raymarch теперь центрирован, не удваивает empty-space step и использует 12–32 samples вместо 10–24. Крупный stochastic stipple больше не передаётся последующему RCAS.
- Half-resolution cloud buffer переведён в premultiplied alpha и получил отдельную четырёхточечную tent-реконструкцию с силой, зависящей от `CLOUD_QUALITY`. Края больше не теряют цвет дважды и не распадаются на синие/белые квадраты.
- Добавлена настоящая бесшовная R8 grayscale-текстура `noise_cloud_height.png` размером 512×512 и воспроизводимый генератор. Чёрные области задают локальный потолок Y=300, белые — Y=500; общее мягкое основание Y=270–284 превращает карту в цельные облачные системы, а не набор независимых вертикальных столбиков.
- Coverage переведён на мягкий cohesive-remap: сначала заполняется крупное тело облака, затем 3D Perlin–Worley и detail erosion оформляют его объём и края.
- Прежний фиксированный слой Y=192–258 заменён локальными границами из height map; консервативный ray volume охватывает Y=268–504, но плотность существует только между мягким основанием и локальным потолком.
- Добавлены отдельные высотные профили stratus/cumulus и медленная модуляция нижней границы. Облака перестали состоять из одинаковых круглых «ватных» ячеек и не обрываются на одной горизонтальной плоскости.
- High-frequency Worley erosion теперь применяется преимущественно у изоповерхности и плавно band-limit’ится по дистанции и длине шага raymarch. Low и Balanced больше не пытаются показать detail мельче своего sample interval.
- Вращающийся temporal slice jitter оставлен только на Ultra; Low/Balanced используют стабильную пространственную фазу, поэтому снижение качества больше не превращается в усиление мерцания при движении.
- Дальность облаков разделена по уровням качества и заканчивается мягким transmittance fade; cloud-plane reprojection использует репрезентативную высоту карты Y=400.
- Дальние samples получают aerial perspective в цвет текущего неба, как в FastPBR/Complementary: белый cloud material больше не сохраняет полный контраст до clip distance. Detail erosion смещён к крупной Worley-октаве, убирая россыпь мелких круглых «бусин» по силуэту.
- Исправлен источник горизонтальных «лесенок»: фиксированные 24 среза заменены длино-зависимым raymarch. Ultra использует от 32 до 112 потенциальных view-ray samples и сохраняет точный шаг не более 9 блоков даже на скользящих углах.
- Добавлен interleaved sub-pixel jitter с 16-фазным временным циклом. Статическая когерентная ошибка больше не складывается в полосы вдоль силуэта.
- Compute Temporal resolve репроецирует облачные лучи через репрезентативную высоту height map Y=400 с учётом перемещения камеры; за пределами облачной дальности остаётся направленная репроекция неба. Для анимированных облаков используется короткая история, чтобы сглаживание не оставляло длинных шлейфов.
- Прежняя псевдообъёмная модель из сдвигаемых 2D-срезов заменена собственным тайловым 64³ RGBA Perlin–Worley volume, упакованным в фильтруемый 2D atlas. Weather map теперь отвечает только за покрытие и тип, low-frequency volume — за связную форму, high-frequency Worley — только за эрозию края.
- Полный detail sampler вызывается лишь внутри непустой базовой формы. После трёх пустых samples марш временно удваивает шаг, а при следующем попадании возвращается к точной интеграции.
- Освещение облаков получило двухлепестковую Henyey–Greenstein phase-функцию, Beer attenuation, powder-приближение и дополнительный дальний cone sample на Ultra.
### Объёмное освещение Ultra
- Уровень `VOLUMETRICS=1` сохранён как прежняя дешёвая аналитическая дымка для Balanced; Low по-прежнему полностью отключает объёмный свет.
- Для `VOLUMETRICS=2` добавлен настоящий полноразмерный raymarch на 32 шага с интеграцией плотности, оптической глубины и transmittance вдоль луча камеры.
- Каждый шаг читает карту теней и формирует геометрически перекрытые световые лучи; прозрачные материалы окрашивают проходящий объёмный свет через `shadowcolor0`.
- Процедурные облака ослабляют солнечное рассеивание в объёме и создают движущиеся области затенения под облачным слоем.
- Overworld получил солнечное и слабое лунное рассеивание, Nether — пространственные слои дыма и лавового свечения, End — холодную shadowed-дымку и более плотную нижнюю пустоту.
- Raymarch использует стабильные screen-space sub-step и стохастическое смягчение shadow map: при движении камеры паттерн больше не меняет среднюю яркость всего кадра, а Temporal-история дополнительно сглаживает пространственный шум.
- Ultra-volumetrics не участвуют в замере отдельными случайными точками: экспозиция читает плотный усреднённый mip непрозрачной HDR-сцены, поэтому пространственная детализация лучей не превращается в глобальное мерцание.
### Архитектура измерений
- Общая реализация 47 shader-проходов вынесена в `shaders/program`; `world0`, `world-1` и `world1` содержат только точки входа соответствующих измерений.
- Удалены дублирующие корневые entry-point’ы. Структура теперь совпадает с моделью крупных dimension-aware шейдерпаков и не хранит четвёртый набор обёрток.
- Добавлена `NOISE Shaders License 1.0`.
### Nether: основа атмосферы
- Добавлена отдельная атмосферная модель Nether с тёмной красно-чёрной палитрой, сохранением оттенков ванильного тумана биомов и движущимися дымными слоями.
- Земное небо, солнце, луна, звёзды, облака и осадки отключены только для Nether.
- Дальний туман сгущается у лавового моря и под потолком, оставляя среднюю дистанцию читаемой для навигации.
- Освещение переведено на тёплый локальный lightmap без солнечного цикла; лава, огонь, soul fire и переносимые источники сохраняют собственные цвета.
- Солнечные shadow-map выборки и геометрия теневого прохода отключены в Nether.
- Добавлены отдельная цветокоррекция, более сильное затемнение краёв, лавовая среда камеры и Nether-отражение для воды из модов.
### End: основа атмосферы
- Добавлено отдельное холодное небо End с процедурными звёздами, медленными фиолетово-синими туманностями и слабыми полосами пустоты.
- Земные солнце, луна, ванильные звёзды, облака и осадки отключены только для End.
- Острова плавно растворяются в фиолетовой дистанционной дымке; ниже основного уровня появляется более плотная пустотная завеса.
- End Stone и сущности получили холодное направленное освещение с сохранением shadow map и тёплых локальных источников.
- Добавлены отдельные цветокоррекция, экспозиция, виньетка и отражение неба End для воды из модов.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }