I'm a programmer with an interest in computer graphics. I spend my time working on animation software, developing p5.js, and working with the creative coding community to make better tools.

Vertex Shader Domain Warping with Automatic Differentiation

May 14, 2024

I worked out some math to be able to apply arbitrary warps to 3D meshes in a shader and still get correct lighting and reflections.

Domain warping is a technique commonly used in creative coding to distort graphics and add visual interest to a work. The approach has the potential to be used in 3D art as mesh vertices can be efficiently warped using a vertex shader in a WebGL pipeline. However, 3D models packaged for the web typically come with baked-in normal vectors, and these need to be updated when vertex positions change for lighting calculations to work. This is typically done via finite differences, which requires parameter tuning to achieve optimal visual fidelity. We present a method for 3D domain warping that works with automatic differentiation, allowing exact normals to be used without any tuning while still benefiting from hardware acceleration.

Bean There, Done That: Computer-Assisted Design of Bean Sculptures

Proceedings of SIGBOVIK, March 23, 2024

An algorithm for optimizing a unique bean sculpture that best fits existing architecture.

Chicago's status as a world-class city is cemented by its iconic bean sculpture. Other cities, wanting to replicate the success, have muddied the bean waters by introducing their own bean variations: New York City has a bean sharing similar properties, and Ottawa has a sphere, dubbed the "Ottawa bean" by locals. Our economic analysis proves their worth, so naturally other cities will want their own. We present a mathematical model of the space of all bean sculptures, and an algorithm to help cities replace existing landmarks with beans.

A Jalgorithm for Japplying Jeans to Jobjects

Proceedings of SIGBOVIK, April 1, 2023

A super serious use of differentiable rendering.

For years, society has been plagued by the lack of a conclusive answer to the question of how arbitrary things would wear jeans, if they wore jeans. This paper proposes a jalgorithm to determine the mathematically optimal configuration of pants on a silhouette, leveraging recent insights in the fields of computer vision and differentiable rendering.

Major programming projects Side projects

Arts and Design

In my spare time, I draw, make animations, and write music. I make a lot of sarcastic cover songs as well as serious music.

Art Animations Music