Трек 31: пост-обработка движка (RT + полноэкранный квад) и воздух области
- Движок: VoxelRenderer.setPostPass (сцена в RT NearestFilter 1:1, затем
  квад на экран; PostPassHandle {uniforms, dispose}) + сборщик postPass
  ({vignette?, grain?, wobble?}); uTime заводится рендерером всегда.
  Детерминизм гейтов: зерно статично (хэш по координатам), анимируется
  только дисторсия через uTime.
- Игра: PostFx (виньетка 0.32→0.5 к ночи, зерно 0.02, дисторсия жары
  0.004 в зале Машины — проход пересобирается в setArea, active=ashEnabled);
  AirFx (листопад рощи 26 шт с покачиванием, пыль разъезда 40 шт —
  взвесь с edgeAlpha в марже окна видимости); карта AIRFX в данных;
  ambientInfo.air.
- Гейт atmosphere +5 проверок (виньетка по зонам кадра, листья, пыль);
  гейт panels: статы манекена синхронизированы с треком 29 (19 тайлей).
  317 тестов, 7+11 гейтов зелёные.

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent 5fb5474 commit c6dbceb57fe808478385bc2fb315744b08d88fc8
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 7 hours ago
Showing 11 changed files
View
v2/CLAUDE.md
View
v2/apps/game/src/airFx.ts 0 → 100644
View
v2/apps/game/src/data/lighting.ts
View
v2/apps/game/src/main.ts
View
v2/apps/game/src/screenShader.ts 0 → 100644
View
v2/apps/game/tools/checks/atmosphere.mjs
View
v2/apps/game/tools/checks/panels.mjs
View
v2/packages/engine/src/index.ts
View
v2/packages/engine/src/render/__tests__/postShader.test.ts 0 → 100644
View
v2/packages/engine/src/render/postShader.ts 0 → 100644
View
v2/packages/engine/src/render/voxelRenderer.ts