Category: Graphics Programming
Language: C++23
Graphic APIs: Vulkan 1.3 & OpenGL 4.6
Platforms: PC & Nintendo Switch
Status: In Active Development (v0.4 🐥)
Made by: Sebastián Valdés
PoyoVX is a multi-backend game engine, successor to Poyo Engine (2022-2023). The name says it all: V for Vulkan, X for GX (the GameCube API).
Built from scratch out of a passion for graphics and engine development. The real challenge: supporting modern and legacy APIs alike, from PC to Nintendo Switch and eventually GameCube.
| 🖥️ 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 | ![]() | 1.4 | 🚧 | WIP 0.4 🐥 | |
| 🎮 Console | |||||
|---|---|---|---|---|---|
| Platform | API | Ver. | Status | Since | |
| Switch | 4.3 | ✅ | 0.1 🥚 | ||
| Switch | ❓ | untested | |||
| GameCube | GX | 1.0 | 🚧 | WIP 0.3 🐤 | |
| 3DS | citro3d | 📋 | - | ||
A 2-layer rendering architecture. Both layers abstract over the graphics APIs, so one codebase runs on every platform unchanged.
The low-level layer gives full GPU control (shaders, pipelines, compute); the high-level layer offers pre-built materials that run everywhere, even the GameCube’s fixed-function GX (no programmable shaders, plugs in via TEV).
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 build on the RHI; the Cross-Platform Renderer just pre-configures it for you.
* GX exposes a partial RHI (buffers, textures) but no Shaders, Compute or Programmable Pipelines, so GameCube can’t run the low-level path.
* Metal is not native yet: on macOS, MoltenVK translates Vulkan to Metal, so Mac uses the Vulkan backend.
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
Universal intermediate
Consumed directly - SPIR-V binary
Transpiled to GLSL
One source, one intermediate, every backend. Write in GLSL 450, route through SPIR-V, run everywhere. Shader #include and live reload built into the editor.
🥚
v0.1 Egg
Apr - Dec 2025
Foundations
🐣
v0.2 Hatchling
Jan - Mar 2026
Breaking out
🐤
v0.3 Chick
Mar - Jul 2026
Learning fast
🐥
v0.4 Fledgling
Jul 2026 - now
RenderGraph + Bindless
🪶
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
Skeletal Animation
Based on: LearnOpenGL - Skeletal Animation / glTF Linear Blend Skinning
HDR Environment
Based on: Original (Polyhaven HDR / ACES)
Refraction (IOR)
Based on: 3D Graphics Rendering Cookbook (Ch.7)
Eye Adaptation
Based on: 3D Graphics Rendering Cookbook (Ch.10)
Shader Clock
Based on: GL_ARB_ / VK_KHR_ / SPV_KHR_shader_clock + KHR_shader_subgroup
Switch IR Camera
Based on: Original (Joy-Con IR Sensor) - Switch Exclusive