Code Monkey home page Code Monkey logo

aframetest's Introduction

Chris Pugh's Homepage

C++ OpenGL PhysX

Who Am I?

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.

Professional 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

Current Projects

Killing Baby Hitler

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.

Virtuoso Engine

Description and Philosophy

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.

Public Components

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, 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.

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.

Past Projects

A sampling of my motable past projects includes:

Making Games By Year

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 :)

Javascript Star Trek Game 2019

YouTube Episode Playlist

Star Trek Game JavaScript Source from Episode 1

You can play the game here.

Fireworks Show VR

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:

fwgif

Crayon Rendering Algorithm

2013, a heuristic approach made for low performance / mobile rendering at the time. Source code and (unpublished) algorithm paper in repository here.

screenshot

Music

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!

Older Projects

Personal Projects

1D Pong (2009) : Experimental Gameplay Jam Game

38104_408871258299_5415115_n

Asteroids (2007) : My second game

562340_10151693775423300_1418642382_n

BONG (Breakout-Pong, 2006) : My first game

1235364_10151693798478300_667182919_n

Class Projects

Paint Demo (2010)

27035_383537978299_5452579_n

Quake The Can (2009)

image

Dr. Karnaugh's Lab (2008)

image

Miscellaneous Screenshots Gallery

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

Post Processing FX DoG   Icosphere

OpenCL Mandelbrot Set Rendering (OpenGL Interop)

Mandelbrot OpenCL 2012

HDR Stereo Reflection Maps (Virtuoso, GearVR 2016)

HDR Mobile VR 2016

Water Shader (Virtuoso, GearVR 2016)

GLES Mobile Water Shader 2016

Bloom, HDR, Emissive Mapping (2012)

Bloom HDR Emissive 2012

Spherical Harmonics Convolutions (2010)

Spherical Harmonic Lighting Probe Convolutions

Shadowmaps, Bloom, LOD, HDR (Virtuoso, 2017)

ShadowMaps Bloom LOD HDR

Shadowmaps, Bloom, HDR (Virtuoso Engine, 2017)

Shadowmaps Bloom HDR

Stateless Header Only Particle System aka S.H.O.P.S. library. (GPU Particles, No collisions, GearVR, Virtuoso 2016)

18157861_10154874392848300_6480177987938036393_n

Ludum Dare Jam Game (Unreleased & Unfinished, Custom pixel art and tile engine)

462912_10150724418683300_1027386139_o

Panda3D Digital Media Project With Custom CG Shading Pipeline, Graduate Research

191696_10150121343723300_1099850_o 191644_10150121343578300_4021780_o

Measured BRDF Rendering With Many Lights (2010-ish, Undergraduate research)

34374_402948048299_5819395_n

(High School, 2006ish) Terrain rendering and generation prototype (OpenGL 1.5)

64147_10151693770768300_1219412655_n

(High School, 2006ish) "BattleClone" (aka Battlezone Clone) unfinished prototype, OpenGL 1.5

1235908_10151693724063300_1248181310_n

aframetest's People

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.