# NOISE Shaders — Changelog

## 0.2.0 — 2026-07-31

Функциональный выпуск для пещерных материалов и более точного масштабирования качества под разные видеокарты. Визуальная модель неба и наружной атмосферы не изменялась; переработана только реакция закрытых пространств на свет и туман.

### Светящиеся пещерные материалы

- Закрытые участки без skylight, block light и света предмета в руке дополнительно затемняются. Авторское значение `CAVE_BRIGHTNESS:0.72` сохраняет глубокие тени NOISE, а отдельный ползунок позволяет выбрать диапазон от непроглядных пещер до прежней яркости.
- Skylight поверхности передаётся в deferred через зелёный канал `colortex3`. В закрытой пещере дальний туман теперь работает как тёмное поглощение, а не подмешивает яркий цвет неба; аналитическое и raymarched-рассеивание также подавляется без реального доступа к небу.
- Автоэкспозиция учитывает долю открытого неба в кадре и больше не раскрывает герметичную пещеру до эффекта ночного зрения. Мобы и block entities используют ту же cave-mask, причём неосвещённые мобы остаются преимущественно силуэтами.
- Добавлена самостоятельная HDR-emission система для редстоуна, алмазной, изумрудной и лазуритовой руды, аметиста, светящегося лишайника, ягодных пещерных лоз и семейства скалка.
- Каждый класс материала получил собственный идентификатор и цветовую маску. Светятся только характерные минеральные или органические пиксели исходной текстуры, а каменная основа руды остаётся обычным освещённым материалом.
- Аметист, ягоды, скалк и редстоун получили спокойную пространственно стабильную пульсацию. Фаза привязана к координатам блока, поэтому соседние источники не мигают синхронно.
- Интенсивность вычисляется в HDR до существующих bloom и тонемаппинга. Авторское значение `EMISSIVE_STRENGTH:0.50` оставляет материалы цветными акцентами ниже широкого порога bloom; более яркие варианты доступны вручную.
- Дополнительная emission светящегося лишайника существенно снижена: окружающее освещение создаёт его настоящий Minecraft block light, а шейдер лишь слегка поддерживает яркость самой поверхности.
- Исправлена светящаяся мелкая вода в пещерах: shoreline-маска и гребни волн теперь требуют реального освещения, а локальный свет раскрывает только слабую кромку вместо бело-голубой плоскости на всей глубине одного блока.
- `colortex3` расширен до `RGBA8` и передаёт block light вместе со skylight. Подводный composite использует эти данные для рассеивания, поэтому синий туман больше не создаёт свет в закрытом затопленном пространстве; открытая дневная вода сохраняет прежний отклик.
- Добавлены настройки `CAVE_BRIGHTNESS`, `EMISSIVE_MATERIALS` и `EMISSIVE_STRENGTH` с русской и английской локализацией.

### Профили качества

- Вместо трёх профилей доступны шесть последовательных уровней: `POTATO`, `LOW`, `MEDIUM`, `BALANCED`, `HIGH` и `ULTRA`; ручное изменение по-прежнему формирует `CUSTOM`.
- `POTATO` отключает мягкие тени, AO, bloom, volumetrics, отражения, ветер, волны и автоэкспозицию, а на Iris использует 50% внутреннего разрешения.
- `LOW` сохраняет базовый туман, облака, волны, ветер и пещерные акценты, использует четыре выборки теней и 67% внутреннего разрешения на Iris, но отключает AO, bloom, отражения и volumetrics.
- `MEDIUM` добавляет 85% temporal upscale, восемь выборок теней, AO, bloom, базовые отражения и аналитический объёмный свет.
- `HIGH` использует карту теней 3072, шестнадцать выборок, качественные отражения и максимальную детализацию облаков без дорогого полноразмерного raymarch.
- `BALANCED` остаётся рекомендуемым авторским профилем, а `ULTRA` сохраняет максимальные отражения, raymarched volumetrics и нативное разрешение плавных эффектов.

### Совместимость и проверка

