| Modul | Perpustakaan Inti | menggambarkan |
|---|---|---|
runtime | - | Modul inti |
runtime/cgpu | - | Submodule Inti, API Grafis Cross-Platform untuk Platform GPU Modern |
runtime/sugoi | - | Core Submodule, model objek ECS pemrograman yang benar-benar berbasis data |
runtime/math | Realtimemath | Submodul Inti, Perpustakaan Matematika |
runtime/io | - | Submodul Inti, Layanan I/O Sinkron/Asinkron |
runtime/task | Fibertaskinglib, Marl | Core Submodule, sistem tugas komputasi-intensif berdasarkan coroutine |
runtime/binary | - | Submodule inti, serialisasi biner |
runtime/platform | - | Submodule Inti, Antarmuka Sistem |
runtime/resource | - | Submodul Inti, Manajemen Sumber Daya Asinkron |
runtime/type | - | Submodule inti, menyediakan fungsi terkait RTTI |
runtime/lua | Lua, Luau | Submodule inti, menggunakan Lua sebagai bahasa lem |
SkrScene | - | Modul adegan, manajemen sumber daya adegan |
SkrRenderer | - | Renderer Module, Rendering Resource Management, Drive Rendering Pipeline |
SkrImgui | Imgui | Runtime UI untuk debugging |
SkrRenderGraph | - | Render grafik berdasarkan CGPU |
SkrLive2d | live2d | Live2D Rendering Backend |
SkrInputSystem | GainInput | Paket input atas |
SkrAnim | Ozz-animasi | Manajemen Sumber Daya Animasi, Fungsi Dasar Komputasi Animasi |
devtime/tweak | - | Memberikan solusi penggantian panas konstan ringan |
devtime/inspect | - | Memberikan visualisasi keadaan variabel runtime |
SkrToolCore | - | Mengelola dan mendorong proses memanggang sumber daya |
SkrAnimTool | Ozz-animasi | Sumber Daya Terkait Animasi Impor dan Panggang |
SkrGLTFTool | CGLTF | Impor model GLTF dan memanggangnya |
SkrTextureCompiler | ISPCTEXTURECOMPRESOR | Impor dan memanggang peta |
SkrShaderCompiler | - | Impor dan memanggang sumber daya terkait material |
codegen | libtooling, mako-template | Memberikan pembuatan kode |
| Platform | CI (dev) |
|---|---|
| Platform | D3D12 | D3D11 | Vulkan | Logam |
|---|---|---|---|---|
| Windows | ✔️ | ✔️ | N/a | |
| MacOS | N/a | N/a | ✔️ | ❗ |
| Platform | Png | Jpeg | BMP | ICO | Exr | TGA |
|---|---|---|---|---|---|---|
| Windows | libpng (v1.5.2) | libjpeg-turbo | ❗ | ❗ | ❗ | ❗ |
| MacOS | libpng (v1.5.27) | libjpeg-turbo | ❗ | ❗ | ❗ | ❗ |
Game dan server multipemain berbasis ECS.
Antarmuka grafis CGPU generasi berikutnya menggunakan StateBuffer. Abaikan konsep PSO dan gunakan Statebuffer sebagai deskripsi keadaan dari pipa grafis. API Pipa Grafik Tradisional sering menggunakan PSO, yang mengemas semua keadaan pipa dan shader Isa dan mengunggahnya ke GPU secara keseluruhan:
Statebuffer terdiri dari serangkaian statechunks, masing -masing Statechunk menjelaskan keadaan pipa grafis, dan StateBuffer menggambarkan keadaan lengkap dari pipa grafis melalui kombinasi statechunks. Dibandingkan dengan flush penuh PSO, StateBuffer dapat menyiapkan stategackets di situs gambar dan mendorong sakelar status ke grup register status GPU ketika drawcall dihasilkan.
Statebuffer dapat sangat mengurangi masalah memori yang disebabkan oleh ledakan dalam kombinasi pipa dan shader, dan PSO akan memperburuk masalah ini sebagai gantinya.
WIP ...
Lapisan rendertree GUI memiliki fungsi tipografi dan rendering objek render. Mendukung primitif dasar, tekstur, kuas warna dan paragraf teks.
Contoh program yang mengintegrasikan SDK asli Kubisme dan menggunakan grafik render untuk menggambar efisien model Live2D.
Model Live2D menggabungkan beberapa tipe data sumber, dan semua tipe data dimuat dan diuraikan secara asinkron. Seluruh proses pemuatan model menggabungkan bacaan hard disk, streaming memori ke memori video, aliran dekompresi file ke memori video, dan mengarahkan unggahan file ke memori video. Demo memastikan bahwa semua jenis operasi I/O tetap efisien bandwidth, di mana utas utama yang memulai permintaan tidak memiliki jeda atau overhead. Model Live2D yang tidak diproses berisi lusinan file JSON ukuran kecil, beberapa file verteks model ukuran sedang, dan dua peta PNG 4K yang perlu diterjemahkan, membentuk bagan profil pipa I/O pada gambar di bawah ini.
Hitungan bingkai rendering akhir pengiriman Build dapat dengan mudah memecahkan ribuan bingkai, yang lebih dari sepuluh kali lipat contoh Benchmark Contoh Kubisme Resmi.
Demo ini menunjukkan cara menggunakan RenderGraph untuk rendering yang ditangguhkan, di mana bagian perhitungan pencahayaan adalah dua implementasi: Computeshdaer dan Pixelshader. Efek naungan pencahayaan yang sebenarnya belum selesai dalam demo, dan fokusnya adalah memverifikasi kelayakan proses penundaan. Demo ini juga menunjukkan cara menggunakan profiler khusus untuk membuat profil detail eksekusi RenderGraph.
Demo ini menunjukkan cara menggunakan rendergraph untuk rendering segitiga.
Demo ini menunjukkan cara menggunakan pengambilan sampel tekstur di CGPU, dan demo juga menunjukkan cara mengaktifkan sampler statis/abadi di CGPU.
Kami akhirnya meninggalkan hasil yang telah kami jelajahi. Meninggalkan tidak berarti bahwa teknologi ini buruk atau tidak tersedia, tetapi kami secara selektif meninggalkannya setelah pertimbangan komprehensif.
Ini adalah demo gambar segitiga multi-backend.
Kompilasi dengan perintah berikut
> xmake l setup.lua
> xmake f -m debug -c
> xmake
Tips:
/build saat ini dapat menyebabkan interupsi codegen atau masalah .xmake tidak lengkap. Jika ada masalah lebih lanjut, pastikan untuk melaporkan masalah?xmake f -m debug -c -v di interupsi;xrepo remove --all -y dapat digunakan untuk membersihkan repositori yang diinstal secara salah dan kemudian membangunnya kembali. Disarankan untuk menggunakan vscode + clangd sebagai lingkungan pengeditan, dan menggunakan perintah xmake project -k compile_commands untuk menghasilkan set data yang diperlukan oleh clangd