-
Nikitos создал
Первый шаг псевдо-3D (docs/TASKS.md §12.12). Без z-буфера псевдо-3D не бывает: плоский спрайт не может перекрываться выпуклостью, если глубины нет вовсе. * текстура глубины D32_FLOAT под размер кадра со пересозданием при смене размера; подключается целью глубины к проходу сцены с очисткой в 1.0 (дальняя плоскость, ближе — меньше); * тест глубины (LESS_OR_EQUAL) включён в конвейерах по умолчанию, управляется из игры: $.gfx.depth(on?) и engine.setDepth/engine.depth; * СПРАЙТЫ пишут z = 0, поэтому порядок отрисовки между ними сохраняется, а прежняя отрисовка выглядит ровно как раньше — это проверено сравнением кадров (тест highlevel_depth_test.py); * новая подсистема меша: свой формат вершины (позиция float3 с глубиной + uv + цвет, 24 байта), свой вершинный шейдер, конвейеры на каждый режим смешивания, свой GPU-буфер и заливка; меш рисуется ПЕРВЫМ в проходе сцены, чтобы успеть записать глубину до спрайтов; * engine.depthInfo() — диагностика (текстура, конвейер, счётчики меша): без неё «меш не рисуется» неотличимо от «меш не создан». Найденные ошибки: 1) атрибут глубины с нулевым смещением пересекался с позицией, и конвейер меша молча не создавался (заметно только по диагностике); 2) ранний выход заливки и ранний выход отрисовки сцены забывали про меш — кадр только с мешем не заливался и не рисовался вовсе; 3) конвейеры меша создавались только в пути живых шейдеров и отсутствовали в базовом пути инициализации. ЧЕСТНО: сам меш пока НЕ рисуется на экране — конвейер и буфер есть, кадр не меняется. Это записано в docs/highlevel/depth.md и в docs/TASKS.md §12 отдельной задачей; z-буфер при этом полностью рабочий и проверенный. Проверка: tests/agent/highlevel_depth_test.py (6 проверок), полный набор qjs, bsp и агентских тестов зелёный.
9ee5a4cb