|
engine: спрайты и свет под перспективу (затухание по глубине, фрустумы)
particles.ts: общий блок makeParticlePerspUniforms() (uPxScale/uPersp/ uRefDist — все слои шарят IUniform'ы, рост ёмкости не отрывается); createSpriteLayer теперь принимает блок вместо per-layer pxScale. POINT_VERT: gl_PointSize = aSize·uPxScale·mix(1, uRefDist/max(w,1e-4), uPersp) — в изо uPersp=0 и w=1: прежнее поведение бит-в-бит; калибровка uPxScale·uRefDist = (H/2)/tan(fov/2) — точка на дистанции viewSize рисуется в изо-масштабе, переход режимов бесшовный. QUAD_VERT не тронут. cameraMath.ts: perspVisibleRadius(D, tanHalf, aspect, viewSize) — сечение пирамиды для теневых фрустумов, кламп снизу ¼ изо-полуширины. voxelRenderer.ts: applySpriteUniforms() флипает блок в конструкторе и setCameraMode; visibleRadius() — изо легаси viewSize·max(aspect,1), перспектива — сечение на глубине видимой земли (farG fogBandLayout под капом дальностей). setSun/setLightning зовут его. Резкая линия включения теней у горизонта в перспективе — известный предел (каскады вне скоупа). index.ts: экспорт makeParticlePerspUniforms. Тесты: perspVisibleRadius, общий persp-блок переживает рост ёмкости. check:fast 407 тестов, гейт погоды зелёный (26 чеков). Co-Authored-By: Claude Code <noreply@anthropic.com> |
|---|
|
|
| v2/CLAUDE.md |
|---|
| v2/packages/engine/src/index.ts |
|---|
| v2/packages/engine/src/render/__tests__/cameraMath.test.ts |
|---|
| v2/packages/engine/src/render/__tests__/particleLayers.test.ts |
|---|
| v2/packages/engine/src/render/cameraMath.ts |
|---|
| v2/packages/engine/src/render/particles.ts |
|---|
| v2/packages/engine/src/render/voxelRenderer.ts |
|---|