# Визуальные наблюдения GZDoom (Gate 30)

Дата: 2026-10-10. Источник: 6 скриншотов, присланных пользователем (ванильный Doom, GZDoom, моды). Скриншоты в репозиторий не добавлены (чужие ассеты). Код, шейдеры и таблицы GZDoom не использовались.

## ГЛАВНОЕ ПРАВИЛО: МЫ ОСТАЁМСЯ 2D-ДВИЖКОМ

Ни одно наблюдение ниже не является причиной вводить 3D-сцену, меш-мир или ECS. Каждый эффект выражается через XY-BSP + ячейки + вертикальные промежутки + порталы + ограниченные поверхности. Сам Doom — это 2D-карта с высотами; мы берём наблюдаемый результат, а не его 3D-реализацию. Если эффект нельзя объяснить через 2D BSP + VerticalSpans, он не входит в Renderer 1.0.

## Карточки

| № | Что видит игрок | Требование Re2D | Выражение в модели Re2D | Статус в нашем рендере |
|---|---|---|---|---|
| 1 | Ванильный коридор: дальняя светлая комната на фоне тёмных ближних стен; свет задан областью, а не только дистанцией | Свет по промежутку (span) + затухание по расстоянию | `R2DSpanLight` + distance curve | реализовано (classic) |
| 2 | Красные светящиеся снаряды дают тёплое пятно на полу и стенах; углы тёмные; плафон на потолке ярко светится независимо от окружения | Динамические цветные огни с радиусом; emissive-материал независим от освещения | native light pool, emissive канал | реализовано |
| 2 | Окно с яркой небесной текстурой в тёмной комнате | Небо / яркая поверхность не затемняется | sky как фон-поверхность | реализовано (sky) |
| 2 | Кровь на полу | Декали | декаль на поверхности | реализовано (decals) |
| 3 | Красные полосы и знаки на тёмных стенах горят в темноте; зелёное свечение оружия освещает окружение; спрайты монстров светятся (fullbright) | emissive карта; свет от эффекта оружия; спрайт с собственной яркостью | emissive + native light + флаг яркости у sprite node | проверить fullbright у sprite node |
| 3 | Лава/огонь освещает пол вокруг | Эмиссия поверхности + локальный огонь как свет | light + emissive | реализовано |
| 4 | Улица: фиолетовое небо, контейнеры с разной яркостью граней (ориентация стен) | Orientation contrast + небо | `r2d_wall_orientation_bias`, sky | реализовано |
| 5 | Тёмный зал, вспышка выстрела: оранжевый свет на оружии, полу, стенах; красные пятна света на полу от полос; зелёная дымка | Muzzle flash как короткоживущий свет; туман/дым с цветом | native light с lifetime; fog per span | реализовано |
| 5 | Окружающая тьма не абсолютно чёрная: стены читаются | Минимальный ambient / пол света на промежутке | span light level | проверить пол ambient в golden-сценах |
| 6 | Дым: серая дымка у потолка, дальше туман светлеет к серому; светящийся ромб на стене горит независимо | Туман с цветом и плотностью; emissive | span fog, emissive | реализовано |
| 6 | Разная яркость соседних комнат/зон; пол в клетку читается по перспективе | Свет по промежуткам; perspective-correct UV | span light, GPU surfaces | реализовано |

## Что НЕ берём из наблюдений

- Дискретные «ступени» яркости ванильного Doom (таблицы COLORMAP) — только своя плавная кривая.
- Спрайты-билборды как основа мира: у нас Re2DSprite.
- Любые мод-эффекты (HUD, миникарта, кровь-частицы) — это не рендер мира.
- Точные цвета и коэффициенты: подбираются на наших golden-сценах, не копируются.

## Что проверить дальше (по итогам наблюдений)

1. Fullbright/emissive у sprite node в тёмной сцене (карточка 3).
2. Нижний порог видимости (ambient floor) в тёмном зале (карточка 5).
3. Сравнить наши сцены «тёмная комната + красная лампа», «вспышка выстрела», «дымный коридор» рядом с этими кадрами по настроению, не по пикселям.

Ограничение: наблюдения сделаны по статичным картинкам неизвестных модов/настроек, а не по запуску GZDoom. Это ориентир поведения, не точная спецификация.
