Real-time amphibious skin shader, featuring self-occluding translucency, self-shadowing, subsurface parallaxing and normal mapping.  The above image was captured from nVidia FX Composer 1.6, using an ASUS N7600GS.

This project started when I was trying to determine a good method for modelling forward scatter in a skin shader.  I tried multiple methods, most of which took several render passes, before finally making the decision that whichever method I chose had to be cheap enough to run on an Xbox 360 in a full game engine.

Ultimately I uesd a technique for pre-processing a mesh using Maxscript and rendering the results into two textures.  The results are not extraordinarliy accurate, but they are fast -- and they allow for a translucent object to roughly self-occlude.

I assembled a scene in FX Composer 1.6 to demonstrate the technique on an animated character.

I concepted and built the amphibious character using 3ds Max 9 with PolyBoost and Zbrush 3.1. My husband, Joel Mongeon, rigged and animated the character and modelled the environment using 3ds Max 9.  I did all of the texturing using Zbrush 3.1 and PhotoShop CS3 (except for the cube map on the eye -- it's ATI's snow-covered mountain).

The shaders are all DXSAS fx-file encapsulated HLSL. The scene shaders (depth of field, shadows) I adapted from existing nVidia shaders which came with FX Composer. The depth of field was originally a bloom -- I added an extra z pass, adapted the filter kernel, and changed the blend mode. The shadow output was originally opaque black -- I added colour and opacity. All surface shaders I wrote myself.

The links below the image show

  1. Movie: The final project captured from FX Composer 2.0
  2. Close-up: A close-up of the amphibian shader, captured from 3ds Max 9 (using a DirectX viewport shader)
  3. Layers: A turnaround and composite of the different effects combined in the amphibian shader, captured from 3ds Max 9 (using multiple DirectX viewport shaders)