- Пещерное освещение, материалы, вода, автоэкспозиция и все шесть профилей работают на Iris и OptiFine.
- На Iris доступны compute-проходы, temporal upscale и внутреннее разрешение 50–85%. OptiFine использует совместимый fragment fallback в нативном разрешении; остальные параметры профилей применяются без изменений.
- Выполнен визуальный прогон сухих и затопленных пещер, локальных источников, сущностей и открытой дневной воды. Профиль `ULTRA` успешно пересобирается без ошибок; загрузка и основные эффекты также проверены на OptiFine.

## 0.1.2 — 2026-07-18

Исправляющий выпуск для HDR-конвейера, автоэкспозиции и временной реконструкции. Устранена несовместимость с обработкой GLSL-директив в Iris 1.10.x и убрана зависимость fragment fallback от девятого цветового буфера.

### HDR и конфигурация буферов

- Директивы форматов framebuffer перенесены в блочный комментарий, а фиктивные определения форматов со значением `0` удалены. Iris больше не подставляет ноль до разбора директив и корректно создаёт `RGBA16F`, `R8` и `RGBA8`-буферы.
- Восстановлена полная HDR-цепочка: яркие значения больше не обрезаются до диапазона `[0, 1]` до bloom и тонемаппинга, а отрицательная логарифмическая яркость в `colortex5.a` сохраняется без UNORM-зажатия.
- История автоэкспозиции перенесена в два зарезервированных R8-текселя `colortex4`. Экспозиция хранится в логарифмическом виде в диапазоне 0,25–4,0, а отдельный маркер позволяет надёжно отличить действительную историю от неинициализированных данных.
- Удалён `colortex8` и все fragment-выходы в девятый цветовой буфер. Fragment fallback хранит предыдущую глубину в `colortex6.a`, а compute-путь использует постоянный R32F custom image полного экранного разрешения.

### Совместимость Iris и OptiFine

- OptiFine/macOS больше не требует недоступный `colortex8`: финальный composite-проход использует только `colortex0`, `colortex6` и `colortex4`.
- Compute-depth записывается fragment-этапом только после завершения compute resolve; расширение image load/store включается исключительно в Iris compute-ветке и не затрагивает GLSL 330 fallback.
- Компенсация яркости сопоставленных block entity применяется ко всему пути OptiFine независимо от версии Minecraft. Ограничения только на Minecraft 1.20.1 нет.

### Временное сглаживание

- Fragment TAA теперь репроецирует небо по мировому направлению, поэтому перемещение камеры больше не сдвигает историю бесконечно удалённой атмосферы.
- Для объёмных облаков fragment fallback использует приближённую плоскость облачного слоя на высоте около Y=400. Это учитывает перенос камеры и уменьшает шлейфы при стрейфе и полёте.
- Compute и fragment-пути используют раздельное корректное хранение глубины и числа временных выборок без потери точности и конфликтующего чтения/записи одного буфера.

### Проверено

- Iris 1.10.9 успешно создаёт rendering pipeline во всех изменённых проходах; ошибок компиляции после полной перезагрузки шейдерпака нет.
- Предупреждения `Unrecognized internal texture format 0` больше не появляются, а встроенный парсер Iris распознаёт исходные символические имена форматов.
- Выполнена статическая проверка структуры GLSL, баланса препроцессорных веток, соответствия `RENDERTARGETS` выходам и отсутствия обращений к `colortex8`.

## 0.1.1 — 2026-07-18

Сервисный выпуск, направленный на совместимость с Iris и OptiFine, исправление конфигурации буферов и снижение нагрузки в наиболее дорогих проходах.

### Совместимость Iris и OptiFine

