portfolio
Whatif Wiki Documentation
From 2001 to 2008 I created and maintained a comprehensive documentation set for Whatif Productions. What started as a simple set of doc files evolved into a cross-linked set of html pages and eventually was converted into wiki format that grew to 270 pages and about 700 images.

The engine architecture at Whatif had a bunch of great graphics tricks available, but when I started at Whatif nothing was exposed enough for the artists to use. I worked closely with the programmers both to understand their existing graphics systems and to develop new techniques and workflows that would best represent what Whatif had to offer.

Custom materials
Once I had a clear idea of what the graphics engine expected, I worked with the programming team to create a set of custom material plugins for 3ds Max that exposed all of the graphics options directly to the artists.

The rendering engine was setup to create shaders dynamically according to whatever rendering hardware it was running on. This meant we couldn't use a fixed shader format like HLSL or cgfx, so I set up the material pipeline to expose all the features to give the artists total control over deciding which ingredients to use for each surface.

The page below is an example section from the wiki page on Reflection. I also created a previewing rig that allowed us to move sliders in 3ds Max and see the Falloff effect change, live in the Material Editor. At any time we could export the file to see it in the engine. Without tools like this, tweaking Falloff values was a tedious error-prone export-and-see experience.

Wiki falloff section
At one point during the GMTS project we wanted to add a new rendering feature, but it required us to downsample the existing game textures in order to keep everything in video memory. None of the programmers on our small team had time to devote to the task, so I created a texture-downsampling batch process using off-the-shelf software to downscale the 400 or so bitmaps used by the game meshes.

I had to classify the textures by their relative screen sizes in-game, and processed them differently according to whether they had alpha channels or not, etc. The process ended up much faster than anything else we had available. Then I documented it in the wiki in case we had to do it again later.

Wiki DXT downsample