An assortment of cool computer graphics related projects I have worked on and pictures
I was credited for two roles on The Wild Robot, I started out on the show as the first Lighting TD on production, tasked with building the shows custom tooling. Upon completion of development, I was promoted to lighting tools engineer for all shows across the studio.
Key Technologies: Houdini, Nuke, Python, PyQT5, USD, VEX
As a Lighting TD on Trolls Band Together I was responsible for manintaining lighting department tools, both studio wide, and show specific. I was focused primarily on optimizing rendering pipelines for the department and assisting artists with day-to-day shot support and optimization.
Key Technologies: Houdini, Nuke, Python, PyQT5, USD, VEX
As in intern I was a credited contributor to the titled World of Warcraft: Dragonflight expansion pack. I was a member of the game engine team, focused on contributing to graphics systems within both the engine and DCC platform. Mainly, I did work contributing to a innovative particle system powered by compute shaders on the GPU allowing artists to create aesthetic, high fidelity effects, while being less limited to performance constraints.
Key Technologies: DirectX 11/12 API, HLSL, Modern C++, Dear ImGui, RenderDoc, SVN, Perforce
Physically Based Raytracer written from scratch in C++. The raytracer implements a monte carlo rendering algorithm presented by Dr. Peter Shirley [NVIDIA]. The raytracer uses an abstract implementation of materials and surfaces to represent just about any sort of object, medium, etc. that could come to mind. Additionally, I used multithreading to create an accumulating buffer to render the image in parallel, allowing for ~30-50% better rendering times depending on scene complexity.
Key Technologies: Modern C++, Multithreading, Physically Based Rendering, STB_IMAGE Library
A work in progress, minimal graphics engine. A expansion and improvement on both my toy engines. This project is being developed for the purpose of fully understanding a game engines lifecycle. Features include: Physically based rendering material pipeline, HDR w/ ACES tonemapping, gltf model support, omnidirectional shadow mapping.
Key Technologies: Modern C++, OpenGL Core Profile, RenderDoc, GLSL, ASSIMP, USD, GLFW, Cmake
A voxel engine based on my foundational graphics engine, Maxwell. The engine is written in C++ and implemmented in OpenGL and supports the interactive rendering of 16.7 million plus voxels. Along with that, utilizing the FastNoise2 library there is customizable noise-based terrain generation. To improve the realism of the terrain, I also implemented a physically-based hydrological erosion simulation using particles and classical mechanics, I also use C++ Multithreading to spawn a worker thread and compute the simulation step, allowing for a realtime, interactive, visualization. On the left below, you can see an example terrain rendered with no simulation, and 150k particles simulated on the right.
Key Technologies: Modern C++, OpenGL Core Profile, RenderDoc, GLSL, GLFW, Cmake, FastNoise2, Multithreading, Physically based animation, Particle Dynamics
A simple point cloud renderer I built as a weekend project in Unity. The rendered was built with Unity's Universal Rendering Pipeline, and I utilized a mix between native shader-graph code and custom function built in HLSL to support geometry instancing. The entire render is driven by a single draw call to geometry instanced out naively along the vertices of an input mesh. It uses the diffuse textures and normals provided along with the model to calculate emission and direction.
Key Technologies: Unity, C#, HLSL
A toy rendering engine written in the OpenGL Core Profile. Includes support for the ASSIMP library as well as 2D and 3D rendering. Pictures include shader implementations and cool things.
Key Technologies: Modern C++, OpenGL Core Profile, RenderDoc, NVIDIA Nsight, GLSL, ASSIMP
A reimplementation of my OpenGL Toy Rendering engine, a delve into understanding of the Vulkan side of things. With a specific focus on better understanding the graphics pipeline and how Vulkan exposes that to the advantage of the programmer.
Key Technologies: Vulkan API, Vulkan Memory Allocator (AMD),Modern C++, Dear ImGui, SDL, RenderDoc
While working through Dr. Keenan Crane's [CMU] course on Discrete Differential Geometry, I implemented several additions to his labs Geometry Processor provided for the course. Here's a collection of cool features and my though process on the assignments!
Key Technologies: Modern C++, OpenGL Core Profile, GLSL, Differential Geometry Numerical Methods, Dear ImGui
A Unity Engine Raymarcher implemented entirely in HLSL. The entire engine is contained within a single shader and can support any signed distance function or field thrown at it.
Key Technologies: Unity Game Engine, Compute Shaders, HLSL, CSG Algorithms