| 2026-09-12 |
Капли дождя втрое быстрее: 31 → 93 юнит/с
...
Цикл падения слоя (40 юнитов) сжался до ~0.43 с — тест «колонка
неизменна внутри падения» ужат до окна 0.15 с внутри цикла.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
13 hours ago
|
Дождь и снег: слоёв 3 → 6, суммарная плотность ~×1.75
...
6 перекрывающихся полос глубины (дальний 0..0.3 частый и мелкий,
ближний 0.75..1.0 редкий и крупный): ливень 6147 → 10757 капель,
снег 3074 → 5798 хлопьев. Потолки RAIN_MAX/SNOW_MAX не тронуты —
они по-слойные, макс. плотность отдельного слоя не менялась.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
13 hours ago
|
Дождь и снег многослойные и втрое гуще (как туман)
...
Фидбек: «дождь сильно гуще, тоже многослойным — с туманом круто
сработало, снег аналогично». RAIN_LAYERS/SNOW_LAYERS = 3 слоя частиц,
каждый в своей полосе глубины: ближний редкий и крупный, дальний
частый и мелкий (стена дождя в глубине), полосы перекрываются —
слоистость не читается линиями. Суммарная плотность ×~3 (ливень
~6100 капель, снег ~3100 хлопьев у игры). Слои остаются lit-частицами
— свет источников и ночное гашение работают как раньше. Тесты под
новую плотность (+1 на полосы слоёв), 378 ✓; гейт погоды зелёный.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
13 hours ago
|

Многослойный туман по дальности от камеры + слайдер дев-панели
...
Композитный проход: сцена → RT с DepthTexture, полноэкранный квад
реконструирует мировую точку (в орто глубина линейна) и красит кадр
стопкой из 6 слоёв по дистанции вдоль взгляда ОТ КАМЕРЫ. Клубы — fbm
по мировым XZ с дрейфом ветра (глубокие слои медленнее — параллакс),
высотное затухание собирает туман в низинах; цвет — env-свет сцены
(день светло-серый, ночь тёмный). Полоты ⟂ оси взгляда забракованы
пробой-изолятом: при взгляде ~63° плоскости уходят под рельеф.
Главная грабля: d в шейдере обязан быть dot(wp − uCamPos, uCamF) —
глубиной от КАМЕРЫ; вариант от цели давал для видимых пикселей
d ∈ [−1.12·V, +1.12·V] при слоях на 2.5..5·V — все smoothstep'ы
нули, туман полностью прозрачен (изолят маскировал: камера ближе).
Попутно чинит pow-граблю из 55876f8: степень PARTICLE_LIT_GAMMA из TS
в GLSL-шаблоне печаталась «2» (int) — pow(int) не компилировался в
GLSL ES, lit-слои частиц (дождь/снег/пепел/листья/пыль) молча не
рисовали; в GLSL-шаблоны числа из TS — через .toFixed(1).
WeatherSpec.fog (0..1), база прудов 0.3; 6-й слайдер «туман» в дев-
панели. Гейт weather: 19 проверок (+6 туман: рисуется, глубинный
градиент, дрейф, ночь тёмная, слайдер панели). check:fast — 377 ✓.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
13 hours ago
|

