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.
mib_lookup_spherical
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.
mib_lookup_cube1
color "mib_lookup_cube1" (
vector "point",
vector "dir",
vector "size",
color texture "tex")
mib_lookup_cube6
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.
mib_lookup_cylindrical
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
-1 to +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:
- Environment shaders can place the background plate at
infinity.
- Lens 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.
- Material 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.
mib_lookup_background
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.
Copyright (©) 1986-2009 by
mental images GmbH