- Конфигурация форматов и очистки `colortex` перенесена из `shaders.properties` в корректные GLSL-директивы. Это восстанавливает ожидаемые HDR-форматы, историю TAA и автоэкспозиции на обоих загрузчиках.
- Карта высоты облаков переведена с Iris-специфичного `customTexture` на стандартную привязку `texture.*.colortex4`, совместимую с OptiFine.
- Исправлено отображение неба и облаков в OptiFine: устранены артефакты, вызванные отсутствующей картой высоты облаков.
- Для Iris-специфичных uniform-переменных добавлены безопасные ветки OptiFine. Недоступные данные больше не приводят к ошибкам компиляции или неверным визуальным эффектам.
- Исправлена подсветка предметов в руке на OptiFine: неоднозначные данные о правой и левой руке больше не окрашивают неверную руку.
- Профиль `LOW` на OptiFine теперь использует FXAA в нативном разрешении, когда Iris compute/upscale-проходы недоступны.
- Уточнены подписи настроек масштабирования: половинное разрешение и апскейлинг явно отмечены как возможности Iris, а для OptiFine указан нативный fallback.

### Исправлено

- Восстановлены постоянные буферы истории для TAA, облаков и автоэкспозиции; их содержимое больше не очищается между кадрами.
- Форматы цветовых, теневых и служебных буферов теперь задаются в месте, которое корректно распознают оба загрузчика.
- Для теневых depth-текстур явно включена ближайшая фильтрация, необходимая ручному сравнению глубины.
- Исправлены и дополнены английские описания настроек тумана, отражений, облаков, AO, bloom, волн, ветра и виньетки.
- Русские и английские комментарии настроек приведены в соответствие с фактическим поведением Iris и OptiFine.

### Оптимизация

- Отключена лишняя покадровая очистка custom image-буферов FSR, TSR depth, облаков и bloom: используемые пиксели полностью перезаписываются соответствующими проходами.
- Compute-проход облаков в Нижнем мире и Крае сокращён до минимального dispatch вместо обработки половины экрана без полезного результата.
- Количество blocker-сэмплов мягких теней теперь масштабируется вместе с профилем качества: меньше выборок на `LOW` и `BALANCED`, полное качество на `ULTRA`.
- Передача света в объёмных облаках кэшируется между соседними занятыми шагами луча, уменьшая число дорогих выборок шума.
- Небесные отражения на воде пропускаются при отсутствии видимости неба.
- SSR для воды запускается только при достаточном вкладе отражения и видимости поверхности, сохраняя отражения при скользящих углах.

### Проверено

- Статическая проверка всех 202 shader-файлов: существование 372 include-подключений, баланс препроцессора и фигурных скоб, синхронизация ключей локализации.
- Полная загрузка и рендеринг проверены в Iris — ошибок и визуальных регрессий не обнаружено.
- Загрузка и рендеринг проверены в OptiFine — шейдерпак работает, небо и облака отображаются корректно и без прежних артефактов.

## 0.1.0 — 2026-07-16

### Автоэкспозиция