Два вида частиц: излучающие и освещаемые сценой (lit)
...
Живучий баг «частицы светятся одинаково при любом освещении»: теперь
режим — свойство слоя. renderer.addParticles({lit: true}) — освещаемый
слой: полученный свет (env-свет сцены + точечные источники) правит и
цветом, и видимостью (альфа = clamp(max-канал·PARTICLE_LIT_VIS)) — ночью
в темноте частица исчезает, у лампы/фонарика проявляется, днём вид как
раньше. Излучающий режим (по умолчанию) — прежняя формула.
- particleEnv(amb, sun) — чистая функция env-света (ambient + доля
солнца PARTICLE_ENV_SUN 0.3: у билборда нет нормали); рендер
пересчитывает uEnv в конце setSun — туда сходятся все изменения света;
- игра: lit — дождь/снег (WeatherSystem.setTint удалён), пепел,
листья/пыль; tint остался самосветящимся: мотыльки, дымка, блики.
Ручной ночной tint был подменой реакции на свет — больше не нужен.
Замер в игре: дождь день 101 / ночь 14 яркости, в луче фонарика капли
проявляются; мотыльки ночью светятся как раньше. Тесты 368 ✓ (+particleEnv),
гейты atmosphere/weather/panels ✓.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
14 hours ago
|
Осадки: ускорение ×1.4 и глубина (план даль/близь)
...
Фидбек: дождь и снег медленные, выглядят плоско. Скорости ×1.4
(дождь 31 юнит/с, снег 1.7). Глубина: камера ортографическая, параллакса
нет — глубина симулируется расхождением параметров частицы от стабильной
глубины d∈[0..1] (sin-хэш, уклон в дальний план): дальнее меньше/
медленнее/бледнее (аэроперспектива), ближнее крупнее/быстрее; у дождя
дальние штрихи короче, у снега ближние качаются шире. Снежинка несёт
свой размер в позах (раньше размер слоя был фиксированным). Тесты
респавна переведены на фазовый скан (скорость теперь пер-частица),
добавлен тест разброса планов. 352 теста, гейт weather ✓.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
18 hours ago
|
Дождь/снег: респавн — полный реролл колонки, трек не остаётся на экране
...
Сдвиг колонки при респавне в узкой окрестности якоря (±20 юнитов) оставлял
каплю падать в одной и той же полосе: трек «горел» на экране вечно, а поле
колонн было квази-статично в мире — кадры, разнесённые на полный цикл
падения, совпадали. Теперь sin-хэш от номера цикла растягивается на большой
период (RAIN_SPAN 731 / SNOW_SPAN 613) — капля перебрасывается по всему
периоду. Колонка внутри падения неизменна (капля падает по прямой).
Тесты: переброс ≥80% капель за цикл, стабильность колонки внутри падения.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
19 hours ago
|
Погода: респавн капли в новой колонке — траектории не повторяются
...
Якорь x/z был постоянным: капля после «приземления» респавнилась
наверху в той же колонке и вечно повторяла одну траекторию (~2 с),
рисунок дождя на экране зациклен. Теперь к якорю добавляется sin-хэш
от номера цикла падения (чистая функция t — детерминизм гейтов): каждый
цикл — новая колонка; то же у снежинок. Тест «респавн меняет колонку».
344 ✓, гейт 14 ✓.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
19 hours ago
|
Погода: плотность осадков на площадь окна, дождь — штрихами
...
Ливень при rain=1 выглядел как редкая субпиксельная пыль: окно слоя
[0,40] (след кадра до дальней плоскости) при камере игры (viewSize 80,
far 800) — 342×342 юнита, а 260 капель с фиксированным счётчиком
размазывались по нему (капля 0.5 юнита при 3.3 px/юнит — 1.7 px).
- счётчик капель/снежинок — плотность на кв. юнит окна (RAIN_DENSITY
0.016 / SNOW_DENSITY 0.007, потолки RAIN_MAX/SNOW_MAX): зум камеры
не меняет видимую плотность; info() отдаёт фактические счётчики
- капля рисуется штрихом — цепочкой из 3 точек над головой (хвост
бледнее и тоньше), размер поднят до 0.55/0.7 юнита
- мост: windowInfo(y0, y1) — окно видимости частиц + параметры камеры
(диагностика плотности агентом)
Тесты 344 ✓ (число точек = плотность × площадь окна; счётчики после
update), гейт weather.mjs 14 ✓ (ливень — стена капель >1000).
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
20 hours ago
|

Погода в движке: дождь, снег, ветер, облачность
...
Движок (packages/engine):
- WeatherSpec (windDir/windStrength/cloud/rain/snow), clampWeather,
windVector; weather.ts — WeatherSystem на слоях частиц (addParticles):
окно осадков = след кадра + маржа, wrap, альфа у края; дождь —
тяжёлая капля (дрейф ветра ×0.6), снег — покачивание + полный дрейф
- VoxelRenderer.setCloud: гашение солнца (×1−0.6k), облачный тинт
ambient/фона через cloudDim (обесцвечивание + затемнение), встроен
в setNight (lastNightTint пересчитывается)
- agent-lib: startDevServer показывает stderr vite при падении
Игра: погода по областям (AREA_WEATHER) + ручной режим дев-панели,
переживает смену области; setAsh(false) глушит погоду (гейт-режим);
в тике погода анимирует даже при открытой панели. Мост: weatherInfo,
setWeather (merge/сброс), devSetWeather. Дев-панель: слайдеры
облачность/дождь/снег/ветер/направление, счётчики капель и снежинок.
Гейт tools/checks/weather.mjs — 14 проверок (базы областей, ливень/
снег падают, облачность темнит, панель, глушение). 343 теста ✓.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
20 hours ago
|