Flex Engine เป็นเครื่องมือเกมส่วนตัวที่ฉันเริ่มทำงานในต้นปี 2560 ฉันใช้มันเป็นสนามเด็กเล่นเพื่อเรียนรู้เกี่ยวกับเทคนิคการแสดงผลแบบเรียลไทม์และการจำลอง Flex Engine ไม่ใช่เครื่องยนต์เกมเชิงพาณิชย์และไม่ได้มีไว้สำหรับการใช้งานสาธารณะ
อาคารงอ
ดู build.md
คุณสมบัติที่โดดเด่น
- Vulkan แสดงผลแบ็กเอนด์ (vulkanrenderer.cpp)
- คอมไพเลอร์ภาษาสคริปต์ในเกม/ตัวแก้ไขและเครื่องเสมือน (VirtualMachine.cpp)
- การคอมไพล์ shader ที่ใช้การตรวจสอบตามเงื่อนไข (ShaderCompiler.cpp)
- การตรวจสอบการปรับเปลี่ยนไฟล์สำหรับพื้นผิวตาข่าย, prefabs, shaders, ไฟล์กำหนดค่า ฯลฯ (ResourceManager.cpp)
- บรรณาธิการฉากพร้อม Serialization (basescene.cpp)
- เครื่องมือบรรณาธิการ (แปลง Gizmo, Editor Property, KeyBinding Editor ฯลฯ ) (editor.cpp)
- เครื่องมือตรวจสอบ/ตรวจสอบโปรไฟล์ขั้นพื้นฐาน
- รองรับ Windows & Linux
- การแสดงผล:
- เดินขบวน Cubes Terrain Generator & Renderer
- Gerstner Wave Ocean Renderer
- ไฟพื้นที่สี่เหลี่ยมผืนผ้า (กระจายโดยตรงอย่างเดียวและ specular)
- รูปแบบการแรเงาตามร่างกาย
- แสงตามภาพ
- การบดเคี้ยวโดยรอบของหน้าจอ
- การทำแผนที่เงาแบบเรียงซ้อนกัน
- การต่อต้านนามแฝงชั่วคราว
- ฟิลด์ระยะทางที่ลงนาม (SDF) การสร้างและการแสดงผล
- การจำลองอนุภาคที่ใช้ GPU
ภูมิประเทศขั้นตอนที่สร้างขึ้นบน GPU
Gerstner Wave Ocean Simulation
การทำแผนที่เงา
สองล้านอนุภาคจำลองและแสดงผลทั้งหมดบน GPU
Profiler Overlay แสดงการแยกย่อยเวลา CPU ของเฟรมเดียว
หน้าต่างบรรณาธิการบางตัว
การบดเคี้ยวโดยรอบของหน้าจอ (SSAO)
gbuffer (ซ้ายบนไปด้านล่างขวา): ตำแหน่ง, อัลเบโด, ปกติ, ภาพสุดท้าย, ความลึก, โลหะ, AO, ความหยาบ
ดูเข้าไปในบรรณาธิการ


ดูภาพหน้าจอเพิ่มเติมที่นี่
การพึ่งพาอาศัยกัน
Flex Engine ใช้ห้องสมุดโอเพนซอร์สต่อไปนี้:
- กระสุน - การตรวจจับการชนและการจำลองร่างกายที่เข้มงวด
- freetype - การโหลดแบบอักษร
- GLFW - การสร้างหน้าต่างการจัดการอินพุต
- GLM - การดำเนินการทางคณิตศาสตร์
- Imgui - ส่วนต่อประสานผู้ใช้
- Openal - การโหลดเสียงและการเล่น
- STB - การโหลดรูปภาพ
- cgltf - การโหลดตาข่าย
- Volk - Meta -Loader Vulkan
ใบอนุญาต
Flex Engine ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT ดูใบอนุญาตสำหรับรายละเอียด
กิตติกรรมประกาศ
ขอขอบคุณอย่างมากสำหรับบุคคลและองค์กรต่อไปนี้สำหรับแหล่งข้อมูลที่มีประโยชน์อย่างไม่น่าเชื่อ:
- Baldur Karlsson จาก github.com/baldurk/renderdoc
- Alexander Overvoorde แห่ง Vulkan-tutorial.com
- Sascha Willems จาก github.com/saschawillems/vulkan
- Joey de Vries จาก learnopengl.com
- Andrew Maximov สำหรับรุ่นปืนพกและพื้นผิว artisaverb.info/pbt.html
- freepbr.com สำหรับพื้นผิว PBR คุณภาพสูง
- ผู้เขียนและผู้สนับสนุนทั้งหมดไปยังห้องสมุดโอเพนซอร์ซที่กล่าวถึงข้างต้น
บล็อก
อยู่ (ค่อนข้าง) ทันสมัยเกี่ยวกับโครงการนี้ในบล็อกของฉันที่ ajweeks.com/blog