OHAO Engine is a custom physics and rendering engine that integrates with Godot 4.x as a GDExtension. It features a Vulkan-based renderer and custom physics simulation.
OHAO Engine runs as a GDExtension plugin inside Godot Editor, providing:
- Custom Vulkan offscreen renderer (renders to texture displayed in Godot)
- Custom physics simulation
- Actor-component system for scene management
Godot Editor
│
▼
OhaoViewport (GDExtension)
│
├─ OffscreenRenderer (Vulkan)
│ └─ Renders scene to pixel buffer
│
└─ Scene/Actor/Component system
└─ Custom physics simulation
macOS:
- Xcode Command Line Tools
- CMake 3.20+
- Vulkan SDK (via MoltenVK from Homebrew)
- SCons (for GDExtension)
- Godot 4.x
# Install dependencies on macOS
xcode-select --install
brew install cmake vulkan-loader molten-vk sconsLinux:
- CMake 3.20+
- Vulkan SDK
- SCons
- Godot 4.x
# Install dependencies on Ubuntu/Debian
sudo apt install cmake libvulkan-dev sconsgit clone --recursive https://github.com/Qervas/ohao-engine.git
cd ohao-engine
# Or if you already cloned without --recursive:
git submodule update --init --recursivemkdir -p build && cd build
cmake ..
make -j$(nproc) # Linux
make -j8 # macOScd godot_editor
scons platform=macos arch=arm64 # macOS Apple Silicon
scons platform=macos arch=x86_64 # macOS Intel
scons platform=linux arch=x86_64 # Linuxcd godot_editor/project
godot -eThe OHAO Viewport tab will appear in the Godot Editor, displaying the custom Vulkan renderer output.
- Arrow Keys: Orbit camera (pitch/yaw)
- W/S: Zoom in/out
- A/D: Pan left/right
- Q/E: Pan up/down
ohao-engine/
├── src/
│ ├── engine/ # Actor-component system, scene management
│ │ ├── actor/ # Entity system
│ │ ├── asset/ # Asset loading
│ │ ├── component/ # Mesh, Transform, Light, Physics components
│ │ └── scene/ # Scene management & loaders
│ ├── physics/ # Custom physics engine
│ │ ├── collision/ # Broad/narrow phase collision
│ │ ├── dynamics/ # Rigid body dynamics
│ │ ├── constraints/ # Physics constraints
│ │ └── world/ # Physics world management
│ ├── renderer/ # Vulkan rendering
│ │ ├── offscreen/ # Headless Vulkan renderer
│ │ ├── camera/ # Camera system
│ │ └── material/ # Material system
│ └── ui/ # Logging utilities
├── godot_editor/ # GDExtension for Godot 4.x
│ ├── src/ # GDExtension source (OhaoViewport, etc.)
│ ├── godot-cpp/ # Godot C++ bindings (submodule)
│ └── project/ # Godot project with OHAO plugin
├── shaders/ # GLSL shaders (compiled to SPIR-V)
└── external/ # External dependencies
- Vulkan offscreen rendering
- GDExtension integration with Godot 4.x
- Actor-component system
- Custom physics simulation
- Camera controls in viewport
- Full PBR material rendering (Cook-Torrance GGX BRDF)
- Scene synchronization from Godot
- Shadow mapping (PCF soft shadows)
- Multi-frame rendering (3 frames in flight)
- Cascaded Shadow Maps (CSM)
- Deferred rendering pipeline
- Image-Based Lighting (IBL)
- Architecture Overview - System design, diagrams, rendering pipeline
- Bug Fixes History - Solved issues and their solutions
- Changelog
- Godot Engine - Game engine and editor
- Vulkan - Graphics API
- MoltenVK - Vulkan on macOS
