Skip to content

Releases: DenielX/SPP_EXP

SP-P Engine v11 (0.1.1)

Choose a tag to compare

@DenielX DenielX released this 09 Jul 17:17
image

Первый публичный релиз исходников движка 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, но и оптимизации по отсечению полигонов неприменимы).
  • — классическая версия с динамическим рендером и оптимизациями по отсечению полигонов.