oracular (3) Render.3.gz

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

NAME

       vpRenderRawVolume, vpRenderClassifiedVolume - render a volume

SYNOPSIS

       #include <volpack.h>

       vpResult
       vpRenderRawVolume(vpc)
           vpContext *vpc;

       vpResult
       vpRenderClassifiedVolume(vpc)
           vpContext *vpc;

ARGUMENTS

       vpc    VolPack context from vpCreateContext.

DESCRIPTION

       These   routines   are   used   to  render  a  volume  using  the  parameters  in  a  rendering  context.
       vpRenderRawVolume renders the data in the current voxel array and stores the result in the current  image
       array.   If  an  octree  is  present  in  the  context  (see  vpCreateMinMaxOctree(3)) then it is used to
       accelerate rendering.  vpRenderClassifiedVolume is identical in  function  except  that  it  renders  the
       current  preclassified volume (see vpClassifyVolume(3)) instead of the voxel array, and the octree is not
       used.

       vpRenderClassifiedVolume should be used when the same volume is rendered multiple  times  with  the  same
       opacity  transfer  function.  This rendering mode is the fastest.  The opacity transfer function must not
       change because the voxel opacities must be fixed to compute a preclassified volume.

       vpRenderRawVolume should be used when the volume data or the opacity transfer function changes in between
       renderings.   If  the  volume  data  remains fixed then a min-max octree should be computed to accelerate
       rendering.  Rendering is significantly faster with an octree than without, although it  is  still  slower
       than rendering with vpRenderClassifiedVolume.

       Before  the  rendering  routines  are  called the rendering context must be initialized to set the volume
       parameters, classification parameters (vpRenderRawVolume only), viewing parameters, shading and  lighting
       parameters, and image array.  See VolPack(3) for a list of relevant functions.

       One  important  state  variable  should  be  adjusted  before calling the rendering routines: the maximum
       opacity threshold.  This number specifies a threshold value for the opacity of an image  pixel.   If  the
       opacity  of  the  pixel  reaches  the  threshold  then no more voxels are composited into the pixel.  The
       threshold should be a number slightly less than one (0.95 is a good value); numbers closer to 1.0  result
       in  longer rendering times, but less error.  The value of the threshold is changed by calling vpSetd with
       the VP_MAX_RAY_OPACITY option.  The default value is 1.0.

       There are two additional state variables that can be adjusted  to  set  the  size  of  an  internal  data
       structure.   During  rendering,  a  work  buffer  called the intermediate image is used to hold temporary
       results.  The size of this data structure depends on  the  size  of  the  volume  and  the  current  view
       transformation  matrix.   Over  the course of an animation sequence the intermediate image may have to be
       enlarged multiple times, resulting in many calls to the  memory  allocator.   Normally  the  overhead  of
       reallocating  the  data  structure  is  negligible  and  can  be  ignored.  However, this overhead can be
       eliminated by specifying hints for the maximum size of the intermediate image.  The data  structure  will
       then  be  allocated  once,  and  will  never  be  reallocated unless an even larger intermediate image is
       required.  To set the size hints, call vpSeti with the  VP_INT_WIDTH_HINT  and  VP_INT_HEIGHT_HINT  state
       variable  codes.   If  the viewing transformation does not include any scaling, then the maximum possible
       size of each dimension of the intermediate image is twice the  size  of  the  largest  dimension  of  the
       volume.   To  get  a more precise bound, the intermediate image size required for rendering a volume with
       the current viewing parameters can  be  found  by  calling  vpGeti  with  the  VP_INTERMEDIATE_WIDTH  and
       VP_INTERMEDIATE_HEIGHT state variable codes.

ERRORS

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

       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_SINGULAR
              One of the current view transformation matrices is singular.

       VPERROR_BAD_VOLUME
              The volume size has not been set or is invalid, or there is no volume data.

       VPERROR_BAD_VOXEL
              The voxel size or the voxel fields have not been specified or have been incorrectly specified.

       VPERROR_BAD_CLASSIFIER
              The opacity transfer function tables have invalid sizes  or  are  associated  with  invalid  voxel
              fields or have been incorrectly specified.  (vpRenderRawVolume only)

       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)