Auxiliary Materials
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
bmrt.opt
or
prman.opt
,
and the texture file for the
mandrill.
simpletexmap.sl
texture()
:
RIB source fig8.2.rib
.
To render this file, you will also need one of
bmrt.opt
or
prman.opt
,
and the texture file for the
mandrill, and the
supertexmap.sl
shader.
fig8.4.rib
.
To render this file, you will also need the
lumpy.sl
shader (which
requires displace.h
and noises.h
).
emboss.sl
(requires displace.h
).fig8.5.rib
demonstrates the emboss shader.
fig8.6.rib
.
project.h
.
supertexmap.sl
(requires project.h
,
displace.h
, and
filterwidth.h
).
MaterialPlastic
), 9.2
(MaterialMatte
), 9.3 (MaterialRoughMetal
),
and 9.4 (MaterialThinPlastic
) can be found in
material.h
.
raysphere.h
and
reflections.h
.
reflections.h
.
shiny.sl
(requires reflections.h
).
shinyplastic.sl
(requires reflections.h
).
LocIllumOrenNayar
), 9.12
(LocIllumWardAnisotropic
),
and 9.13 (LocIllumGlossy
) can be found in
locillum.h
.
This is used by the clay.sl
shader. 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
brushedmetal.sl
shader.
shadowspot.sl
.
noises.h
.
filterwidth
and filterwidthp
macros can be found in
filterwidth.h
.
pulse
, pulsetrain
,
etc.) and their antialiased versions can be found in
patterns.h
.
fBm
, vfBm
,
and turbulence
can be found in
noises.h
.
pshad.h
.
ceramictiles.sl
fig12.7.rib
.
oak.sl
(requires
oak.h
)
fig12.10.rib
.
oakplank.sl
(requires
oak.h
)
fig12.11.rib
.
smoke.sl
fig12.12.rib
.
lensflare.sl
cel.sl
uberlight.sl
.
gcloud.sl
.
texdust.sl
.
shadowedclouds.sl
(requires filterwidth.h
,
noises.h
,
and raysphere.h
).
cellclouds.sl
(requires filterwidth.h
,
noises.h
,
and raysphere.h
).
hypertexture.sl
(requires filterwidth.h
,
noises.h
,
and raysphere.h
).
panorama.sl
NOTE: 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.sl
NOTE: this shader will only work properly with a renderer
that implements ray tracing, like BMRT, but not with a scanline-only
renderer like PRMan.
woodblockprint.sl
.
nizid.sl
.
raytrace
and
SampleEnvironment
functions can be found in
reflections.h
.
glass.sl
(with the
MaterialGlass
function in
material.h
).
rayserver.h
and the frankenrender
script
can be found distributed with BMRT.
Return to the Advanced RenderMan book home page.
Errata from the first printing.