Giter VIP home page Giter VIP logo

misc_scripts'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

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:

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

Public Components

Several components of the engine 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).

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

3rd Party Libraries

A lot of the work on the engine is curating which third party libraries to use vs which things to write myself. The engine puts together and builds on top of lots of third party open source libraries, including but not limited to:

glhpp - Object oriented, DSA OpenGL header by a colleague, to which I am a contributor.

PhysX - General purpose physics, collision, math, and simulation library

Eigen - For matrix and linear algebra

Dear ImGUI - For user interfaces and tools prototyping. Also several other 3rd party repo's for adding gizmos, markdown, and file dialogs to IMGUI.

MiniAudio - For 3D sound playback and music streaming

Yarn Spinner - For dialogue and narrative scripting. I use their VSCode plugin and their compiler, but built my own C++ runtime discussed above.

Debug Draw - For wireframe primitive visualization

GLFW and GLFWPP - for cross platform windowing system and input

STB - Image loading and other miscellanea

nlohmann's JSON - For data serialization

MiniZ - for compression and bundling of map data

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.

Post Processing FX DoG   Icosphere Mandelbrot OpenCL 2012 HDR Mobile VR 2016 GLES Mobile Water Shader 2016 Bloom HDR Emissive 2012 Spherical Harmonic Lighting Probe Convolutions ShadowMaps Bloom LOD HDR Shadowmaps Bloom HDR 38104_408871258299_5415115_n 1235364_10151693798478300_667182919_n 562340_10151693775423300_1418642382_n 462912_10150724418683300_1027386139_o 191696_10150121343723300_1099850_o 191644_10150121343578300_4021780_o 34374_402948048299_5819395_n 27035_383537978299_5452579_n 64147_10151693770768300_1219412655_n 1235908_10151693724063300_1248181310_n 18157861_10154874392848300_6480177987938036393_n

misc_scripts'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.