Commit graph

6 commits

Author SHA1 Message Date
44b0ece2ab render: вода (SURF_WARP), area-скайбокс с правильным порядком глубины, лайтмапы диспов по UV
- Вода: детект Water-шейдера (/), отдельный полупрозрачный
  проход с френелем; поверхность/изнанка по нормали. Белая дыра на месте воды
  (2D-скайбокс «вниз») устранена.
- 3D-скайбокс: выбор граней по area листа sky_camera (движок: area bits), а не по
  AABB. Disp-грани не попадают в leaf_faces — выбор по листу центра грани; теперь
  в скайбоксе есть большая плоскость flatgrass_2 (пропадала — торчала «стена»
  бетонного пола). Защита >30% граней = скайбокс не выделяем (gm_flatgrass).
- Порядок: 2D-скайбокс фоном -> 3D-меш (depth Always, без записи) -> мир ->
  вода. Скайбокс больше не проступает сквозь дальние стены карты.
- Лайтмапы: блок грани (size+1)^2 с индексом v*width+u; для displacement'ов —
  плотная сетка по UV поверхности (CalcDispSurfCoords), а не проекция мира:
  убрана «шахматка» теней на рельефе. Скайбокс-меш тоже сэмплит лайтмапы.
- Тесты: gm_flatgrass-диспы живут в скайбоксе (z≈-16000), пороги обновлены.
- docs/RECON.md §12: форматы листьев/граней, лайтмапы, скайбокс, вода.
2026-10-12 08:28:28 +03:00
2aeee1ac0a engine/render: модели энтити (prop_static/prop_dynamic/prop_physics) и 3D-скайбокс
- engine::model: сборка мешей MDL+VVD+VTX (bind pose, LOD 0), материалы через
  cd-каталоги модели, поворот углами Source
- build_world: экземпляры prop_* моделей в общий меш мира (9 инстансов на
  gm_construct), кэш моделей и текстур
- 3D-скайбокс: выделение скайбокс-граней (AABB вокруг sky_camera, <30% карты),
  сжатие 1/scale вокруг камеры, отдельный пайплайн с глубиной у дальней
  плоскости; 2D-скайбокс рисуется только в незакрытых пикселях
- тесты: sky_mesh на gm_construct, пороги дисплейсментов обновлены
2026-10-12 02:42:12 +03:00
537bb4238f engine/client: коллизия с брашами и displacement'ами, фикс AABB игрока
- AABB игрока: ступни на position.z (было — центр), фикс проекций на нормали
  (учёт знака компонент) — игрок больше не проваливается сквозь пол
- коллизия displacement'ов: SAT AABB-треугольник (13 осей, минимальный сдвиг
  для тонких поверхностей) + пространственная сетка 128 юнитов
- ориентация сетки displacement'ов: стартовый угол по startPosition, далее по
  порядку обхода грани (VBSP AdjustSurfPointData); индексы a*side+b; проверено
  на gm_construct — 332 совпадающих ребра соседних displacement'ов
- нормали displacement'ов наружу (порядок обхода как у граней BSP)
- тесты игрока: падение на пол, стояние на треугольнике, направления стрейфа
2026-10-12 02:18:06 +03:00
38cebc2cbf engine/client: игрок — коллизия с BSP-брашами, гравитация, ходьба, прыжок, присед
- engine::player: Collision (BRUSHES/BRUSHSIDES, твёрдые содержимые), AABB-разрешение
  проникновений с подшагами, Player (800 грав., 268 прыжок, 250 ходьба, присед)
- map: спавн на info_player_start, режим ходьбы по умолчанию, V — noclip,
  камера на уровне глаз, обзор мышью
- gm_construct: 2129 брашей коллизии, полёт/ходьба без падений
2026-10-12 00:39:28 +03:00
75325668b3 client/engine: фиксы — инверсия мыши по горизонтали, ориентация displacement'ов по startPosition
- мышь: движение вправо уменьшает yaw (Source: +Y — влево)
- displacement: (0,0) сетки — угол, ближайший к startPosition; оси по текстурным осям
- далее: игрок (коллизия с BSP-брашами, гравитация, ходьба), вода, модели
2026-10-12 00:35:30 +03:00
b8b5a4c328 engine/render: M3 v0 — рендер мира BSP со скайбоксом
- crates/engine: сборка мира (браши, displacement'ы, лайтмапы в вершинах,
  материалы через VMT/patch/include, кэш текстур, пропуск прозрачных материалов),
  загрузка скайбокса из skyname
- crates/render: wgpu-рендерер мира (VB/IB, батчи, глубина), скайбокс-куб,
  камера-полёт, capture PNG с учётом BGRA, debug-режимы материалов
- client: команда map (диск/VPK, pakfile карты, WASD+мышь, --pos/--angles/--screenshot)
- тесты: gm_construct/gm_flatgrass собираются, 0 заглушек, 41 324 треугольника
- docs: прогресс M3 и заметки (BGRA, pak-VMT, z=w клиппинг)
2026-10-12 00:06:26 +03:00