Keywords: main

Next: 1.4 Textures Up: 1. Base Shaders Previous: 1.2 Texture Space Mapping

# 1.3 Environments

These shaders return colors from color textures that are mapped to finite or infinite distances. They are useful for adding background or foreground plates to the rendered scene. Environments must be used for environment shaders, overlays must be used for lens shaders, and textures must be used for texture or material shaders on a plane or other object in the scene.

Spherical Environment

Given a texture shader, assume that the texture it produces is wrapped on an infinite sphere around the scene, evaluate the texture, and return the color. This is useful for environment shaders.

        color "mib_lookup_spherical" (
            vector          "dir",
            scalar          "rotate",
            color texture   "tex")

dir is the direction to sample. If connected to mib_texture_vector, a select value of -10 is useful. It should be given in world space. If this is the null vector, the ray direction is used, after conversion to world space.

tex is a texture or shader to look up at the computed coordinate.

Cube Environment

Same as the spherical environment shader, but accept either one or six textures mapped on an infinite cube. This is useful for environment shaders.

        color "mib_lookup_cube1" (
            vector          "point",
            vector          "dir",
            vector          "size",
            color texture   "tex")

        color "mib_lookup_cube6" (
            vector          "point",
            vector          "dir",
            vector          "size",
            color texture   "tex_mx",
            color texture   "tex_px",
            color texture   "tex_my",
            color texture   "tex_py",
            color texture   "tex_mz",
            color texture   "tex_pz")

point is the view location.

dir is the direction to sample. If connected to mib_texture_vector, a select value of -10 is useful. If this is the null vector, the ray direction is used.

size is the size of the box.

tex is a texture to look up at the computed coordinate. One texture contains all six sides; it has six times the number of scanlines required for a single face, with the sub-textures stacked in the following order, top-down: -x, +x, -y, +y, -z, +z.

tex_** are six textures for the left (mx), right (px), bottom (my), top (py), yon (mz), and hither (pz) faces. ``p'' and ``m'' stand for plus and minus.

Cylindrical Environment

This environment shader is most useful for projecting regular patterns onto geometry, for example for surface quality control. The cylinder does not have caps, so it might happen that rays do not hit the cylinder. The cylinder is defined by a transformation which transforms from world to canonical cylinder space, and two scalars that allow cutting off part of the cylinder. If both begin and end are zero, a full cylinder is selected.

        color "mib_lookup_cylindrical" (
            transform       "xform",
            scalar          "begin",
            scalar          "end",
            color texture   "tex" )

xform transforms from world to canonical cylinder space. The canonical cylinder has the Z axis as the major axis, extends from -1to +1 on the Z axis and has a radius of 1. If tex is a procedural texture, texture coordinates are calculated for the intersection point: Z = - 1 is mapped to v = 0 and Z = + 1 is mapped to v = 1. Texture coordinates for u are calculated counterclockwise around the Z axis where + X is mapped to u = 0 and - X to 0.5.

begin specifies the starting angle in radians where the cylinder begins. The angle specification is based on + X = 0 radians.

end specifies the ending angle where the cylinder body should end.

tex is a texture or shader to look up at the computed coordinate.

Backgrounds

Given a texture shader, place it in the background of the scene such that the edges of the texture line up with the edges of the rendered image. Factors can be applied to stretch and pan the texture, to allow for lenses that bend rays away from the center. The purpose of this environment is inserting background plates. Returns a color. This is useful in three different types of shaders:

=0=E 00nvironment shaders can place the background plate at infinity.

=0=L 00ens shaders can place the plate in front of the entire scene by evaluating the background shader first and casting an eye ray only if the returned alpha is less than 1, and blending the results.

=0=M 00aterial shaders on an XY axis aligned plane in the scene insert the plate at the Z coordinate of the plane if they first evaluate the background shader, then cast a transparency ray only if the returned alpha is less than 1, and blend the results.

        color "mib_lookup_background" (
            vector          "zoom",
            vector          "pan",
            boolean         "torus_u",
            boolean         "torus_v",
            color texture   "tex")

zoom enlarges the texture image by a factor given by the X and Y components of the zoom vector. The Z component is not used. If a component is 0, it defaults to 1.

pan shifts the texture sideways by a fraction of the rendered image size. The Z component is unused. For example, if the X component is 0.1, the left 10% of the rendered image background remain blank.

torus_*, if true, repeats the texture endlessly in the respective direction. If false, transparent black is returned outside the tex image.

tex is a texture or shader to look up at the computed coordinate. It will be sampled in the range [0...1) only.

Next: 1.4 Textures Up: 1. Base Shaders Previous: 1.2 Texture Space Mapping