- Прежняя переходная адаптация по `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 для воды из модов.

## 0.0.4 — 2026-07-15

Обновление временной реконструкции, производительности плавных эффектов, погоды, воды, теней и анимации растительности.

### Временное сглаживание и масштабирование

- Полностью переработан Temporal resolve: накопление теперь учитывает движение, глубину, изменение цвета, края геометрии и реактивные маски поверхностей.
- Вместо фиксированной силы TAA добавлена настройка длины истории от 1 до 16 кадров; стабильные пиксели накапливают выбранное число выборок, а движущиеся, прозрачные и новые поверхности быстрее сбрасывают историю.
- Цвет, число накопленных выборок и глубина предыдущего кадра перенесены в отдельные полноразмерные буферы истории. Это повышает надёжность reprojection и уменьшает шлейфы на раскрывающейся геометрии.
- Compute Temporal resolve при масштабировании выполняется во внутреннем разрешении сцены, поэтому при масштабе 67% обрабатывает примерно 45% от числа пикселей экрана; до полного разрешения восстанавливается уже готовый временной результат.
- Добавлены реактивные маски для полутеней, анимированной листвы, сущностей, block entity, рук и прозрачных поверхностей. Мягкие тени стабильнее накапливаются, а подвижные объекты оставляют меньше следов.
- Исправлено повторное попадание EASU-резкости в историю: рекурсивное накопление теперь использует нейтрально восстановленный сигнал и не усиливает ореолы от кадра к кадру.
- Добавлен выбор фильтра реконструкции: быстрый линейный вариант для FPS или 12-выборочный EASU для качества краёв.
- FXAA при уменьшенном внутреннем разрешении перенесён после реконструкции, чтобы сглаживать края уже в разрешении экрана.
- Размер внутреннего viewport теперь вычисляется целочисленно и одинаково во всех проходах; устранены расхождения координат и выборок на дробных масштабах.
- Проекционный jitter остаётся отключённым: Temporal использует reprojection без дрожания мира, интерфейса и предметов в руках.

### Производительность и постобработка

- Добавлены отдельные compute-проходы облаков и bloom в половинном разрешении. Плавные эффекты рассчитываются на четверти пикселей, не снижая детализацию геометрии и текстур сцены.
- Для облаков и bloom добавлен выбор между половинным и нативным разрешением; Low и Balanced используют быстрый режим, Ultra — нативный.
- Половинное разрешение облаков получило расширенную проверку силуэтов, чтобы восстановление не вырезало облака рядом с рельефом.
- Добавлена естественная адаптация зрения: при входе в темноту изображение постепенно возвращается к исходной экспозиции NOISE, а выход на свет даёт мягкий кратковременный пересвет. Эффект можно отключить.
- Обновлены профили: Balanced теперь использует Temporal с историей 8 кадров в нативном разрешении, Ultra — 12 кадров; Low сохраняет быстрые FXAA и масштаб 67%.

### Погода и вода

- Дождь переработан из равномерной экранной завесы в неодинаковые привязанные к миру струи с ветром, разной скоростью, плотностью и длиной капель.
- Ближние капли получили дополнительную детализацию, а дальние плавно растворяются в дождевом тумане без заметной цилиндрической границы области погоды.
- Цвет дождя теперь зависит от дневного света, неба и локальных источников: ночью капли остаются холодными, но рядом с факелами и другими блоками ловят тёплые блики.
- Ослаблены ванильные синие частицы удара дождя, выглядевшие как подпрыгивающие капли или яркие экранные спрайты.
- На открытой верхней поверхности воды добавлены кольца от дождя. Они изменяют нормаль и отражения, учитывают силу осадков, skylight и локальное освещение и не появляются под водой или под крышей.
- Вода, её отражения и подводный туман больше не создают свет в закрытых тёмных пещерах; яркость теперь определяется реальным небесным, блочным или ручным светом.

### Тени и растительность

- Фильтр солнечных теней переведён на симметричные пары выборок со стабильным диском. Уменьшены направленные полосы, яркие ореолы и чрезмерное расширение мягких теней на траве и листве.
- Полутени передают Temporal resolve отдельную маску доверия, поэтому лучше стабилизируются без ослабления защиты от ghosting на остальной сцене.
- Высокая трава, папоротники, подсолнухи, сирень, розовые кусты и пионы разделены на нижнюю и верхнюю половины для анимации ветра.
- Исправлен разрыв движения двухблочных растений: обе половины используют общую фазу и непрерывный изгиб, а их геометрия и тени качаются согласованно.

### Настройки и локализация

- Экран масштабирования переименован в «Разрешение и масштабирование» и дополнен настройками длины Temporal-истории, качества реконструкции, разрешения облаков и bloom.
- В раздел эффектов добавлена настройка адаптации зрения.
- Обновлены русская и английская локализации, описания новых режимов и значения профилей.

## 0.0.3 — 2026-07-14

Крупное обновление сглаживания, масштабирования, теней, подводного рендера и интерфейса настроек.

### Сглаживание и масштабирование

- Исправлена комбинация EASU + FXAA: после EASU FXAA теперь ограничивает выборки полным диапазоном UV 0–1, а не уменьшенным render viewport. Прежний clamp к `RENDER_SCALE` растягивал последнюю строку и колонку сцены на верхнюю и правую части экрана.

- Добавлена новая многостадийная цепочка постобработки `composite1 → composite2 compute → composite2 → final`.
- Добавлен FXAA для быстрого пространственного сглаживания в нативном разрешении.
- Добавлен TAA с репроекцией мировой позиции через предыдущие матрицы камеры и постоянной историей кадров в `RGBA16F`.
- История TAA проверяется по глубине, движению камеры и отличию цвета; недостоверные предыдущие пиксели автоматически отбрасываются.
- Добавлено ограничение истории по цветовому диапазону соседних пикселей, уменьшающее шлейфы и накопление ошибочного цвета.
- Руки, прозрачные поверхности и небо получили более быструю реакцию TAA, чтобы история не размазывала подвижные и полупрозрачные детали.
- Проекционный jitter TAA намеренно отключён: временная стабилизация сохраняется без дрожания мира, интерфейса и предметов в руках.
- Добавлен FSR 1.0 для Iris: compute-проход EASU восстанавливает изображение до разрешения экрана, а финальный RCAS регулируемо повышает резкость.
- Добавлены масштабы внутреннего разрешения 50%, 59%, 67%, 77%, 85% и 100%.
- Все основные vertex-проходы мира, воды, неба, облаков, погоды, сущностей, block entity и рук адаптированы к уменьшенному внутреннему viewport.
- Экранные реконструкции глубины, атмосферные эффекты и SSR переведены между физическими и логическими UV, поэтому продолжают правильно работать при включённом FSR.
- При активном FSR предварительный FXAA больше не размывает низкоразрешённый вход EASU; детали восстанавливаются непосредственно из исходного изображения.
- Добавлена настройка силы RCAS с диапазоном от максимально резкого до мягкого изображения.

### Тени

- Полностью заменён старый фиксированный фильтр теней на общую систему для ландшафта, сущностей и block entity.
- Сундуки, таблички, кровати, мобы и другие сущности теперь получают настоящие солнечные тени вместо постоянного полного освещения.
- Добавлен PCSS-подобный поиск блокирующей геометрии: контакт с поверхностью остаётся более чётким, а удалённая часть тени получает расширяющуюся полутень.
- Добавлены отдельные настройки числа выборок и мягкости теней.
- Ядро фильтра привязано к ячейкам карты теней, что уменьшает мерцание и вращение узора при движении камеры.
- Добавлен slope-aware depth bias и смещение получателя вдоль нормали: снижены shadow acne, световые щели и отрыв тени от основания объекта.
- Добавлен центрированный радиальный warp карты теней, направляющий больше текселей в наиболее заметную область вокруг камеры.
- Добавлено сжатие диапазона глубины карты теней для повышения точности сравнения.
- Добавлено плавное затухание теней у краёв карты и на конце выбранной дистанции.
- Добавлена поддержка цветного прохождения солнечного света через прозрачные материалы с использованием `shadowtex0`, `shadowtex1` и `shadowcolor0`.
- Анимация ветра перенесена в shadow-pass: движущиеся листья и растения теперь отбрасывают согласованные с геометрией тени.
- Разрешение карты теней стало настраиваемым: 1024, 1536, 2048, 3072 или 4096.
- Дальность солнечных теней стала настраиваемой от 64 до 256 блоков.
- Добавлена отдельная дальность теней сущностей: 25%, 50% или 100% от общей дистанции.
- Профиль Low использует 1024/96 блоков/4 выборки, Balanced — 2048/128/12, Ultra — 4096/192/32 и полную дальность теней сущностей.

### Вода и подводный рендер

- Добавлено отдельное определение нахождения камеры под водой через `isEyeInWater`.
- Поглощение света и подводный туман теперь применяются один раз в composite-проходе по восстановленной глубине сцены, а не на каждой прозрачной грани воды.
- Добавлено различное поглощение красного, зелёного и синего каналов в зависимости от расстояния под водой.
- Интенсивность bloom под водой уменьшена, чтобы яркие объекты и поверхность не создавали светящуюся пелену.
- Надводные SSR, отражение неба, солнечный блик и береговая пена отключаются, когда камера находится под водой.
- Отражение яркого неба на воде в пещерах теперь зависит от реального уровня skylight и заменяется тёмным окружением при отсутствии доступа к небу.
- Уменьшена непрозрачность внутренней стороны поверхности воды, благодаря чему она больше не выглядит светящейся синей плоскостью над камерой.

### Настройки и локализация

- Полностью переработан экран настроек: параметры разделены на «Качество», «Сглаживание», «Масштабирование FSR» и «Эффекты».
- Добавлены полноценные локализации `ru_RU` и `en_US`; названия, описания, значения и профили автоматически соответствуют языку игры.
- Добавлены понятные подписи и комментарии для FXAA, TAA, FSR, внутреннего разрешения, RCAS, разрешения карты теней, дальности и мягкости теней.
- Профили Low, Balanced и Ultra расширены и теперь одновременно настраивают сглаживание, масштабирование, качество теней, дальность теней сущностей и остальные эффекты.
- Balanced настроен на TAA и FSR 77% как основной компромисс между качеством и FPS.
- Ultra использует TAA, нативное разрешение и максимальные параметры новой системы теней.

### Исправлено

- Исправлен `NumberFormatException` Iris при чтении некорректной директивы размера compute-прохода.
- Исправлены огромные растянутые полигоны и перевёрнутая геометрия при FSR: преобразование clip-space теперь сохраняет знак `w` у вершин за камерой.
- Устранено дрожание всей картинки, вызванное проекционным jitter без полного de-jitter resolve.
- Уменьшены шлейфы TAA на руках, прозрачных блоках и быстро меняющихся участках сцены.
- Исправлена чрезмерно мягкая картинка FSR из-за последовательного применения FXAA перед EASU.
- Исправлено несоответствие SSR, тумана, облаков и реконструкции глубины уменьшенному внутреннему разрешению.
- Исправлено яркое свечение воды в тёмных пещерах и подводных пространствах.
- Исправлены отражение внешнего неба, солнечный блик и пена на внутренней стороне поверхности воды.
- Исправлены исчезающие или отсутствующие солнечные тени у сундуков, табличек, мобов и других сущностей.
- Снижены мерцание, ступенчатость, shadow acne и заметное внезапное окончание карты теней.

### Совместимость

- FSR 1.0 использует опциональные возможности Iris `COMPUTE_SHADERS` и `CUSTOM_IMAGES`.
- На OptiFine и системах без необходимых возможностей compute автоматически сохраняется полный нативный viewport и используется безопасный fragment fallback без FSR.
- Новые post-буферы используют `RGBA16F`, чтобы временная история и масштабирование не теряли HDR-точность до финального вывода.
- Проверена успешная загрузка профилей Low, Balanced, Ultra и Custom на Iris для Minecraft 26.1.2 без ошибок компиляции.

## 0.0.2 — 2026-07-14

Крупное обновление освещения, неба, воды и совместимости с Iris и OptiFine.

### Добавлено

- Полностью собственные процедурные объёмные облака вместо ванильных квадратных облаков.
- Мировое движение облаков с ветром, плавная FBM-форма, billow-детали и эрозия краёв.
- Переменная высота облачных ядер, тёмное основание, светлые вершины, внутреннее затенение в направлении солнца и серебристая кайма.
- Реакция облаков на день, ночь, дождь и направление солнца.
- Отражение процедурных облаков в воде.
- Настройка `CLOUD_QUALITY` с уровнями 0–3 и интеграция в профили Low, Balanced и Ultra.
- Экранно-пространственные отражения воды (SSR): марш луча по глубине сцены, уточнение точки попадания, затухание у границ экрана и по расстоянию.
- HDR-буфер сцены `RGBA16F`, сохраняющий цвет и яркость источников света до тонмаппинга.
- Собственное динамическое освещение от светящихся предметов в основной и второй руке.
- Разные оттенки ручного света для обычного факела, факела душ, редстоун-факела и других светящихся предметов.

### Изменено

- Дальность света факела в руке увеличена примерно до дальности установленного факела — полезный радиус около 7–8 блоков.
- Источники света теперь объединяются по энергии до умножения на альбедо материала. Текстуры сохраняют цвет и контраст вместо белой или оранжевой плёнки.
- Сам предмет-факел в руке остаётся светящимся и больше не выглядит тёмным на фоне освещённой сцены.
- Переработано освещение блоков, сущностей, руки, воды, погоды и прозрачных материалов для общего цветового отклика.
- Отражения воды стали зависеть от угла Френеля: слабее при взгляде сверху и сильнее на скользящих углах.
- Отражённая сцена получила фильтрацию, проверку достоверности попадания и более устойчивую проекцию при волнах.
- Сохранён исходный цвет воды; отражения больше не перекрывают её постоянным зеркальным слоем.
- Ночной скайбокс переведён из насыщенно-синего в нейтральный серо-графитовый диапазон.
- Луна и её ореол получили более нейтральный холодный цвет; солнце и луна теперь фильтруются по стадии рендера.
- Настроены bloom и ночной bloom для HDR: светящиеся области сохраняют сияние без молочной пелены на обычных поверхностях.
- Облачный слой поднят в диапазон Y=192–258, чтобы камера не входила в него на обычных горах.
- Масштаб облаков уменьшен, скорость движения увеличена примерно до 1,3 блока в секунду.
- Повышено число срезов объёмных облаков; устранён зернистый экранный джиттер на силуэтах.
- Ванильные облака принудительно отключены через `clouds=off`.

### Исправлено

- Пересвет дубового блока и других предметов в руке.
- Белая плёнка на блоках при использовании факела в руке.
- Отсутствие собственного шейдерного света от предмета во второй руке.
- Слишком малая фактическая дальность света ручного факела.
- Тёмная модель факела в руке при работающем освещении окружения.
- Пересвет кроватей и табличек на OptiFine; для них добавлена отдельная коррекция экспозиции.
- Слишком яркий отклик блок-сущностей и обычных сущностей за счёт единой модели освещения.
- Отсутствие движения травы на OptiFine при работающей анимации листвы.
- Нестабильные нормализации направления солнца, луны и неба, способные вызывать мерцание ночного неба на отдельных конфигурациях NVIDIA.
- Ложная отрисовка солнца как луны на закате.
- Горизонтальные «лесенки» и повторяющиеся полосы на объёмных облаках.
- Огромная белая «крыша» облаков при нахождении камеры на высокой местности.

### Совместимость

- Проверена загрузка и компиляция на Iris для Minecraft 26.1.2.
- Добавлены отдельные корректировки для OptiFine на Minecraft 1.20.1.
- Рабочая папка шейдера может использоваться напрямую; распаковка во вложенную папку не требуется.

### Известное ограничение

- Стандартные данные шейдеров Iris/OptiFine сообщают о светящемся предмете локального игрока, но не передают позиции факелов в руках других игроков как динамические источники. Поэтому другой игрок с факелом не может освещать сцену только средствами этого шейдерпака; для этого требуется поддержка динамического освещения со стороны мода или игры.

## 0.0.1-alpha — 2026-07-13

Первый публичный альфа-выпуск NOISE Shaders.

### Добавлено

- Базовое направленное освещение и фильтрованные тени.
- Атмосферное небо с дневным, вечерним и ночным состояниями.
- Дистанционный и высотный туман, низинная дымка и объёмное рассеивание света.
- Вода с волнами, поглощением по глубине, пеной и базовыми отражениями.
- Анимация ветра для растительности.
- Ambient Occlusion, bloom, цветокоррекция, плёночный тонмаппинг и опциональная виньетка.
- Профили качества Low, Balanced и Ultra.
- Первичная поддержка Iris и формата шейдерпаков OptiFine.

Альфа-версия предназначалась для проверки художественного направления и содержала экспериментальные реализации ручного света, отражений и отдельных путей рендера.
