Gamedev, graphics, open source. Shuffling bytes and swizzling vectors since 2004...
Lightweight, multi-platform, data-oriented game engine.
pmtech is a data-oriented game engine written in C++, it is open source and available on GitHub. The engine is cross platform and supports Windows, macOS, iOS, Linux and WebAssembly/WebGL with Android under development. It also has multiple rendering backends with Direct3D11, OpenGL, Metal and Vulkan.
I have been using it as a framework to experiment and try different rendering techniques. It has a data-oriented entity component system and features such as live reloading of C++ code, shaders and render pipeline configs to enable rapid prototyping and development in realtime. There is a live video demo of the hot reloading capabilities on YouTube.
Below are some of the more advanced and interesting graphics techniques I have implemented, there are over 40 examples and unit tests in the repository to aid testing and cross platform compatibility.
Realtime voxel cone traced GI with colour shadow map voxel volumes.
Linearly transformed cosines, animated ray marched primitives, mip-mapped roughness.
Sepearable sss configured with pmfx and ecs.
Precalculated 3D signed distance field generated in pmtech editor, ray marched in real time.
Config driven renderer using jsn config files, 100 lights, switch between deferred, fwd and zprepass.
Config driven post processing using jsn configs, ray marched menger sponges, bloom, dof, crt, colour correction.
Multi-pass lighting with depth pass stencil shadow volumes, easily configured with ecs and pmfx.
64k entities into 4 shadow maps at 60hz, showing the strengths of data-oriented ecs.
Vertex stream out, transform feedback meshes rendered many times, cook-torrence + oren-nayar BRDF.