NAME
vpShadeTable - compute the contents of the shading lookup table
SYNOPSIS
#include <volpack.h>
vpResult
vpShadeTable(vpc)
vpContext *vpc;
ARGUMENTS
vpc VolPack context from vpCreateContext.
DESCRIPTION
vpShadeTable computes the contents of the shading lookup table
previously specified with vpLookupShader. For each entry in the table,
the Phong shading equation is evaluated using the current lighting
properties (as specified with vpSetLight), material properties (as
specified with vpSetMaterial), and viewing parameters (as specified
with the view transformation commands). See vpSetMaterial(3) for a
description of the shading calculation.
This function should be called before rendering a volume if any of the
lighting or material properties have changed or if the viewpoint has
changed since the last call to vpShadeTable. It should not be called
if shading is performed using a callback function or if the shading
lookup tables are initialized by a user-defined routine.
There is one state variable that affects the operation of vpShadeTable.
If VP_CLAMP_SHADE_TABLE is enabled (see vpEnable(3)), then values are
clamped to the range 0.0-255.0 before they are stored in the table. If
this option is not enabled then no clamping is performed. Clamping is
enabled by default, but can be turned off to achieve special effects.
For example, if all of the voxels in a data set have very low opacity
then the rendered image may be very dark. To brighten it, multiply all
of the material parameter coefficients by a constant, possibly making
the values exceed 1.0, and turn off clamping.
ERRORS
The normal return value is VP_OK. The following error return values
are possible:
VPERROR_SINGULAR
One of the current view transformation matrices is singular.
VPERROR_BAD_SHADER
The shading lookup tables are sized incorrectly, or one of the
voxel fields used to index the tables is invalid, or the number
of material types is invalid.
VPERROR_BAD_SHADOW
The angle between the shadow light vector and the viewing
direction is too large (must be less than 45 degrees). Either
change the light direction or disable shadows (see
vpSetShadowLookupShader).
SEE ALSO
VolPack(3), vpCreateContext(3), vpCurrentMatrix(3),
vpSetLookupShader(3), vpSetLight(3), vpSetMaterial(3)