Flex Engine adalah mesin permainan pribadi yang mulai saya kerjakan pada awal 2017. Saya menggunakannya sebagai taman bermain untuk belajar tentang rendering real-time dan teknik simulasi. Mesin Flex bukanlah mesin permainan komersial juga tidak dimaksudkan untuk penggunaan publik.
Membangun Flex
Lihat build.md
Fitur penting
- Vulkan Rendering Backend (vulkanrenderer.cpp)
- Kompiler/editor bahasa skrip dalam game dalam game (virtualmachine.cpp)
- Rekompilasi Shader Berbasis Checksum Bersyarat (ShaderCompiler.cpp)
- Pemantauan modifikasi file untuk tekstur, jerat, prefab, shader, file konfigurasi, dll. (ResourceManager.cpp)
- Editor adegan dengan serialisasi (Basescene.cpp)
- Alat Editor (Transform Gizmo, Editor Properti, Editor Keybinding, dll.) (Editor.cpp)
- Alat penangkapan/inspeksi profil dasar
- Dukungan untuk Windows & Linux
- Rendering:
- Generator & Renderer Daerah Kubus Berbaris
- Renderer Ocean Gerstner Wave
- Lampu Area Persegi Panjang (Direct-only Diffuse & Specular)
- Model naungan berbasis fisik
- Pencahayaan berbasis gambar
- Layar-ruang oklusi ambient
- Pemetaan bayangan bertingkat yang stabil
- Anti-aliasing temporal
- Bidang Jarak Tertanda (SDF) Font Generasi & Rendering
- Simulasi partikel berbasis GPU
Medan prosedural yang dihasilkan di GPU
Simulasi Ocean Gerstner Wave
Pemetaan bayangan bertingkat
Dua juta partikel disimulasikan dan ditampilkan sepenuhnya pada GPU
Overlay Profiler Menampilkan kerusakan waktu CPU dari satu bingkai
Beberapa windows editor
Layar-ruang ambient occlusion (SSAO)
GBuffer (kiri atas ke kanan bawah): Posisi, Albedo, Normal, Gambar Akhir, Kedalaman, Logam, AO, Kekasaran
Lihat ke Editor


Lihat lebih banyak tangkapan layar di sini
Dependensi
Flex Engine menggunakan pustaka sumber terbuka berikut:
- Bullet - Deteksi Tabrakan & Simulasi Tubuh yang Kaku
- Freetype - Font Loading
- GLFW - Pembuatan Jendela, Penanganan Input
- GLM - Operasi Matematika
- IMGUI - Antarmuka Pengguna
- Openal - Memuat dan pemutaran audio
- STB - Pemuatan Gambar
- cgltf - pemuatan mesh
- Volk - Vulkan Meta -Loader
Lisensi
Mesin Flex dilisensikan di bawah lisensi MIT. Lihat lisensi.md untuk detailnya.
Ucapan Terima Kasih
Terima kasih banyak harus diberikan kepada individu dan organisasi berikut untuk sumber daya mereka yang sangat berguna:
- Baldur Karlsson dari github.com/baldurk/renderdoc
- Alexander Overvoorde dari vulkan-tutorial.com
- Sascha Willems dari github.com/saschawillems/vulkan
- Joey de Vries dari Learnopengl.com
- Andrew Maximov untuk Model Pistol dan Tekstur Artisaverb.info/pbt.html
- Freepbr.com untuk tekstur PBR berkualitas tinggi
- Semua penulis dan kontributor perpustakaan open-source yang disebutkan di atas
Blog
Tetap (agak) mutakhir tentang proyek ini di blog saya di ajweeks.com/blog