You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.4 KiB
C

/*=========================================================================
Program: Visualization Toolkit
Module: vtkRayCastStructures.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkRayCastStructures
* @brief the structure definitions for ray casting
*
*
* These are the structures required for ray casting.
*
* @sa
* vtkRayCaster
*/
#ifndef vtkRayCastStructures_h
#define vtkRayCastStructures_h
typedef struct
{
// These are the input values that define the ray. Depending on
// whether we are casting a WorldRay or a ViewRay, these are in
// world coordinates or view coordinates.
float Origin[3];
float Direction[3];
// The pixel location for the ray that is being cast can be
// important, for example if hardware ray bounding is being used
// and the location in the depth buffer must be matched to this
// ray.
int Pixel[2];
// The world coordinate location of the camera is important for the
// ray caster to be able to return a Z value for the intersection
float CameraPosition[3];
// This input value defines the size of the image
int ImageSize[2];
// These are input values for clipping but may be changed
// along the way
float NearClip;
float FarClip;
// These are the return values - RGBA and Z
float Color[4];
float Depth;
// Some additional space that may be useful for the
// specific implementation of the ray caster. This structure
// is a convenient place to put it, since there is one
// per thread so that writing to these locations is safe
// Ray information transformed into local coordinates
float TransformedStart[4];
float TransformedEnd[4];
float TransformedDirection[4];
float TransformedIncrement[3];
// The number of steps we want to take if this is
// a ray caster that takes steps
int NumberOfStepsToTake;
// The number of steps we actually take if this is
// a ray caster that takes steps
int NumberOfStepsTaken;
} vtkRayCastRayInfo;
#endif
// VTK-HeaderTest-Exclude: vtkRayCastStructures.h