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
Based on Original
Instancing
Based on Original
Compute Shader
Based on Original
Compute Mesh
Based on 3D Graphics Rendering Cookbook
Textures
Based on LearnOpenGL - Textures
Grass
Based on The Book of Shaders
Normal Mapping
Based on LearnOpenGL - Normal Mapping
Normal Visualiser
Based on LearnOpenGL - Geometry Shader
Parallax Mapping
Based on LearnOpenGL - Parallax Mapping
Outlining
Based on LearnOpenGL - Stencil Testing
Blend Modes
Based on Original
Shadow Mapping
Based on LearnOpenGL - Shadow Mapping
Point Shadows
Based on LearnOpenGL - Point Shadows
Dual Paraboloid Shadows
Based on Graphics Runner - Dual Paraboloid Shadow Maps
Cascaded Shadows
Based on LearnOpenGL - CSM / GPU Gems 3 Ch.10
Deferred Shading
Based on LearnOpenGL - Deferred Shading
Interior Mapping
Based on Emil Persson (Humus) / Joost van Dongen
Mesh Shaders
Based on Khronos VK_EXT_mesh_shader / NVIDIA
Asteroid Field
Based on Original
GPU Terrain
Based on LearnOpenGL - Tessellation
Water Caustics
Based on Evan Wallace - Realtime Caustics in WebGL
Infinite Grid
Based on 3D Graphics Rendering Cookbook / Ben Golus
Emissive (PBR Bloom)
Based on CoD: Advanced Warfare (Siggraph 2014)
Engine Primitives
Based on Original
Hex Materialisation
Based on BigWings (Shadertoy)
Hex Emissive
Based on BigWings (Shadertoy) / CoD:AW Bloom
Hex Emissive (Animated)
Based on BigWings (Shadertoy) / CoD:AW Bloom
Text 2D
Based on LearnOpenGL - Text Rendering
Text 3D
Based on Original
Text SDF
Based on Original
Area Lights
Based on LearnOpenGL - Area Lights / Heitz et al. (LTC)
Alpha to Coverage
Based on Ben Golus - Anti-aliased Alpha Test