XEMA
XEMA is an engine I built entirely myself in C++ and OpenGL, for PC and Nintendo Switch (tested only on an emulator). I'm currently working on a PS4 port using the console's own graphics API.

Rendering
The renderer is deferred, with PBR, shadow mapping and instancing. This is one frame captured in RenderDoc.

Albedo
Normals
Position
glDrawElementsInstanced, up to 107 instances in a single call.Procedural generation
I implemented Wave Function Collapse in the engine. The landscape in the frame above comes from it.
Architecture
XEMA is built on an ECS architecture, with a JobSystem for work such as asynchronous mesh loading. It has Lua scripting and uses PhysX for physics. GLFW handles the window and input, and ImGui draws the debug panels for entities, components and performance.

Platforms
The platform code is chosen at compile time: each build compiles only its own platform's source files, since a build only ever runs on one platform. I first designed it with interfaces, but dropped them because they weren't needed and every call had to go through a vtable for nothing.
Nintendo Switch: tested on an emulator
I ported it through libnx and EGL.
PlayStation 4: in progress
Running on a devkit: the ECS and rendering of simple geometry. Still missing: mesh loading, textures, instancing, lights, shadows and PBR.