Category: Graphics Programming
Language: C++23
Graphic APIs: Vulkan 1.3 & OpenGL 4.6
Platforms: PC & Nintendo Switch
Status: In Active Development (v0.3 🐤)
Made by: Sebastián Valdés
PoyoVX is a multi-backend game engine and successor to Poyo Engine (2022-2023). The name says it all: V for Vulkan, X for GX (the GameCube graphics API).
Built from scratch out of a passion for computer graphics and engine development. Supporting both modern and legacy APIs is the challenge that drives this project. Seeing the engine run on a Nintendo Switch, and eventually on a GameCube, is what keeps the motivation going.
| 🖥️ PC | |||||
|---|---|---|---|---|---|
| Platform | API | Ver. | Status | Since | |
| Windows | 1.3 | ✅ | 0.1 🥚 | ||
| Windows | 4.6 | ✅ | 0.1 🥚 | ||
| Steam Deck | 1.3 | 4.6 | ✅ | 0.2 🐣 | ||
| Mac | 📋 | - | |||
| 🎮 Console | |||||
|---|---|---|---|---|---|
| Platform | API | Ver. | Status | Since | |
| Switch | 4.3 | ✅ | 0.1 🥚 | ||
| Switch | ❓ | untested | |||
| GameCube | GX | 1.0 | 🚧 | WIP 0.3 🐤 | |
| 3DS | citro3d | 📋 | - | ||
The engine is built around a two-layer rendering architecture. Neither layer exposes raw API calls. Both are abstractions over the underlying graphics APIs. The same code runs on all supported platforms without any changes.
The low-level layer gives full control over the GPU (shaders, pipelines, compute), while the high-level layer provides pre-built materials and shading models for cross-platform rendering. The challenge of the high-level layer is making it work across very different hardware: from modern Vulkan on PC to the GameCube’s fixed-function GX with no programmable shaders. The GameCube cannot use the low-level pipeline, so it plugs in at the high-level layer with its own GX Renderer that configures TEV stages directly.
RHI (Render Hardware Interface)
Low-level, full GPU control
You manage everything: Shaders, Pipelines, Command Lists, Compute, Bindings. Only for programmable GPUs.
Cross-Platform Renderer
High-level, simpler but more limited
Pick a Material, set Textures, call Draw. The renderer handles the rest. Like SDL but for 3D. Works everywhere, including GameCube via TEV.
Both layers are built on top of the RHI. The Cross-Platform Renderer pre-configures it for you.
GX has a partial RHI (buffers, textures) but lacks Shaders, Compute, and Programmable Pipelines, so the low-level pipeline cannot run on GameCube.
All shaders are written in GLSL Vulkan 450 as the single source language. The engine compiles them to the right target at runtime:
GLSL Vulkan 450
Source language
glslang
GLSL → SPIR-V
SPIR-V
Intermediate
Write once in GLSL 450, compile everywhere. Supports shader #include and live reloading in the editor.
🥚
v0.1 Egg
Apr–Dec 2025
Foundations
🐣
v0.2 Hatchling
Jan – Mar 2026
Breaking out
🐤
v0.3 Chick
Mar 2026 – now
Learning fast
🐥
v0.4 Fledgling
TBD
TBD
🪶
v0.5 Feather
TBD
TBD
🐔
v0.6 Chicken
TBD
TBD
🐓
v0.7 Rooster
TBD
TBD
🔥
v0.9 Phoenix
TBD
TBD
🍗
v1.0 Poyo
TBD
Perfection
A growing collection of standalone GPU demos. Each sample demonstrates a specific engine feature using the low-level RHI pipeline, and serves as both a test and a learning reference.
Hello Triangle
Instancing
Compute Shader
Compute Mesh
Textures
Grass
Normal Mapping
Normal Visualiser
Parallax Mapping
Outlining
Blend Modes
Shadow Mapping
Point Shadows
Dual Paraboloid Shadows
Cascaded Shadows
Deferred Shading
Interior Mapping
Mesh Shaders
Asteroid Field
GPU Terrain
Water Caustics
Infinite Grid
Emissive (PBR Bloom)
Engine Primitives
Hex Materialisation
Hex Emissive
Hex Emissive (Animated)
Text 2D
Text 3D
Text SDF
Area Lights