Razix is a High Performance Engine for experimenting with different rendering techniques. Razix supports Windows, Mac, Linux.
THIS ENGINE IS BEING MADE FOR A GAME< not a generic engine, I'll have the GDD/Story etc. soon here!
Razix is a cross-Platform 3D engine with multi render API support (Vulkan, DirectX 12). It's being built on a new design principle of "Everything is as asset" to replace traditonal gameobject and ECS systems and primarily focusing on making a game one day soon. I have a game idea that I'll be showcasing using the engine in 2025 hopefully, eventually I hope razix will be mature enough one day. It's also my portfolio + practice sandbox for making a trippy game.
View the Trello Board and the Architecture notes on Draw.io
- Built using C++17. (Engine will be reverted back to C++14 once entt/sol have been removed and only Jolt will be compiled in C++17 mode)
- C++14 over C++11 because
constexpr
andsizeof
and improvedlamdbas
are needed for framegraph.
- C++14 over C++11 because
- Support for Windows, Linux, macOS.
- Support for Vulkan & DirectX 12.
- Data Driven Framegraph based on EA's frostbite engine (based on skaarj
1989's Framegraph implementation)
- Uses Custom Node Graph Editor
Node based Frame Graph Editor |
---|
FrameGraph lifetimes |
---|
- 3D audio using OpenAL
- Complete Deferred pipeline + Bindless resources + nanite-like renderers(Future support for customizable render graph editor for complete control).
- Runtime tools using ImGui + Blender Support as level editor
- Multi Physics engine support.
- 3D physics using Jolt.
- Basic lua scripting support
- Extremely detailed profiling using Tracy and RenderDoc integrated
- Supports HLSL shading language to create custom materials + Custom Razix Shaders files for easy compilation
- Resource Pool base management and custom asset format
- Data drive pipeline architecture - FrameGraph uses JSON files
- Custom Razix STL and Razix Memory
- WorldRenderer Passes
- Lighting and shadows
- Directional lights with CSM (Cascaded Shadow Mapping)
- Point lights
- Spot lights
- Deferred PBR
- IBL
- Skybox (HDR & Procedural)
- SSAO
- Debug Drawing
- ImGUi
- Tonemapping
- FXAA
- TAA (WIP)
- Lighting and shadows
Experimental features:
- Machine Learning sandbox (custom NNs class + Transformers WIP) CPU only for now, later might be ported over the engine RHI layer
- Department based memory/frame time budget profiling (inspiration from SMS GDC talk and Insomniac engine)
- I have a secret RazixGPT runst LLM might use it for game NPCs one day.
DirectX11, OpenGL has been deprecated. Only high-level APIs and RTX level GPUs will be supported. PSVita(GXM) and PS3(GCM) will be supported sometime far in future.
Assumes you have VULKAN_SDK installed and the env variable is configured properly
- Clone the Repository
git clone https://github.com/Pikachuxxxx/Razix.git
cd Razix
- Generate Premake Project Files Windows (PowerShell)
Windows
cd Scripts
.\u005cGeneratePremakeProjects.bat
Linux/macOS (Bash)
# From the repo root:
chmod +x Scripts/generate_projects.sh
./Scripts/generate_projects.sh
Razix uses Premake5 for project generation. Scripts are provided for different platforms. No need to clone submodules.
Windows (Visual Studio) Open build/Razix.sln in Visual Studio 2022 or newer Select a configuration: Debug, Release, or Dist Press Ctrl+Shift+B or select Build > Build Solution
either run the game or run some tests
More information will be update on creating PRs and other ways to contribute to Razix Engine.
Check the style guide for Razix Style enforcements
ex. Lua Scriping API cheatsheet
Check the Docs folder or Architecture notes on Draw.io for a detailed architecture description
Core Systems | Frame Graph |
---|---|
Razix Engine is distributed under Apache 2.0 license. LICENSE