| Módulo | Biblioteca | describir |
|---|---|---|
runtime | - | Módulos centrales |
runtime/cgpu | - | Submódulos centrales, API de gráficos multiplataforma para plataformas modernas de GPU |
runtime/sugoi | - | Core Submodule, un modelo de objeto ECS de programación verdaderamente basado en datos |
runtime/math | RealTimememath | Submódulos centrales, biblioteca de matemáticas |
runtime/io | - | Submódulos centrales, servicios de E/S síncronos/asincrónicos |
runtime/task | Fibertaskinglib, marga | Core Submodule, un sistema de tareas intensivo en cómputo basado en Coroutine |
runtime/binary | - | Submódulo de núcleo, serialización binaria |
runtime/platform | - | Submódulo de núcleo, interfaz del sistema |
runtime/resource | - | Submódulos centrales, gestión de recursos asincrónicos |
runtime/type | - | Core Submodule, que proporciona funciones relacionadas con RTTI |
runtime/lua | Lua, Luau | Submódulo de núcleo, utilizando lua como lenguaje de pegamento |
SkrScene | - | Módulo de escena, gestión de recursos de escena |
SkrRenderer | - | Módulo de renderizador, gestión de recursos, gestión de recursos de impulso |
SkrImgui | imgui | Ui de tiempo de ejecución para depuración |
SkrRenderGraph | - | Renderizar gráfico basado en CGPU |
SkrLive2d | Live2D | Backend de renderizado Live2D |
SkrInputSystem | ganancia | El paquete superior de entrada |
SkrAnim | animación de ozz | Gestión de recursos de animación, funciones básicas de la computación de animación |
devtime/tweak | - | Proporciona soluciones de reemplazo de calor constantes livianas |
devtime/inspect | - | Proporciona visualización de estado variable de tiempo de ejecución |
SkrToolCore | - | Administrar e impulsar procesos de horneado de recursos |
SkrAnimTool | animación de ozz | Recursos relacionados con la animación de importación y horno |
SkrGLTFTool | CGLTF | Importar el modelo GLTF y hornearlo |
SkrTextureCompiler | ISPCTEXTURECOPRESOR | Mapas de importación y horno |
SkrShaderCompiler | - | Recursos relacionados con el material de importación y horno |
codegen | Libbtooling, plantilla de mako | Proporcionar generación de código |
| Plataforma | CI (Dev) |
|---|---|
| Plataforma | D3D12 | D3D11 | Vulkan | Metal |
|---|---|---|---|---|
| Windows | ✔️ | ✔️ | N / A | |
| macosa | N / A | N / A | ✔️ | ❗ |
| Plataforma | Png | Jpeg | BMP | ICO | Exr | TGA |
|---|---|---|---|---|---|---|
| Windows | libpng (v1.5.2) | libjpeg-turbo | ❗ | ❗ | ❗ | ❗ |
| macosa | libpng (v1.5.27) | libjpeg-turbo | ❗ | ❗ | ❗ | ❗ |
Juego multijugador basado en ECS y servidor.
Interfaz gráfica CGPU de próxima generación utilizando StateBuffer. Abandonar el concepto de PSO y use StateBuffer como la descripción del estado de la tubería de gráficos. Las API de tuberías gráficas tradicionales a menudo usan PSO, que empaqueta todos los estados de tuberías y sombreadores ISA y los sube a la GPU en su conjunto:
StateBuffer consta de una serie de statechunks, cada statechunk describe un estado de tubería gráfica y StateBuffer describe el estado completo de la tubería gráfica a través de una combinación de statechunks. En comparación con la descarga completa del PSO, StateBuffer puede preparar paquetes de estado en el sitio de dibujo y empujar el interruptor de estado al grupo de registro de estado de la GPU cuando se genera DrawCall.
StateBuffer puede aliviar en gran medida los problemas de hinchazón de memoria causados por explosiones en las combinaciones de tuberías y sombreadores, y PSO exacerbará este problema.
WIP ...
La capa Rendertree de la GUI tiene las funciones de tipografía y representación de objetos de renderizado. Admite primitivas básicas, texturas, cepillos de color y párrafos de texto.
Ejemplo de un programa que integra el SDK nativo de Cubism y utiliza un gráfico de renderizado para el dibujo eficiente de los modelos Live2D.
El modelo LIVE2D combina múltiples tipos de datos de origen, y todos los tipos de datos se cargan y analizan asincrónicamente. Todo el proceso de carga del modelo combina lectura de disco duro, transmisión de memoria a la memoria de video, la transmisión de descompresión de archivos a la memoria de video y la carga directa de archivos a la memoria de video. La demostración asegura que todos los tipos de operaciones de E/S sigan siendo eficientes de ancho de banda, durante el cual el hilo principal que inicia la solicitud no tiene pausas ni sobrecargas. El modelo Live2D sin procesar contiene docenas de archivos JSON de tamaño pequeño, varios archivos de vértices modelo de tamaño mediano y dos mapas 4K PNG que deben decodificarse, formando la tabla de perfil de tuberías de E/S en la figura a continuación.
El conteo de marco de renderizado final de Shipping Build puede romper fácilmente miles de cuadros, que es más de diez veces el punto de referencia oficial de Cubismo.
Esta demostración muestra cómo usar Rendergraph para la representación diferida, donde la parte de cálculo de iluminación es dos implementaciones: Compceshdaer y PixelShader. El efecto de sombreado de iluminación real no se ha completado en la demostración, y el enfoque está en verificar la viabilidad del proceso de retraso. Esta demostración también muestra cómo usar un perfilador personalizado para perfilar los detalles de ejecución de Rendergraph.
Esta demostración muestra cómo usar Rendergraph para la representación de triángulos.
Esta demostración demuestra cómo usar el muestreo de textura en CGPU, y la demostración también demuestra cómo habilitar muestreadores estáticos/inmutables en CGPU.
Terminamos abandonando los resultados que habíamos explorado. El abandono no significa que estas tecnologías sean pobres o no estén disponibles, sino que las abandonamos selectivamente después de una consideración integral.
Esta es una demostración de dibujo de triángulo de múltiples backend.
Compilar con el siguiente comando
> xmake l setup.lua
> xmake f -m debug -c
> xmake
Consejos:
/build .xmake versión actual puede causar interrupciones de Codegen o problemas incompletos. Si hay más problemas, asegúrese de informar problemas.xmake f -m debug -c -v en la interrupción;xrepo remove --all -y se puede usar para limpiar el repositorio instalado erróneamente y luego reconstruirlo. Se recomienda usar VScode + Clangd como el entorno de edición, y utilizar el comando xmake project -k compile_commands para generar el conjunto de datos requerido por Clangd