I am an independent game programmer, who specializes in 3D graphics, modern C++, and engine / API design.
I have worked on a lot of projects using a myriad of languages and engines, targeting everything from PC to mobile to VR.
A lot of my work isn't public (or public yet!), and my repositories are littered with various forks and experiments, so I figured this page could focus attention on the highlights.
A couple career highlights before I get into my current projects :
I was an OpenGL workstation driver engineer for almost a decade. I redesigned the legacy driver's multithreading code, and was part of the team that developed an entirely new OpenGL driver, released in 2022, which had up to 72% performance gains in key applications. I learned a lot and worked with a great team of people.
Before that I worked in the Computer Graphics lab at UCF implementing virtual texturing and Blockmaps for streaming visualization, work which concluded in 2013.
But I think my best, most exciting work is my current game and engine, which you'll read about below :)
More detailed career history, projects, and my up to date resume can be found on my LinkedIn
Or here : Christopher Pugh Resume July 2024.pdf
I am currently making Killing Baby Hitler, a retro FPS "boomer shooter" inspired by classics like Wolfenstein. The game is built on a custom engine ("Virtuoso Engine", discussed below). A gameplay trailer can be seen here:
Killing.Baby.Hitler.Gameplay.Trailer.mp4
Or on YouTube
The game and engine code will eventually be publicly released under an MIT License, but not yet. If you are considering me for employment and want an up to date code sample or playable build feel free to contact me and ask.
![](https://private-user-images.githubusercontent.com/5210806/352355675-f954bf75-07e8-4741-9008-fc52df5a76c0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ1MzU3MDksIm5iZiI6MTcyNDUzNTQwOSwicGF0aCI6Ii81MjEwODA2LzM1MjM1NTY3NS1mOTU0YmY3NS0wN2U4LTQ3NDEtOTAwOC1mYzUyZGY1YTc2YzAucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDgyNCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA4MjRUMjEzNjQ5WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MjgzMDNjOGI1ZDhhZjI0Y2I5MGMxYjVjNzBkMzk5YjYzODMxYmNkYmM1NjZmNTQ4MjJkNWYyMTg1ZTBlYjdhMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.1qAuocq0p3PFxHCE75DOgPOua9oZYoqmSEBv3pNRbA0)
Virtuoso Engine is my personal game and app development framework that I've been working on for about a decade or so in various iterations, and have shipped multiple apps on. The latest version is being used in the development of "Killing Baby Hitler."
The philosophy of the engine is to be a lightweight framework style engine, sort of like RayLib, but more focusing on C++20, 3D, and physics rather than C99/2D. I wanted to make this because it's the language / paradigm under which I'm most productive as a very experienced C++ programmer with lots of graphics programming and graphics driver experience.
I also am a really strong booster of the "STB" style of library - of making components or functionality that can be forked off without dependencies into a single header, permissive license "library."
The engine is not publicly released yet but has a landing page here where you can see some of the public libraries, a list of third party libraries integrated, and some screenshots / videos of projects I've made in the engine.
Several examples of Virtuoso Engine components can be seen publicly on my GitHub:
YarnMachine - A standalone C++ virtual machine for YarnSpinner, a narrative scripting language I use in KBH for dialogue and game scripting.
Quake Style Console - Debug console and IMGUI widget. The first version of this was written 11 years ago as an experiment but I've been maintaining and using this ever since.
GLSugar - Graphics framework for modern / AZDO style OpenGL development with nicer syntax. This has code for basic texture and shader handling, common shader functions, GPU containers, as well as struct annotation to easily make VAO's and UBOs with correct memory alignments. Built on GLHPP (discussed below), a library written by a colleague to which I am a contributor.
GameFoundation - Grab bag of common data structures and algorithms used to make games - eg. A*, object pools, UUIDs, etc.
uJNI - Helper functions and classes to wrangle JNI / NDK things. Not used in KBH, but was rapidly developed for the 2016/2017 iteration of the engine to ship a Fireworks Show VR app on the GearVR platform (Android).
Spherical Harmonics - Utility code for environment map filtering. Used for glossy HDR environment rendering in unreleased prototypes, and diffuse probe convolution in Fireworks Show VR.
Noise - Perlin Noise Generation : Used in unreleased prototypes. Just rewritten with C++20 features, so it's a good short recent code sample.
3DMath - Frustum, transforms, etc.
A sampling of my motable past projects includes:
A YouTube show talking about the history of a game for every year since the beginning of gaming, then making that game. It got as far as 1969 (Lunar Lander) and 1971 (Star Trek) before I had to put the project aside due to the sheer amount of work between development, research, and video editing. I do have ideas on how I want to revive this though :)
Star Trek Game JavaScript Source from Episode 1
You can play the game here.
2017 app released for free on the GearVR App Store via download code. It was also available for Cardboard VR. Built on Virtuoso Engine. Source repo TBD. Preview gif below:
2013, a heuristic approach made for low performance / mobile rendering at the time. Source code and (unpublished) algorithm paper in repository here.
I played trumpet in jazz, concert, and marching band in high school and middle school. That's 7 years total, which is just shy of the time at my longest adult job. This turned into being a self taught guitarist as an adult, and in the past year or two I started getting formal lessons. It's been an enriching part of my life, but also turned into a skill I am using to make the soundtrack for KBH!
![](https://private-user-images.githubusercontent.com/5210806/350721010-12c11cf3-dabb-4408-9afc-5cc7e8936729.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ1MzU3MDksIm5iZiI6MTcyNDUzNTQwOSwicGF0aCI6Ii81MjEwODA2LzM1MDcyMTAxMC0xMmMxMWNmMy1kYWJiLTQ0MDgtOWFmYy01Y2M3ZTg5MzY3MjkuanBnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDgyNCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA4MjRUMjEzNjQ5WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NGVkNzQwODRjOTk4ZTAxMGQ5OWY2ZDQ2MTU2ODNkNTQ2NWYxOWUxOWUxNzk0ZjJhNTNhMzkxMjA2MWI2MmVlYyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.ry2l_YCikP821OO0bfRdkYH9lMfoNZV2tNdNDSIWoeQ)
1D Pong (2009) : Experimental Gameplay Jam Game
Asteroids (2007) : My second game
BONG (Breakout-Pong, 2006) : My first game
Various screenshots of various games / rendering effects / projects I've worked on (in no order). These go back to when I first started to code in 2006 or so, up to around 2020.
Difference of Gaussians Post FX on an Icosphere
OpenCL Mandelbrot Set Rendering (OpenGL Interop)
HDR Stereo Reflection Maps (Virtuoso, GearVR 2016)
Water Shader (Virtuoso, GearVR 2016)
Bloom, HDR, Emissive Mapping (2012)
Spherical Harmonics Convolutions (2010)
Shadowmaps, Bloom, LOD, HDR (Virtuoso, 2017)
Shadowmaps, Bloom, HDR (Virtuoso Engine, 2017)
Stateless Header Only Particle System aka S.H.O.P.S. library. (GPU Particles, No collisions, GearVR, Virtuoso 2016)
Ludum Dare Jam Game (Unreleased & Unfinished, Custom pixel art and tile engine)
Panda3D Digital Media Project With Custom CG Shading Pipeline, Graduate Research
Measured BRDF Rendering With Many Lights (2010-ish, Undergraduate research)
(High School, 2006ish) Terrain rendering and generation prototype (OpenGL 1.5)
(High School, 2006ish) "BattleClone" (aka Battlezone Clone) unfinished prototype, OpenGL 1.5
Other techniques and whitepapers I've implemented but may not be pictured yet include but aren't limited to:
Water shaders with Gerstner waves
Mesh Optimization : Triangle Order Optimization and compression eg: 1 2
Analytical Line Lights
Coherent Hierarchical Culling++
Level of Detail
Spherical Harmonics Transforms & Environment Maps
Maximum Mipmap Displacement Mapping
Particle Systems
Deferred Rendering
HDR and Post-Processing
Perlin Noise
Real-time raytracing (Compute Shader)
PCF Shadow Mapping