Skip to content

Pikachuxxxx/Razix

Repository files navigation


Razix Engine

CI Build Release Build Scheduled Build

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!

About

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

Features

  • 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 and sizeof and improved lamdbas are needed for framegraph.
  • 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)
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)

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.

RoadMap

Building Razix

This section provides comprehensive instructions for building Razix Engine from source. The engine supports Windows and macOS platforms, with full Linux support coming soon.

Prerequisites

General Requirements

  • Git for cloning the repository
  • Python 3.x for build and test scripts
  • VulkanSDK 1.3.290.0 or later

Platform-Specific Requirements

Windows:

  • Visual Studio 2022 (Community, Professional, or Enterprise)
  • Windows 10/11 (x64)

macOS:

  • Xcode Command Line Tools
  • macOS 10.15 or later
  • ARM64 (Apple Silicon) or x86_64 architecture

Environment Setup

Installing VulkanSDK

Windows:

  1. Download VulkanSDK 1.3.290.0 from LunarG
  2. Run the installer with default settings
  3. The installer will automatically set the VULKAN_SDK environment variable
  4. Verify installation by opening a new command prompt and running:
    echo %VULKAN_SDK%
    This should show the installation path (e.g., C:\VulkanSDK\1.3.290.0)

macOS:

  1. Download VulkanSDK 1.3.290.0 from LunarG
  2. Mount the DMG and run the InstallVulkan app
  3. Install to the default location (~/VulkanSDK/1.3.290.0)
  4. Add environment variables to your shell profile (~/.zshrc or ~/.bash_profile):
    export VULKAN_SDK="$HOME/VulkanSDK/1.3.290.0/macOS"
    export PATH="$VULKAN_SDK/bin:$PATH"
  5. Reload your shell or run source ~/.zshrc
  6. Verify installation:
    echo $VULKAN_SDK
    vulkaninfo --summary

Building the Engine

1. Clone the Repository

git clone https://github.com/Pikachuxxxx/Razix.git
cd Razix

2. Generate Project Files

Windows:

cd Scripts
GenerateVS22.bat

macOS:

cd Scripts
chmod +x GenerateXCodeProjectsMacOS.sh
./GenerateXCodeProjectsMacOS.sh

This will generate platform-specific project files in the build/ directory using Premake5.

3. Build Using Python Script (Recommended)

Razix includes a cross-platform Python build script that automates the build process:

Windows:

cd Scripts
python build_razix.py --platform windows --config Debug

macOS:

cd Scripts
python build_razix.py --platform macos --config Debug

Available configurations: Debug, Release, GoldMaster

4. Build Using IDE (Alternative)

Windows (Visual Studio):

  1. Open build/Razix.sln in Visual Studio 2022
  2. Select configuration: Debug, Release, or GoldMaster
  3. Build the solution: Ctrl+Shift+B or Build > Build Solution

macOS (Xcode):

  1. Open the generated .xcodeproj files in the build/ directory
  2. Select the desired scheme and configuration
  3. Build using Cmd+B

Running Tests

Razix includes a comprehensive test suite that can be run using the provided Python test runner:

cd Scripts
python test_runner.py [config] [platform] [--verbose]

Examples:

# Run tests with Debug configuration on Windows
python test_runner.py Debug windows-x86_64

# Run tests with Release configuration on macOS with verbose output
python test_runner.py Release macosx-ARM64 --verbose

# Run tests with default configuration (Debug, windows-x86_64)
python test_runner.py

The test runner will:

  • Execute all engine tests and graphics tests
  • Generate test logs in the TestResults/ directory
  • Display a summary of passed/failed tests

Build Output

Successful builds will generate:

  • Engine libraries in bin/[Config]-[Platform]/
  • Executable files (Sandbox, tests) in the same directory
  • Intermediate files in build/intermediates/

Troubleshooting

Common Issues:

  1. VulkanSDK not found: Ensure VULKAN_SDK environment variable is set correctly
  2. MSBuild errors on Windows: Verify Visual Studio 2022 is installed with C++ development tools
  3. Xcode build failures on macOS: Ensure Xcode Command Line Tools are installed: xcode-select --install
  4. Python script errors: Verify Python 3.x is installed and accessible via python command

Getting Help:

  • Check the issue tracker for known problems
  • Review the CI workflows in .github/workflows/ for reference build configurations

V 1.0.0 - RC

Contributing

More information will be update on creating PRs and other ways to contribute to Razix Engine.

Style Guide

Check the style guide for Razix Style enforcements

Screenshots/Demos

Architecture

⚠️ Still a work in progress

ex. Lua Scriping API cheatsheet Lua Scriping API cheatsheet

Check the Docs folder or Architecture notes on Draw.io for a detailed architecture description

Core Systems Frame Graph

Changelog and Release Notes

Click to view changelog

Click to view ReleaseNotes

License

Razix Engine is distributed under Apache 2.0 license. LICENSE