| Модуль | Основная библиотека | описывать |
|---|---|---|
runtime | - | Основные модули |
runtime/cgpu | - | Основные подмодули, кроссплатформенная графическая API для современных платформ графических процессоров |
runtime/sugoi | - | Core Submodule, действительно управляемая данными объектная модель программирования ECS |
runtime/math | Realtimemath | Основные подмодулы, математическая библиотека |
runtime/io | - | Основные подмодули, синхронные/асинхронные услуги ввода/вывода |
runtime/task | Fibertaskinglib, Marl | Core Submodule, вычислительная система задач на основе Coroutine |
runtime/binary | - | Основной подмодуль, бинарная сериализация |
runtime/platform | - | Основной подмодуль, системный интерфейс |
runtime/resource | - | Основные подмодули, асинхронное управление ресурсами |
runtime/type | - | Основной подмодуль, обеспечивая функции, связанные с RTTI |
runtime/lua | Луа, Луау | Основной подмодуль, используя LUA в качестве клея |
SkrScene | - | Модуль сцены, управление ресурсами сцены |
SkrRenderer | - | Модуль рендеринга, управление ресурсами, конвейер рендеринга привода |
SkrImgui | Имгуи | Пользовательский интерфейс времени выполнения для отладки |
SkrRenderGraph | - | Рендеринговый график на основе CGPU |
SkrLive2d | Live2d | Live2d рендеринг бэкэнд |
SkrInputSystem | GainInput | Верхний пакет ввода |
SkrAnim | анимация OZZ | Управление анимационными ресурсами, основные функции анимационных вычислений |
devtime/tweak | - | Обеспечивает легкие постоянные решения для замены тепла |
devtime/inspect | - | Обеспечивает визуализацию переменной среды выполнения визуализации |
SkrToolCore | - | Управление и управление процессами выпечки ресурсов |
SkrAnimTool | анимация OZZ | Ресурсы, связанные с анимацией импорта и выпекания |
SkrGLTFTool | CGLTF | Импортировать модель GLTF и испечь ее |
SkrTextureCompiler | ISPCTextureCompressor | Карты импорта и выпекания |
SkrShaderCompiler | - | Импорт и выпекание ресурсов, связанных с материалами |
codegen | Libtooling, Mako-Template | Предоставьте генерацию кода |
| Платформа | CI (DEV) |
|---|---|
| Платформа | D3D12 | D3D11 | Вулкан | Металл |
|---|---|---|---|---|
| Окна | ✔ | ✔ | N/a | |
| macOS | N/a | N/a | ✔ | ❗ |
| Платформа | Пнн | JPEG | BMP | Ico | Пример | TGA |
|---|---|---|---|---|---|---|
| Окна | libpng (v1.5.2) | libjpeg-turbo | ❗ | ❗ | ❗ | ❗ |
| macOS | libpng (v1.5.27) | libjpeg-turbo | ❗ | ❗ | ❗ | ❗ |
Многопользовательская игра на основе ECS и сервер.
Графический интерфейс CGPU следующего поколения с использованием StateBuffer. Отказаться от концепции PSO и использовать StateBuffer в качестве описания состояния графического трубопровода. Традиционные API -интерфейсы традиционных графических трубопроводов часто используют PSO, который упаковывает все состояния трубопроводов и шейдер ISA и загружает их в GPU в целом:
Statebuffer состоит из серии Statechunks, каждый StateChunk описывает состояние графического трубопровода, а Statebuffer описывает полное состояние графического трубопровода посредством комбинации Statechunks. По сравнению с полным промыванием PSO, StateBuffer может подготовить StatePackets на сайте чертежа и подтолкнуть переключатель состояний к группе регистра статуса GPU при создании DrawCall.
StateBuffer может значительно облегчить проблемы с раздучением памяти, вызванные взрывами в комбинациях трубопроводов и шейдеров, а PSO усугубит эту проблему.
WIP ...
Уровень rendertree GUI имеет функции типографии и рендеринга объектов рендеринга. Поддерживает основные примитивы, текстуры, цветные кисти и текстовые параграфы.
Пример программы, которая интегрирует нативную SDK Cubism и использует график рендеринга для эффективного рисования моделей Live2D.
Модель Live2D объединяет несколько типов исходных данных, и все типы данных загружаются и анализируются асинхронно. Весь процесс загрузки модели объединяет чтение жесткого диска, потоковую передачу памяти с видео памяти, потоковую передачу декомпрессии файла в видео память и направленную загрузку файлов в видео память. Демонстрация гарантирует, что все типы операций ввода -вывода оставались эффективными, в течение которых основной поток, который инициирует запрос, не имеет пауза или накладных расходов. Необработанная модель Live2D содержит десятки малых файлов JSON, несколько файлов вершин среднего размера и две 4K PNG-карты, которые необходимо декодировать, образуя диаграмму профиля ввода/вывода на рисунке ниже.
Количество финальных каркасов Rendering в сборке Shipping может легко сломать тысячи кадров, что более чем в десять раз превышает официальный пример кубизма.
Эта демонстрация показывает, как использовать rendergraph для отложенного рендеринга, где часть расчета освещения представляет собой две реализации: Computeshdaer и Pixelshader. Фактический эффект затенения освещения не был завершен в демонстрации, и основное внимание уделяется проверке осуществимости процесса задержки. Эта демонстрация также показывает, как использовать пользовательский профилировщик, чтобы профилировать детали выполнения rendergraph.
Эта демонстрация показывает, как использовать rendergraph для рендеринга треугольника.
Эта демонстрация демонстрирует, как использовать выборку текстуры в CGPU, и демонстрация также демонстрирует, как включить статические/неизменные пробоотборники в CGPU.
В итоге мы отказались от результатов, которые мы исследовали. Отказ не означает, что эти технологии плохие или недоступные, но мы избирательно отказались от них после всестороннего рассмотрения.
Это демонстрация треугольника с несколькими чертежом.
Скомпилировать со следующей командой
> xmake l setup.lua
> xmake f -m debug -c
> xmake
Советы:
.xmake прерываниям /build или неполными проблемами. Если есть еще одна проблема, пожалуйста, сообщите о проблемах?xmake f -m debug -c -v при прерывании;xrepo remove --all -y может использоваться для очистки неправильно установленного репозитория, а затем его восстановления. Рекомендуется использовать VSCODE + CLANGD в качестве среды редактирования и использовать команду xmake project -k compile_commands для генерации набора данных, требуемого Clangd