| โมดูล | ห้องสมุดหลัก | อธิบาย |
|---|---|---|
runtime | - | โมดูลหลัก |
runtime/cgpu | - | Core Submodules, API กราฟิกข้ามแพลตฟอร์มสำหรับแพลตฟอร์ม GPU ที่ทันสมัย |
runtime/sugoi | - | Core Submodule ซึ่งเป็นโมเดลวัตถุ ECS ที่ขับเคลื่อนด้วยข้อมูลอย่างแท้จริง |
runtime/math | realtimeMath | submodules หลัก, คณิตศาสตร์ห้องสมุด |
runtime/io | - | Core Submodules, Synchronous/Asynchronous I/O บริการ |
runtime/task | Fibertaskinglib, Marl | Core Submodule ระบบงานที่ต้องคำนวณมากขึ้นอยู่กับ coroutine |
runtime/binary | - | Submodule หลัก, การทำให้เป็นอนุกรมไบนารี |
runtime/platform | - | Submodule หลัก, อินเทอร์เฟซระบบ |
runtime/resource | - | Submodules หลักการจัดการทรัพยากรแบบอะซิงโครนัส |
runtime/type | - | Core Submodule ซึ่งให้ฟังก์ชั่นที่เกี่ยวข้องกับ RTTI |
runtime/lua | lua, luau | Core Submodule โดยใช้ Lua เป็นภาษากาว |
SkrScene | - | โมดูลฉากการจัดการทรัพยากรฉาก |
SkrRenderer | - | โมดูลเรนเดอร์, การจัดการทรัพยากรการแสดงผล, ไดรฟ์ส่งไปป์ไลน์ |
SkrImgui | Imgui | รันไทม์ UI สำหรับการดีบัก |
SkrRenderGraph | - | แสดงกราฟตาม CGPU |
SkrLive2d | Live2D | Live2D Rendering Backend |
SkrInputSystem | การได้รับ | แพ็คเกจด้านบนของอินพุต |
SkrAnim | อนิเมชั่น | การจัดการทรัพยากรภาพเคลื่อนไหวฟังก์ชั่นพื้นฐานของการคำนวณภาพเคลื่อนไหว |
devtime/tweak | - | จัดหาโซลูชันการเปลี่ยนความร้อนคงที่น้ำหนักเบา |
devtime/inspect | - | ให้การสร้างภาพสถานะตัวแปรรันไทม์ |
SkrToolCore | - | จัดการและขับเคลื่อนกระบวนการอบทรัพยากร |
SkrAnimTool | อนิเมชั่น | นำเข้าและอบทรัพยากรที่เกี่ยวข้องกับภาพเคลื่อนไหว |
SkrGLTFTool | cgltf | นำเข้าโมเดล GLTF และอบ |
SkrTextureCompiler | ispctexturecompressor | แผนที่นำเข้าและอบ |
SkrShaderCompiler | - | นำเข้าและนำเข้าทรัพยากรวัสดุที่เกี่ยวข้องกับวัสดุ |
codegen | libtooling, mako-template | จัดเตรียมการสร้างรหัส |
| แพลตฟอร์ม | CI (dev) |
|---|---|
| แพลตฟอร์ม | D3D12 | D3D11 | Vulkan | โลหะ |
|---|---|---|---|---|
| หน้าต่าง | N/A | |||
| แม็กอส | N/A | N/A |
| แพลตฟอร์ม | png | jpeg | BMP | ICO | ข้อต่อ | TGA |
|---|---|---|---|---|---|---|
| หน้าต่าง | libpng (v1.5.2) | libjpeg-turbo | ||||
| แม็กอส | libpng (v1.5.27) | libjpeg-turbo |
เกมและเซิร์ฟเวอร์ผู้เล่นหลายคนที่ใช้ ECS
อินเทอร์เฟซกราฟิก CGPU รุ่นต่อไปโดยใช้ StateBuffer ละทิ้งแนวคิดของ PSO และใช้ StateBuffer เป็นคำอธิบายสถานะของท่อกราฟิก กราฟิกแบบดั้งเดิม APIs มักจะใช้ PSO ซึ่งบรรจุทุกสถานะไปป์ไลน์และ Shader ISA และอัปโหลดไปยัง GPU โดยรวม:
StateBuffer ประกอบด้วยชุดของ statechunks แต่ละ statechunk อธิบายสถานะท่อกราฟิกและ StateBuffer อธิบายสถานะที่สมบูรณ์ของท่อกราฟิกผ่านการรวมกันของ statechunks เมื่อเปรียบเทียบกับการล้าง PSO เต็มรูปแบบ StateBuffer สามารถเตรียมแพ็คเก็ต Statepackets ในไซต์การวาดและกดสวิตช์สถานะไปยังกลุ่มการลงทะเบียนสถานะของ GPU เมื่อสร้างการเรียกเก็บเงิน
StateBuffer สามารถบรรเทาปัญหาการขยายตัวของหน่วยความจำที่เกิดจากการระเบิดในการรวมกันของท่อและ shader และ PSO จะทำให้ปัญหานี้รุนแรงขึ้นแทน
เช็ด ...
เลเยอร์ Rendertree ของ GUI มีฟังก์ชั่นการพิมพ์และการแสดงผลของวัตถุที่เรนเดอร์ รองรับเบื้องต้นพื้นฐานพื้นผิวแปรงสีและย่อหน้าข้อความ
ตัวอย่างของโปรแกรมที่รวม Cubism Native SDK และใช้กราฟเรนเดอร์สำหรับการวาดรูปแบบ Live2D ที่มีประสิทธิภาพ
โมเดล Live2D รวมประเภทข้อมูลหลายชนิดและประเภทข้อมูลทั้งหมดจะถูกโหลดและแยกวิเคราะห์แบบอะซิงโครนัส กระบวนการโหลดโมเดลทั้งหมดรวมการอ่านฮาร์ดดิสก์การสตรีมหน่วยความจำไปยังหน่วยความจำวิดีโอการสตรีมการบีบอัดไฟล์ไปยังหน่วยความจำวิดีโอและการอัปโหลดไฟล์โดยตรงไปยังหน่วยความจำวิดีโอ การสาธิตทำให้มั่นใจได้ว่าการดำเนินการ I/O ทุกประเภทยังคงมีประสิทธิภาพแบนด์วิดท์ในระหว่างที่เธรดหลักที่เริ่มต้นคำขอไม่มีการหยุดชั่วคราวหรือค่าใช้จ่าย โมเดล Live2D ที่ยังไม่ผ่านกระบวนการประกอบด้วยไฟล์ JSON ขนาดเล็กหลายสิบไฟล์ไฟล์จุดยอดขนาดกลางหลายรุ่นและแผนที่ 4K PNG สองแผนที่ที่ต้องถอดรหัสสร้างแผนภูมิโปรไฟล์ท่อ I/O ในรูปด้านล่าง
การนับจำนวนเฟรมการแสดงผลสุดท้ายของการจัดส่งสามารถทำลายเฟรมได้หลายพันเฟรมซึ่งมากกว่ามาตรฐานแบบคิวบิสต์อย่างเป็นทางการมากกว่าสิบเท่า
การสาธิตนี้แสดงวิธีการใช้ RenderGraph สำหรับการเรนเดอร์รอการตัดบัญชีซึ่งส่วนการคำนวณแสงเป็นสองการใช้งาน: Computeshdaer และ Pixelshader เอฟเฟกต์การแรเงาแสงที่แท้จริงยังไม่เสร็จสมบูรณ์ในการสาธิตและมุ่งเน้นไปที่การตรวจสอบความเป็นไปได้ของกระบวนการหน่วงเวลา การสาธิตนี้ยังแสดงวิธีการใช้โปรไฟล์ที่กำหนดเองเพื่อโปรไฟล์รายละเอียดการดำเนินการของ RenderGraph
การสาธิตนี้แสดงวิธีการใช้ RenderGraph สำหรับการแสดงผลสามเหลี่ยม
การสาธิตนี้แสดงให้เห็นถึงวิธีการใช้การสุ่มตัวอย่างพื้นผิวใน CGPU และการสาธิตยังแสดงให้เห็นถึงวิธีการเปิดใช้งานตัวอย่างแบบคงที่/ไม่เปลี่ยนรูปใน CGPU
เราลงเอยด้วยการละทิ้งผลลัพธ์ที่เราสำรวจ การละทิ้งไม่ได้หมายความว่าเทคโนโลยีเหล่านี้ไม่ดีหรือไม่สามารถใช้งานได้ แต่เราเลือกที่จะละทิ้งพวกเขาหลังจากการพิจารณาที่ครอบคลุม
นี่คือการสาธิตการวาดรูปสามเหลี่ยมหลาย ๆ หลัง
รวบรวมด้วยคำสั่งต่อไปนี้
> xmake l setup.lua
> xmake f -m debug -c
> xmake
เคล็ดลับ:
.xmake /build เวอร์ชันปัจจุบันอาจทำให้ Codegen ขัดจังหวะหรือปัญหาที่ไม่สมบูรณ์ หากมีปัญหาเพิ่มเติมโปรดตรวจสอบปัญหาxmake f -m debug -c -v ที่อินเตอร์รัปต์;xrepo remove --all -y สามารถใช้ในการทำความสะอาดที่เก็บที่ติดตั้งอย่างไม่ถูกต้องแล้วสร้างใหม่ ขอแนะนำให้ใช้ vscode + clangd เป็นสภาพแวดล้อมการแก้ไขและใช้คำสั่ง xmake project -k compile_commands เพื่อสร้างชุดข้อมูลที่กำหนดโดย Clangd