/* Copyrighted Pixar 1989 */ /* From the RenderMan Companion p.347 */ /* Listing 16.13 Shader mapping shader-space coordinates to colors */ /* * show_xyz(): Color a surface point according to its xyz coordinates * within a bounding box. */ surface show_xyz ( float xmin = -1, ymin = -1, zmin = -1, xmax = 1, ymax = 1, zmax = 1) { uniform point scale, zero; point objP, cubeP; /* Check for zero scale components. */ if (xmax == xmin || ymax == ymin || zmax == zmin) { printf ("bad bounding box %f %f %f %f %f %f in show_xyz()", xmin, xmax, ymin, ymax, zmin, zmax); } else { scale = point (1 / (xmax - xmin), 1 / (ymax - ymin), 1 / (zmax - zmin)); zero = point (xmin, ymin, zmin); objP = transform ("shader", P); cubeP = (objP - zero) * scale; Ci = color (xcomp (cubeP), ycomp(cubeP), zcomp(cubeP) ); } }