| Modul | Kernbibliothek | beschreiben |
|---|---|---|
runtime | - - | Kernmodule |
runtime/cgpu | - - | Kernsubmodules, plattformübergreifende Grafik-API für moderne GPU-Plattformen |
runtime/sugoi | - - | Kernsubmodul, ein wirklich datengesteuerter Programmier-ECS-Objektmodell für Programmierungen |
runtime/math | Realtimath | Kernsubmodules, Mathematikbibliothek |
runtime/io | - - | Kernsubmodulen, synchron/asynchrone E/A -Dienste |
runtime/task | Fibertaskinglib, Marl | Kern-Submodule, ein rechenintensives Task-System basierend auf Coroutine |
runtime/binary | - - | Kernsubmodul, binäre Serialisierung |
runtime/platform | - - | Kernsubmodul, Systemschnittstelle |
runtime/resource | - - | Kernsubmodules, asynchrone Ressourcenmanagement |
runtime/type | - - | Kernsubmodul, die RTTI-bezogene Funktionen bereitstellen |
runtime/lua | Lua, Luau | Kernsubmodul, die Lua als Klebersprache verwendet |
SkrScene | - - | Szenenmodul, Szenenressourcenmanagement |
SkrRenderer | - - | Renderer -Modul, Rendern von Ressourcenverwaltung, Steigerung der Rendering -Pipeline |
SkrImgui | Imgui | Laufzeit -Benutzeroberfläche zum Debuggen |
SkrRenderGraph | - - | Renderndiagramm basierend auf CGPU |
SkrLive2d | Live2d | Live2d Rendering Backend |
SkrInputSystem | Gewinn | Das obere Eingangspaket |
SkrAnim | Ozz-Animation | Animationsressourcenverwaltung, grundlegende Funktionen des Animation Computing |
devtime/tweak | - - | Bietet leichte Lösungen für konstante Wärmeersatzlösungen |
devtime/inspect | - - | Bietet eine Visualisierung der Laufzeit variablen Zustands -Status |
SkrToolCore | - - | Verwalten und antreiben Sie Ressourcen -Backprozesse |
SkrAnimTool | Ozz-Animation | Ressourcen importieren und backen Animationsbezogene Ressourcen |
SkrGLTFTool | CGLTF | Importieren Sie das GLTF -Modell und backen Sie es |
SkrTextureCompiler | ISPCTextureCompressor | Karten importieren und backen |
SkrShaderCompiler | - - | Ressourcen importieren und backen |
codegen | libtooling, mako-template | Codegenerierung bereitstellen |
| Plattform | CI (Dev) |
|---|---|
| Plattform | D3D12 | D3D11 | Vulkan | Metall |
|---|---|---|---|---|
| Fenster | ✔️ | ✔️ | N / A | |
| macos | N / A | N / A | ✔️ | ❗ |
| Plattform | Png | JPEG | Bmp | ICO | Exr | TGA |
|---|---|---|---|---|---|---|
| Fenster | libpng (v1.5.2) | libjpeg-turbo | ❗ | ❗ | ❗ | ❗ |
| macos | libpng (v1.5.27) | libjpeg-turbo | ❗ | ❗ | ❗ | ❗ |
ECS-basiertes Multiplayer-Spiel und Server.
CGPU Grafische Schnittstelle der nächsten Generation mit StateBuffer. Geben Sie das Konzept von PSO auf und verwenden Sie StateBuffer als Zustandsbeschreibung der Grafikpipeline. Traditionelle Grafik -Pipeline -APIs verwenden häufig PSO, wodurch alle Pipeline -Zustände und Shader ISA packt und sie als Ganzes in die GPU hochgeladen werden:
StateBuffer besteht aus einer Reihe von Statechuns, von denen jeder Statechunk einen grafischen Pipeline -Zustand beschreibt, und StateBuffer beschreibt den vollständigen Zustand der grafischen Pipeline durch eine Kombination von Statechsen. Im Vergleich zum vollständigen Spush von PSO kann StateBuffer Statepackets auf der Zeichenstelle vorbereiten und den Statusschalter zur Erstellung von Drawcall zur Statusregistergruppe der GPU übertragen.
StateBuffer kann die durch Explosionen in Pipeline- und Shader -Kombinationen verursachten Gedächtnisauflöschprobleme erheblich lindern, und PSO verschlimmert stattdessen dieses Problem.
WIP ...
Die Rendertree -Schicht der GUI hat die Funktionen der Typografie und des Renderns von Renderobjekten. Unterstützt grundlegende Primitive, Texturen, Farbbürsten und Textabsätze.
Beispiel eines Programms, das den nativen Kubismus -SDK integriert und das Render -Diagramm für die effiziente Zeichnung von Live2D -Modellen verwendet.
Das Live2D -Modell kombiniert mehrere Quelldatentypen, und alle Datentypen werden asynchron geladen und analysiert. Der gesamte Modellladeprozess kombiniert das Lesen von Festplatten, das Speicher von Speicher auf Videospeicher, das Dekompressions -Streaming von Dateien zum Videospeicher und das direkte Upload von Dateien in den Videospeicher. Demo stellt sicher, dass alle Arten von E/A -Operationen eine Bandbreite effizient bleiben, in der der Hauptfaden, der die Anfrage initiiert, keine Pausen oder Overhead enthält. Das unverarbeitete Live2D-Modell enthält Dutzende kleiner JSON-Dateien, mehrere mittelgroße Modellvertex-Dateien und zwei 4K-PNG-Karten, die in der folgenden Abbildung das E/A-Pipeline-Profildiagramm bilden müssen.
Der endgültige Rendering -Rahmen von Shipping Build kann leicht Tausende von Frames brechen, was mehr als das Zehnfache des offiziellen Cubism -Beispiel -Benchmarks ist.
Diese Demo zeigt, wie RenderGraph für aufgeschobene Rendering verwendet wird, wobei der Beleuchtungsberechnungsteil zwei Implementierungen ist: Computeshdaer und Pixelshader. Der tatsächliche Beleuchtungsschattierungseffekt wurde in der Demo nicht abgeschlossen, und der Fokus liegt auf der Überprüfung der Machbarkeit des Verzögerungsverfahrens. Diese Demo zeigt auch, wie Sie einen benutzerdefinierten Profiler verwenden, um die Ausführungsdetails von RenderGraph zu profilieren.
Diese Demo zeigt, wie RenderGraph für Dreieckswiedergabe verwendet wird.
Diese Demo zeigt, wie die Texturabtastung in CGPU verwendet wird, und die Demo zeigt auch, wie statische/unveränderliche Stichproben in CGPU aktiviert werden können.
Am Ende haben wir die Ergebnisse aufgegeben, die wir untersucht hatten. Das Verlassen bedeutet nicht, dass diese Technologien schlecht oder nicht verfügbar sind, sondern dass wir sie nach umfassender Überlegung selektiv aufgegeben haben.
Dies ist eine Multi-Backend-Dreiecks-Demo.
Kompilieren Sie mit dem folgenden Befehl
> xmake l setup.lua
> xmake f -m debug -c
> xmake
Tipps:
.xmake aktuelle Versionsfehler kann /build Codegen -Interrupts oder unvollständigen Problemen führen. Wenn es ein weiteres Problem gibt, melden Sie bitte Probleme?xmake f -m debug -c -v am Interrupt anzugeben.xrepo remove --all -y verwendet werden, um das fälschlicherweise installierte Repository zu reinigen und dann wieder aufzubauen. Es wird empfohlen, VSCODE + clangd als Bearbeitungsumgebung zu verwenden und den Befehl xmake project -k compile_commands zu verwenden, um den von Clangd erforderlichen Datensatz zu generieren