Visual Experiments from 2010-2011

Fire Simulation

More Fire! A processing experiment that combines Memo Akten's awesome MSAFluid library with a bunch of particles and OpenGL render target ping pong effects. It's driven by motion blobs created through OpenCV.

Kinect + Cloth

Another quick processing test to see what it would be like to interact with a cloth simulation with Kinect.

GPU Spring Displacement

This uses a fun GPU based spring effect I wrote for Double Fine Happy Action Theater. For each pixel, a 2D displacement position and 2D velocity is stored in an RGBA render target. Another shader reads those displacement values and uses it to offset the lookup of the player.

Fluid Voxels

A kinect/processing sketch I put together for the 2011 "I am 8 bit" show in LA. Haven't captured the final incarnation yet.

Audio Driven Particles

Another processing experiment that drives particle forces and OpenGL shaders with audio.

GDC 2010 VFX Presentation and Videos

GDC 2010 VFX

Pete Demoreuille and I had an opportunity to speak at the 2010 GDC. Many of the videos shown here were originally created for that presentation.

Curl Noise

An example of particles being influenced by curl noise. See the Brutal Legend VFX Presentation from GDC 2010, or the paper we got the idea from, for more details.

UV Displacement

UV Displacement, aka UV Distortion, aka Pixel Offset, etc..., is a fantastically useful real time vfx technique where the particle texture lookup is perturbed by another texture. Usually that distortion texture resembles a normal map, and is scrolling, scaling, or otherwise given additional motion. We found that by driving this displacement texture with a intensity curve, you could get very interesting visuals resembling fluids that break apart, or in this case, an approximation of the quickly moving gases that form a flame. See the Brutal Legend VFX Presentation from GDC 2010 for more details.

Ink Rendering

This video shows the ink rendering technology I developed for Brutal Legend with our graphics and animation teams. Ink was quite a challenge for us as Ophelia's character is in a constant state of flux between fluid ink and her solid form. The final technique involved rendering the ink to a low-res buffer and performing some thresholding operations on it to extract the most interesting details (seen in the debug mode at the end of the video). Although it is taken in a graybox room, this is the same effect used in the shipping title. See the Brutal Legend VFX Presentation from GDC 2010 for more details.

Detailed View of Ink

An isolated look at Brutal Legend's ink rendering tech. First regular particles are shown, then those same particles drawn into a blurred buffer, and finally that blurred buffer thresholded, and composited back onto the screen. Internally, we refer to this buffer as the Ink Potential. See the Brutal Legend VFX Presentation from GDC 2010 for more details.

Brutal Legend VFX

Brutal Legend VFX Reel

A smattering of vfx samples from Brutal Legend with shot breakdowns. Note that some elements of this video are duplicated on this page, but I figured it would be nice to have them all in one place.

Climate Variation

Showcases the climate variation in Brutal Legend. The first half of the video is time lapse, the second have shows different environments in real time. I authored all the scenes seen here using our climate system, which controls particle effects, fogging, lighting, weather variation, and post processing. See the Brutal Legend VFX Presentation from GDC 2010 for more details.

Time Lapse Climate

This is a video showcasing the climate system for Brutal Legend. I collaborated with the engineering department (primarily our lead programmer Nathan Martz) to create a system that would seamlessly blend between different regional climates, different times of day, and different weather patterns (rain, snow, thunder, meteors, fog, etc...). For the skies in this sequence, I authored the effects, vortex shader and mesh, lighting, and sky box.

3ds Max HLSL Shaders (2005-2006)

Curved Relief Mapping

This implementation of Fabio Policarpo's Curved Relief Mapping uses a modified version of the CG shader he developed. Like standard relief mapping, but uses a per vertex quadric curvature approximation to "wrap" the height map along the object's profile. This per vertex curvature approximation is calculated via maxscript in a preprocessing step.

Relief Map Blending

Normal map and Relief Maps are blended in this shader.  Depth, Diffuse, Specular and Normal maps are modulated based on a vertex data channel values which allows interactive viewport experimentation. Note the convincing irregularities that occur when the vertex channel has partial opactiy.

Concentric Grass Shells

HLSL implementation of hair/grass using the "concentric spheres" technique. This version uses vertex data channels to control hair length, hair direction and hair color interactively. Procedurally added ambient occlusion on each successive layer is critical to the effect.

Shader Based Physical Fur

HLSL implementation of hair/grass using the "concentric spheres" technique. This version expects a per vertex force component to be passed into the shader via vertex data channels. In a separate max script, I calculate per vertex velocity, acceleration, and a compression factor which each have their own contribution weighting. The results of the calculation are baked into the vertex data channels per frame. Alternate Video.