| 2026-09-12 |
Капли дождя втрое быстрее: 31 → 93 юнит/с
...
Цикл падения слоя (40 юнитов) сжался до ~0.43 с — тест «колонка
неизменна внутри падения» ужат до окна 0.15 с внутри цикла.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
17 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
17 hours ago
|

Освещаемые частицы в темноте ещё темнее: квадрат видимости + гашение цвета
...
Фидбек: «освещаемые партиклы в темноте сделаем ещё темнее». Две правки
ветки #if LIT шейдера частиц:
1) vis гасит и цвет, и альфу: vColor*(uTint*vis + received) — раньше
гасилась только альфа, цвет оставался полным, и полупрозрачные СЕРЫЕ
точки читались на тёмном фоне;
2) кривая видимости нелинейная: vis = clamp((max-канал(received)*1.6)^2) —
степень давит слабый свет (ночь received ~0.05-0.1: линейная кривая
оставляла vis ~0.1), а день/лампа по-прежнему насыщают vis в 1.
Чистая функция litVisibility(maxChannel) зеркалит шейдерную кривую —
тесты без WebGL (371). Замер пробы (пара кадров ночью «дождь вкл/выкл»,
пиксели ярче фона): 815 -> 641 (гашение цвета) -> 10 (квадрат); день
не изменился (дождь 101 -> 100), мотыльки (излучающие) светятся как
раньше (961 тёплых px).
Гейт weather «облачность темнит кадр» ослаблен до x0.93: зенитный свет
пасмурного дня (fd7a331) намеренно добавляет освещённости — падал и до
этой правки (воспроизведено на старом шейдере, цифры те же).
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
18 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
1 day 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
1 day ago
|