Home Page

Home Page

Comp 238

Programming Assignment 4:  Procedural Shading

Page 1

San Antonio Riverwalk

Summary

  • "Artistic interpretation" of the San Antonio Riverwalk featuring the colorful umbrellas at Casa Rio
  • Modeled with Rhino 2.0
  • Rendered with BMRT 2.4
  • Shaders written in RenderMan Shading Language
  • Rock shape, displacement, and color varied via "Worley-style" cellular noise
  • Water surface created via antialiased, ray traced reflections and "Musgrave-style" ripples
  • Fake caustics achieved by using a light shader to attenuate the light output based on a texture
  • Fractional Brownian motion (fBm), the workhorse of procedural shading, featured on nearly every surface
  • Total of ten (mostly simple) shaders written for this assignment

Introduction

This project represents my first attempts at procedural shading. The scene is reminiscent of a view of San Antonio's Riverwalk where a footbridge frames the colorful umbrellas of Casa Rio. I noticed the scene during this year's SIGGRAPH and took a few pictures. The photos turned out mediocre at best, but they were sufficient to serve as a reference for this assignment. The rendered scene is not intended to be a photo-realistic reproduction of the real-world scene. Certain things were changed or omitted for artistic reasons, while others (such as plants and trees) were omitted due to time constraints.

Overview

Rendering with no shadersI chose to do off-line rendering. I selected BMRT over PRMan since I wanted ray-traced reflections in the water. (As an aside, Release 11 of PRMan handles ray tracing. However, we have an earlier version, I believe.) For modeling, I used Rhino, which is a NURBS modeling package for Win32. Since this is a shading assignment, not a modeling assignment (and since I am novice modeler, to say the least), I tried to keep the model relatively simple. Most surfaces are flat, with detail added by displacement and surface shaders. Click on the thumbnail to the right to see a rendering of the model with no shaders.

Stone bridge, walkways, walls

The various stone surfaces were created using a surface/displacement pair based on Steve Worley's cellular noise. Each surface has an st parameter space that defines a grid. The center of each grid cell is jittered, and then a basis function is calculated based on the distance between a particular jittered point and the closest point to it. This function is called F1. Similarly, the function based on the distance between a particular jittered point and the second closest point is called F2. As it turns out, F2-F1 produces patterns that resemble cobblestone. The amount of jitter controls the randomness of the resulting pattern. Thus, the gray wall in the background used a jitter value near zero, while the bridge and walkways used a jitter value closer to one.

The displacement shader uses F2-F1 to transition from low grout areas to high rock areas. The smoothstep function is used to make the transition gradual. A separate smoothstep call adds a slight bevel to the rock edges. Lastly, the rock surface is perturbed with fractional Brownian motion (fBm). The surface shader uses the position of the closest point to randomly adjust the rock color. Then, it uses F2-F1 to transition from grout color to rock color. Again, the smoothstep function is used to make the transition gradual.

Water

The water features a simple displacement shader for ripples and a somewhat more involved surface shader to produce antialiased ray traced reflections. The ripple shader uses the method suggested by F. Kenton Musgrave in Texturing and Modeling: a Procedural Approach. Specifically, it displaces the surface with two octaves of low-amplitude fBm. The surface shader is based on the stochastic RayTrace function presented in Advanced RenderMan: Creating CGI for Motion Pictures. My version has been simplified somewhat to perform non-jittered supersampling. It uses the RenderMan Shading Language's built-in derivative functions to account for the size of the surface patch. It also offsets the reflection vector based on the local surface curvature.

San Antonio Riverwalk

Email Jason Stewart