Provided by: libvolpack1-dev_1.0b3-9_amd64 bug

NAME

       vpSetLight - set lighting properties

SYNOPSIS

       #include <volpack.h>

       vpResult
       vpSetLight(vpc, light_num, property, n0, n1, n2)
           vpContext *vpc;
           int light_num;
           int property;
           double n0, n1, n2;

ARGUMENTS

       vpc    VolPack context from vpCreateContext.

       light_num
              A  constant  specifying  a  particular  light  source  (VP_LIGHT0,  VP_LIGHT1, ...,
              VP_LIGHT5).

       property
              A constant specifying one lighting property (VP_COLOR or VP_DIRECTION).

       n0, n1, n2
              Components of an RGB color (for VP_COLOR) or a direction vector (for VP_DIRECTION).

DESCRIPTION

       vpSetLight is used to set the properties  of  a  light  source.   VolPack  currently  only
       supports  directional  light sources: each light is infinitely distant, so it can be fully
       characterized by a direction vector and a color.  The  lighting  properties  are  used  by
       vpShadeTable  to  compute  the shading lookup table, which is then used to compute a color
       for each voxel.

       To initialize the lighting environment, call vpSetLight twice for each light source  which
       will  be enabled.  One call should set the RGB components of the light color (by using the
       VP_COLOR code for the property parameter), and one call should set the XYZ  components  of
       the  light  direction  vector (by using the VP_DIRECTION code for the property parameter).
       The particular light source is specified with one of the light  source  codes  defined  in
       volpack.h:  VP_LIGHT0,  VP_LIGHT1, ..., VP_LIGHT5.  In the current implementation, at most
       six light sources may be specified.

       The RGB components of a light color should be numbers in the range 0.0 (zero intensity) to
       1.0 (full intensity).  For grayscale renderings only the first (red) component is used and
       the other components may be set to any legal value.  The default is white light (1.0, 1.0,
       1.0).

       The  light  direction  vector  points from the light source towards the lit object.  It is
       transformed by the current contents of the modeling matrix  (see  vpCurrentMatrix).   This
       allows  the  direction  vector to be specified in an arbitrary coordinate system, provided
       the current modeling matrix properly transforms the vector into  world  coordinates.   The
       default is the vector (1,1,1).

       Each  light source contributes to the shading computation only if it is enabled by calling
       vpEnable.  By default, VP_LIGHT0 is enabled and all other lights are disabled.   The  more
       light  sources  that  are  enabled,  the longer it takes to precompute the contents of the
       shading lookup table.

       One  additional  property   of   the   light   sources   can   be   set   with   vpEnable:
       VP_LIGHT_BOTH_SIDES.   With  this  option enabled each light source shines in two opposing
       directions, as if there were two light sources facing each other with  opposite  direction
       vectors.  No additional computation is required when this option is enabled.

STATE VARIABLES

       Information  about  the  current  lighting  properties can be retrieved with the following
       state variable codes (see vpGeti(3)): VP_LIGHT_BOTH_SIDES.

ERRORS

       The normal return value is VP_OK.  The following error return values are possible:

       VPERROR_LIMIT_EXCEEDED
              The light number is invalid or exceeds an implementation limit.

       VPERROR_SINGULAR
              The light direction vector is a zero vector.

       VPERROR_BAD_VALUE
              The RGB color components are out of range.

       VPERROR_BAD_OPTION
              The property argument is invalid.

SEE ALSO

       VolPack(3), vpCreateContext(3), vpSetLookupShader(3), vpShadeTable(3), vpGetLight(3)