portfolio
Some projects I’ve made :)
2022
Animation Controller & Pathfinding on Deformable Terrain
Animation controller came from my CS 560 (Advanced Animation and Modeling I) class. Real-time navmesh on deformable terrain was my research project for CS 580 (Artifical Intelligence for Games).
Written in C++ with Vulkan 1.3. All math is custom as well.
The Marching Cubes terrain can be deformed and the navmesh is updated in real-time. The red panda follows a Catmull-Rom spline and blends between animations based on velocity (as can be seen at the end). Red Panda model and animations are by Omabuarts Studio. |
Path Tracer
CPU Monte Carlo Path Tracer for my CS 500 (Ray Tracing) class. Written in C++.
Implements microfacet BRDF with GGX, refractions with Snell’s law and absorption with Beer’s law as well as multiple importance sampling, depth of field with image based custom bokeh, and image based lighting.
Glass bunny with image based lighting | Depth of field with custom heart bokeh |
Bézier and B-Spline Curves
Bézier and B-Spline curve renderer and editor for my MAT 500 (Curves and Surfaces) class. Written in C++ with OpenGL and Dear ImGui.
Allows for rendering and editing of a Bézier curve given some control points. Three rendering algorithms are implemented: NLI (De Casteljau), Bernstein-Bézier form, Midpoint Subdivison.
Video of Bézier curves being created in editor | My name written with B-Splines using De Boor’s algorithm |
2021
ivy
First attempt at a proper Vulkan renderer, nicknamed ‘ivy’. Written in C++ with Vulkan.
Implements deferred rendering with dynamic point shadows, physically-based shading, and volumetric fog. Tries to wrap Vulkan nicely for fast prototyping. Also has a simple entity component system implementation. Code available here. Post mortem available here.
2020
acorn
Experimental PBR renderer, nicknamed ‘acorn’. Written in C++ with OpenGL.
Implements deferred rendering, physically-based shading, image based lighting. Code available here.
maple
Simple compute shader path tracer, nicknamed ‘maple’. Written in C++ with OpenGL.
Implements triangle intersection in compute shader and allows you to render any triangle mesh… slowly (due to no acceleration structure). Code available here.
2019
Various experiments with different graphics techniques
All in C++ with OpenGL
Surfel global illumination experiment | Screen space ambient occlusion and bloom |
Stylized cartoon water shader and cel shading | Stylized lighting |
2018
Marching Cubes Terrain
A tech demo with a procedurally generated world. Chunk meshes are generated as voxels and turned into triangle meshes using the marching cubes algorithm. Chunk generation is multithreaded as well.
Also had some networking for some reason, allowing you to send chat messages.
Frustum culling | LOD generation | Chatting |
Older
And there are quite a few older projects too. Hopefully I can find time to recreate some of them :)