Releases: DenielX/SPP_EXP
Releases · DenielX/SPP_EXP
Release list
SP-P Engine v11 (0.1.1)
Первый публичный релиз исходников движка SP-P Engine для PSP.
📦 Изменения/добавления в этой версии:
- Весь рендер переписан с PSPOGL на нативные sce функции
- Уменьшено время формирования списка на отрисовку (была инверсия следования компонент GMO)
- Подключены UV координаты
- Подключены текстуры, несколько материалов на модель (за счёт сабмешей)
- Расширен VRAM (PSP Slim+). Спасибо MDave, Crow_bar и st1x51
- VRAM приоритизирован под выделение на модели
- Сделана аппаратная поддержка clut текстур в различной конфигурации
- Поддержка матриц трансформации для убора дубликатов моделей
- Перевод моделей на тристрипы без индексации
- Бинарный поиск по ide+ipl (по id)
- Добавлено переключение между triangle (2) и triangle strips (1) в draw цикл по флагу
- Поправлена цветокоррекция
- Сделаны прерасчёты матриц, для оптимизации
- Инстансинг по идентичным сабмешам внутри одной инстанс-группы
- Оптимизация смены GE состояний: кеширование флагов в VRAM и переключение на CPU
- Ускорен механизм стримминга ресурсов по ID
- Единоразовая загрузка идентичных ресурсов
- Добавлен флаг куллинга для двустороннего рендеринга
- Перенесен Frustrum Culling со старого пятого билда (прирост колоссальный)
- Обратно введена дальность отсечения (300) + дельта.
- Введён флаг включения/выключения оптимизаций влияющих на кол-во полигонов (frust. cull + дальность) на кнопку start
- Вернул редактирование передней плоскости отсечения+fov+дальности прорисовки на рантайме
- Введение 10 байтного формата вершин: GU_TEXTURE_8BIT | GU_COLOR_5551 | GU_VERTEX_16BIT | GU_TRANSFORM_3D. Можно вместе с 36ти байтным
- Включение нормалей
- swizzling
- Система сборки отдельно под PSP FAT (и эмуляторы) и под PSP SLIM+
- Добавлены свободные ассеты. Теперь нет проблем с демонстрацией без нарушения авторского права.
static_dlist:
- Единоразовый дисплейный лист для стриминга мира чанками. Отсечения не работают. Полностью снимает нагрузку с CPU
🛠 Фиксы:
- Забивал память дубликатами. Исправлено
- Фикс нормалей (свет/тени вшитые/vertex color не работали). Отсутствующие нормали заменены на 0,0,1 (x,y,z)
- Объекты с альфой: индекс записан в 1-ой строке IPL под комментарием (val_in_ipl - 3 = индекс в массиве). Объекты с альфой заранее помещены в конец IPL.
- Многократное переоткрытие IMG - исправлено.
- Объекты в IDE предварительно отсортированы по ID по возрастанию (compile-time)
- Переписан частично софтварный инстансинг, прирост минимальный есть
- Фикс падения производительности (из-за std:cerr)
- Ранние отсечения по нижней плоскости отсечения - поправлено
🔎 R&D 💡
❌ Откат:
- Попытка в атласы для обхода отсутствия мультитекстурирования. Тайлинг нарушен, атласы забивают ОЗУ дубликатами
- Single buffer сделан. Разрывы. Пойдет на эксперименты по освобождению VRAM под толстые ассеты
- Индексные модели. Низкая скорость чтения по сравнению с линейными. Но появился T&L (не компенсирует)
- Статик батчинг карты. Большой жор ОЗУ, нет прироста по рантайму на GE. Кол-во draw calls не влияет.
- Ассеты PS2->PC содержат больше дегенеративных треугольников, но они вроде отбрасываются.
✔️ Выяснено:
- Закрытые ассеты в 1.15 млн полигонов чистыми (без отсечений) дают: 15 FPS * 1.1млн тристрипов ≈ 16.5млн/сек. С освещением, цветами вершин с запеченными тенями, нормалями и текстурами PS2 (без шринкляции по разрешению, но clut).
- Предел выделения памяти сейчас: PSP_HEAP_SIZE_KB(~47874); Ну то есть около 47 мегабайт. Остальные 3-4 метра память стека.
Все что не откатано, то в списке применённых изменений
🎮 Управление (PSP)
В данном демо-релизе доступен режим свободной камеры для облета города.
| Кнопка | Действие |
|---|---|
| 🕹️ | Взгляд камеры |
| 🔼 / 🔽 | -0.01 / +0.01 к передней плоскости отсечения |
| -1 / +1 к FOV | |
| ❌ / 🔺 | Лететь вперед / лететь реверсно |
| L / R | -30 / +30 к дальности прорисовки |
| START | применить оптимизации по отсечению полигонов (неприменимо к static_dlist версиям) |
📥 Какой архив мне скачать?
В этом релизе доступно 4 версии движка. Выберите ту, которая подходит для вашей консоли:
- SLIM версия требуют разблокированной памяти (4MB VRAM). Не подходят для эмулятора (нет разблокировки доп. VRAM). Для консолей PSP Slim (2000/3000/Go/Street).
- FAT_PPSSPP версия используют стандартные лимиты (2MB VRAM). Подходят для классической PSP-100X (Fat) и PPSSPP/JPCSP.
- static_dlist — версия со статическим дисплей-листом (мир запекается 1 раз при загрузке, нет нагрузки на CPU, но и оптимизации по отсечению полигонов неприменимы).
- — классическая версия с динамическим рендером и оптимизациями по отсечению полигонов.