For you convenience, you may download just the shaders, all of the example files, or pick piece by piece.
All of these shaders and examples have been tested with BMRT 2.5 and PRMan 3.8. Many of the shaders take advantage of recently-added Shading Language features, so I do not expect them to work properly in much older releases of these renderers.
The examples should run identically on any other modern, fully-RenderMan-compliant renderers, but I haven't personally verified this. If anybody can test all the examples against other renderers, pelase let me know how they fare and I will report the results here.
Many of the shaders have been changed slightly from the way they appear printed in the book. In some cases this is to fix bugs that weren't found until after the book had gone to press, in other cases new functionality has been added, and in a few cases the book presented slightly simpler versions for the sake of clarity.
Some of the examples require certain archive models, shaders, or require you to generate a shadow map. In all such cases, it should be easy to deduce the prerequisites by examining the comments at the top of the RIB file.
The JPEG images on this page (sometimes linked to by the figure name) are all gamma corrected to 2.2. If they look washed out to you, please turn off hardware gamma correction.
fig8.1.rib. To render this file, you will also need one of
prman.opt, and the texture file for the mandrill.
texture(): RIB source
fig8.2.rib. To render this file, you will also need one of
prman.opt, and the texture file for the mandrill, and the
fig8.4.rib. To render this file, you will also need the
lumpy.slshader (which requires
fig8.5.ribdemonstrates the emboss shader.
MaterialPlastic), 9.2 (
MaterialMatte), 9.3 (
MaterialRoughMetal), and 9.4 (
MaterialThinPlastic) can be found in
LocIllumOrenNayar), 9.12 (
LocIllumWardAnisotropic), and 9.13 (
LocIllumGlossy) can be found in
locillum.h. This is used by the
fig9.7.rib) show the difference between using Oren/Nayar and diffuse. Figures 9.8a, 9.8b, and 9.8c (generated with
fig9.8.rib) show the anisotropic metal using the
filterwidthpmacros can be found in
pulsetrain, etc.) and their antialiased versions can be found in
turbulencecan be found in
panorama.slNOTE: this shader will only work properly with a renderer that implements ray tracing, like BMRT, but not with a scanline-only renderer like PRMan.
areacam.slNOTE: this shader will only work properly with a renderer that implements ray tracing, like BMRT, but not with a scanline-only renderer like PRMan.
SampleEnvironmentfunctions can be found in
frankenrenderscript can be found distributed with BMRT.
Return to the Advanced RenderMan book home page.
Errata from the first printing.