| Módulo | Biblioteca Core | descrever |
|---|---|---|
runtime | - | Módulos principais |
runtime/cgpu | - | Submódicos principais, API gráfica de plataforma cruzada para plataformas GPU modernas |
runtime/sugoi | - | Core Submodule, um modelo de objeto de programação ECS verdadeiramente orientado a dados |
runtime/math | Realtimhath | Submódulos principais, biblioteca de matemática |
runtime/io | - | Submódulos principais, serviços de E/S síncronos/assíncronos |
runtime/task | FiberTaSkingLib, Marl | Core Submodule, um sistema de tarefas intensivas em computação baseado em coroutine |
runtime/binary | - | Submódulo central, serialização binária |
runtime/platform | - | Submódulo central, interface do sistema |
runtime/resource | - | Submódulos principais, gerenciamento de recursos assíncronos |
runtime/type | - | Submódulo central, fornecendo funções relacionadas à RTTI |
runtime/lua | Lua, Luau | Submodule do núcleo, usando Lua como linguagem de cola |
SkrScene | - | Módulo de cena, gerenciamento de recursos de cena |
SkrRenderer | - | Módulo de renderizador, Gerenciamento de recursos de renderização, Drive Rendering Pipeline |
SkrImgui | Imgui | Interface do tempo de execução para depuração |
SkrRenderGraph | - | Renderizar gráfico baseado no CGPU |
SkrLive2d | Live2D | Back -end de renderização ao vivo2D |
SkrInputSystem | Gaininput | O pacote superior de entrada |
SkrAnim | Animação de Ozz | Gerenciamento de recursos de animação, funções básicas da computação de animação |
devtime/tweak | - | Fornece soluções leves de substituição de calor constante |
devtime/inspect | - | Fornece visualização de estado variável de tempo de execução |
SkrToolCore | - | Gerenciar e direcionar processos de cozimento de recursos |
SkrAnimTool | Animação de Ozz | Importar e assar recursos relacionados à animação |
SkrGLTFTool | CGLTF | Importar o modelo GLTF e assá -lo |
SkrTextureCompiler | ISPCTEXTURECOMPRESSOR | Mapas de importação e assar |
SkrShaderCompiler | - | Importar e assar recursos relacionados ao material |
codegen | Libtooling, mako-template | Fornecer geração de código |
| Plataforma | CI (dev) |
|---|---|
| Plataforma | D3D12 | D3D11 | Vulkan | Metal |
|---|---|---|---|---|
| Windows | ✔️ | ✔️ | N / D | |
| macos | N / D | N / D | ✔️ | ❗ |
| Plataforma | Png | JPEG | BMP | Ico | Exr | TGA |
|---|---|---|---|---|---|---|
| Windows | libpng (v1.5.2) | libjpeg-turbo | ❗ | ❗ | ❗ | ❗ |
| macos | libpng (v1.5.27) | libjpeg-turbo | ❗ | ❗ | ❗ | ❗ |
Jogo e servidor multiplayer baseados em ECS.
Interface gráfica CGPU da próxima geração usando o StateBuffer. Abandone o conceito de PSO e use o StateBuffer como a descrição do estado do pipeline gráfico. As APIs tradicionais de pipeline de gráficos costumam usar o PSO, que empacota todos os estados do oleoduto e shader Isa e as carrega para a GPU como um todo:
O StateBuffer consiste em uma série de Statechunks, cada Statechunk descreve um estado de pipeline gráfico, e o StateBuffer descreve o estado completo do pipeline gráfico através de uma combinação de Statechunks. Comparado com a descarga completa do PSO, o StateBuffer pode preparar o StatePackets no local de desenho e empurrar a mudança de estado para o grupo de registro de status da GPU quando o DrawCall for gerado.
O StateBuffer pode aliviar bastante os problemas de inchaço de memória causados por explosões nas combinações de pipeline e shader, e o PSO exacerbará esse problema.
WIP ...
A camada de renderstre da GUI tem as funções da tipografia e a renderização de objetos de renderização. Suporta primitivas básicas, texturas, escovas de cores e parágrafos de texto.
Exemplo de um programa que integra o SDK nativo do Cubism e usa o Render Graph para desenho eficiente dos modelos LIVE2D.
O modelo Live2D combina vários tipos de dados de origem e todos os tipos de dados são carregados e analisados de forma assíncrona. Todo o processo de carregamento do modelo combina leitura de disco rígido, streaming de memória para memória de vídeo, streaming de descompressão de arquivos para a memória de vídeo e o upload direto de arquivos para a memória de vídeo. A demonstração garante que todos os tipos de operações de E/S permaneçam eficientes em largura de banda, durante os quais o encadeamento principal que inicia a solicitação não tem pausas ou despesas gerais. O modelo LIVE2D não processado contém dezenas de arquivos JSON de tamanho pequeno, vários arquivos de vértice modelo de tamanho médio e dois mapas PNG em 4K que precisam ser decodificados, formando o gráfico de perfil de tubulação de E/S na figura abaixo.
A contagem final de quadros de renderização da Shipping Build pode facilmente quebrar milhares de quadros, o que é mais de dez vezes o exemplo oficial do cubismo.
Essa demonstração mostra como usar rendergraph para renderização diferida, onde a parte do cálculo da iluminação são duas implementações: Computeshdaer e Pixelshader. O efeito de sombreamento de iluminação real não foi concluído na demonstração e o foco está em verificar a viabilidade do processo de atraso. Essa demonstração também mostra como usar um perfil personalizado para perfilar os detalhes da execução do RenderGraph.
Esta demonstração mostra como usar rendergraph para renderização do triângulo.
Essa demonstração demonstra como usar a amostragem de textura na CGPU e a demonstração também demonstra como ativar amostradores estáticos/imutáveis na CGPU.
Acabamos abandonando os resultados que havíamos explorado. O abandono não significa que essas tecnologias não estejam mobilizadas ou indisponíveis, mas que os abandonamos seletivamente após consideração abrangente.
Esta é uma demonstração de desenho de triângulo com vários zagueiros.
Compilar com o seguinte comando
> xmake l setup.lua
> xmake f -m debug -c
> xmake
Pontas:
/build versão atual pode causar interrupções .xmake código ou problemas incompletos. Se houver algum problema, não se esqueça de relatar problemas?xmake f -m debug -c -v na interrupção;xrepo remove --all -y pode ser usado para limpar o repositório instalado incorretamente e, em seguida, reconstruí -lo. Recomenda -se usar o VSCODE + CLANGD como ambiente de edição e usar o Comando xmake project -k compile_commands para gerar o conjunto de dados exigido por Clangd