VTK  9.6.1
vtkFixedPointVolumeRayCastMapper.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
52
53#ifndef vtkFixedPointVolumeRayCastMapper_h
54#define vtkFixedPointVolumeRayCastMapper_h
55
56#include "vtkRenderingVolumeModule.h" // For export macro
57#include "vtkThreads.h" // for VTK_THREAD_RETURN_TYPE
58#include "vtkVolumeMapper.h"
59#include "vtkWrappingHints.h"
60
61#define VTKKW_FP_SHIFT 15
62#define VTKKW_FPMM_SHIFT 17
63#define VTKKW_FP_MASK 0x7fff
64#define VTKKW_FP_SCALE 32767.0
65
66VTK_ABI_NAMESPACE_BEGIN
67class vtkMatrix4x4;
70class vtkRenderer;
71class vtkTimerLog;
72class vtkVolume;
73class vtkTransform;
74class vtkRenderWindow;
88class vtkDataArray;
89
90// Forward declaration needed for use by friend declaration below.
91VTK_THREAD_RETURN_TYPE FixedPointVolumeRayCastMapper_CastRays(void* arg);
92VTK_THREAD_RETURN_TYPE vtkFPVRCMSwitchOnDataType(void* arg);
93
95 : public vtkVolumeMapper
96{
97public:
100 void PrintSelf(ostream& os, vtkIndent indent) override;
101
103
108 vtkSetMacro(SampleDistance, float);
109 vtkGetMacro(SampleDistance, float);
111
113
120 vtkSetMacro(InteractiveSampleDistance, float);
121 vtkGetMacro(InteractiveSampleDistance, float);
123
125
132 vtkSetClampMacro(ImageSampleDistance, float, 0.1f, 100.0f);
133 vtkGetMacro(ImageSampleDistance, float);
135
137
141 vtkSetClampMacro(MinimumImageSampleDistance, float, 0.1f, 100.0f);
142 vtkGetMacro(MinimumImageSampleDistance, float);
144
146
150 vtkSetClampMacro(MaximumImageSampleDistance, float, 0.1f, 100.0f);
151 vtkGetMacro(MaximumImageSampleDistance, float);
153
155
164 vtkSetClampMacro(AutoAdjustSampleDistances, vtkTypeBool, 0, 1);
168
170
182
184
189 void SetNumberOfThreads(int num);
192
194
202
204
211 float ComputeRequiredImageSampleDistance(float desiredTime, vtkRenderer* ren);
212 float ComputeRequiredImageSampleDistance(float desiredTime, vtkRenderer* ren, vtkVolume* vol);
214
219 void Render(vtkRenderer*, vtkVolume*) override;
220
221 unsigned int ToFixedPointPosition(float val);
222 void ToFixedPointPosition(float in[3], unsigned int out[3]);
223 unsigned int ToFixedPointDirection(float dir);
224 void ToFixedPointDirection(float in[3], unsigned int out[3]);
225 void FixedPointIncrement(unsigned int position[3], unsigned int increment[3]);
226 void GetFloatTripleFromPointer(float v[3], float* ptr);
227 void GetUIntTripleFromPointer(unsigned int v[3], unsigned int* ptr);
228 void ShiftVectorDown(unsigned int in[3], unsigned int out[3]);
229 int CheckMinMaxVolumeFlag(unsigned int pos[3], int c);
230 int CheckMIPMinMaxVolumeFlag(unsigned int pos[3], int c, unsigned short maxIdx, int flip);
231
232 void LookupColorUC(unsigned short* colorTable, unsigned short* scalarOpacityTable,
233 unsigned short index, unsigned char color[4]);
234 void LookupDependentColorUC(unsigned short* colorTable, unsigned short* scalarOpacityTable,
235 unsigned short index[4], int components, unsigned char color[4]);
236 void LookupAndCombineIndependentColorsUC(unsigned short* colorTable[4],
237 unsigned short* scalarOpacityTable[4], unsigned short index[4], float weights[4],
238 int components, unsigned char color[4]);
239 int CheckIfCropped(unsigned int pos[3]);
240
241 vtkGetObjectMacro(RenderWindow, vtkRenderWindow);
247 vtkGetVectorMacro(TableShift, float, 4);
248 vtkGetVectorMacro(TableScale, float, 4);
249 vtkGetMacro(ShadingRequired, int);
250 vtkGetMacro(GradientOpacityRequired, int);
251
252 vtkGetObjectMacro(CurrentScalars, vtkDataArray);
253 vtkGetObjectMacro(PreviousScalars, vtkDataArray);
254
255 int* GetRowBounds() { return this->RowBounds; }
256 unsigned short* GetColorTable(int c) { return this->ColorTable[c]; }
257 unsigned short* GetScalarOpacityTable(int c) { return this->ScalarOpacityTable[c]; }
258 unsigned short* GetGradientOpacityTable(int c) { return this->GradientOpacityTable[c]; }
259 vtkVolume* GetVolume() { return this->Volume; }
260 unsigned short** GetGradientNormal() { return this->GradientNormal; }
261 unsigned char** GetGradientMagnitude() { return this->GradientMagnitude; }
262 unsigned short* GetDiffuseShadingTable(int c) { return this->DiffuseShadingTable[c]; }
263 unsigned short* GetSpecularShadingTable(int c) { return this->SpecularShadingTable[c]; }
264
266 int x, int y, unsigned int pos[3], unsigned int dir[3], unsigned int* numSteps);
267
269
271
273
283
284 int PerImageInitialization(vtkRenderer*, vtkVolume*, int, double*, double*, int*);
290
291 void CreateCanonicalView(vtkVolume* volume, vtkImageData* image, int blend_mode,
292 double viewDirection[3], double viewUp[3]);
293
301 {
302 return this->RetrieveRenderTime(ren, vol);
303 }
304 float GetEstimatedRenderTime(vtkRenderer* ren) { return this->RetrieveRenderTime(ren); }
305
307
320 vtkSetMacro(FinalColorWindow, float);
321 vtkGetMacro(FinalColorWindow, float);
322 vtkSetMacro(FinalColorLevel, float);
323 vtkGetMacro(FinalColorLevel, float);
325
326 // Here to be used by the mapper to tell the helper
327 // to flip the MIP comparison in order to support
328 // minimum intensity blending
329 vtkGetMacro(FlipMIPComparison, int);
330
338
339protected:
342
343 // The helper class that displays the image
345
346 // The distance between sample points along the ray
349
350 // The distance between rays in the image
356
357 // Saved values used to restore
360
361 // Internal method for computing matrices needed during
362 // ray casting
363 void ComputeMatrices(double inputOrigin[3], double inputSpacing[3], int inputExtent[6],
364 vtkRenderer* ren, vtkVolume* vol);
365
366 int ComputeRowBounds(vtkRenderer* ren, int imageFlag, int rowBoundsFlag, int inputExtent[6]);
367
369
370 friend VTK_THREAD_RETURN_TYPE FixedPointVolumeRayCastMapper_CastRays(void* arg);
371 friend VTK_THREAD_RETURN_TYPE vtkFPVRCMSwitchOnDataType(void* arg);
372
374
381
383
387
388 // This object encapsulated the image and all related information
390
393
399
400 void StoreRenderTime(vtkRenderer* ren, vtkVolume* vol, float t);
403
405
407
417
420
422
423 unsigned short ColorTable[4][32768 * 3];
424 unsigned short ScalarOpacityTable[4][32768];
425 unsigned short GradientOpacityTable[4][256];
426 int TableSize[4];
427 float TableScale[4];
428 float TableShift[4];
429
432
433 unsigned short** GradientNormal;
434 unsigned char** GradientMagnitude;
437
439
441
443
445
446 unsigned short DiffuseShadingTable[4][65536 * 3];
447 unsigned short SpecularShadingTable[4][65536 * 3];
448
451
454
457
459 double rayStart[3], double rayEnd[3], float rayDirection[3], double bounds[6]);
460
465
467
469 double rayStart[3], double rayEnd[3], int numClippingPlanes, float* clippingPlanes);
470
472 unsigned int CroppingRegionMask[27];
473
474 // Get the ZBuffer value corresponding to location (x,y) where (x,y)
475 // are indexing into the ImageInUse image. This must be converted to
476 // the zbuffer image coordinates. Nearest neighbor value is returned.
477 float GetZBufferValue(int x, int y);
478
484
485 // Some variables used for ray computation
489
490 double CroppingBounds[6];
491
494
495 double SavedSpacing[3];
496
497 // Min Max structure used to do space leaping
498 unsigned short* MinMaxVolume;
503
505 void FillInMaxGradientMagnitudes(int fullDim[3], int smallDim[3]);
506
509
511
513
514private:
516 void operator=(const vtkFixedPointVolumeRayCastMapper&) = delete;
517
518 bool ThreadWarning;
519};
520
522{
523 return static_cast<unsigned int>(val * VTKKW_FP_SCALE + 0.5);
524}
525
526inline void vtkFixedPointVolumeRayCastMapper::ToFixedPointPosition(float in[3], unsigned int out[3])
527{
528 out[0] = static_cast<unsigned int>(in[0] * VTKKW_FP_SCALE + 0.5);
529 out[1] = static_cast<unsigned int>(in[1] * VTKKW_FP_SCALE + 0.5);
530 out[2] = static_cast<unsigned int>(in[2] * VTKKW_FP_SCALE + 0.5);
531}
532
534{
535 return ((dir < 0.0) ? (static_cast<unsigned int>(-dir * VTKKW_FP_SCALE + 0.5))
536 : (0x80000000 + static_cast<unsigned int>(dir * VTKKW_FP_SCALE + 0.5)));
537}
538
540 float in[3], unsigned int out[3])
541{
542 out[0] = ((in[0] < 0.0) ? (static_cast<unsigned int>(-in[0] * VTKKW_FP_SCALE + 0.5))
543 : (0x80000000 + static_cast<unsigned int>(in[0] * VTKKW_FP_SCALE + 0.5)));
544 out[1] = ((in[1] < 0.0) ? (static_cast<unsigned int>(-in[1] * VTKKW_FP_SCALE + 0.5))
545 : (0x80000000 + static_cast<unsigned int>(in[1] * VTKKW_FP_SCALE + 0.5)));
546 out[2] = ((in[2] < 0.0) ? (static_cast<unsigned int>(-in[2] * VTKKW_FP_SCALE + 0.5))
547 : (0x80000000 + static_cast<unsigned int>(in[2] * VTKKW_FP_SCALE + 0.5)));
548}
549
551 unsigned int position[3], unsigned int increment[3])
552{
553 if (increment[0] & 0x80000000)
554 {
555 position[0] += (increment[0] & 0x7fffffff);
556 }
557 else
558 {
559 position[0] -= increment[0];
560 }
561 if (increment[1] & 0x80000000)
562 {
563 position[1] += (increment[1] & 0x7fffffff);
564 }
565 else
566 {
567 position[1] -= increment[1];
568 }
569 if (increment[2] & 0x80000000)
570 {
571 position[2] += (increment[2] & 0x7fffffff);
572 }
573 else
574 {
575 position[2] -= increment[2];
576 }
577}
578
580{
581 v[0] = *(ptr);
582 v[1] = *(ptr + 1);
583 v[2] = *(ptr + 2);
584}
585
587 unsigned int v[3], unsigned int* ptr)
588{
589 v[0] = *(ptr);
590 v[1] = *(ptr + 1);
591 v[2] = *(ptr + 2);
592}
593
595 unsigned int in[3], unsigned int out[3])
596{
597 out[0] = in[0] >> VTKKW_FP_SHIFT;
598 out[1] = in[1] >> VTKKW_FP_SHIFT;
599 out[2] = in[2] >> VTKKW_FP_SHIFT;
600}
601
602inline int vtkFixedPointVolumeRayCastMapper::CheckMinMaxVolumeFlag(unsigned int mmpos[3], int c)
603{
604 vtkIdType offset = static_cast<vtkIdType>(this->MinMaxVolumeSize[3]) *
605 (mmpos[2] * static_cast<vtkIdType>(this->MinMaxVolumeSize[0] * this->MinMaxVolumeSize[1]) +
606 mmpos[1] * static_cast<vtkIdType>(this->MinMaxVolumeSize[0]) + mmpos[0]) +
607 static_cast<vtkIdType>(c);
608
609 return ((*(this->MinMaxVolume + 3 * offset + 2)) & 0x00ff);
610}
611
613 unsigned int mmpos[3], int c, unsigned short maxIdx, int flip)
614{
615 vtkIdType offset = static_cast<vtkIdType>(this->MinMaxVolumeSize[3]) *
616 (mmpos[2] * static_cast<vtkIdType>(this->MinMaxVolumeSize[0] * this->MinMaxVolumeSize[1]) +
617 mmpos[1] * static_cast<vtkIdType>(this->MinMaxVolumeSize[0]) + mmpos[0]) +
618 static_cast<vtkIdType>(c);
619
620 if ((*(this->MinMaxVolume + 3 * offset + 2) & 0x00ff))
621 {
622 if (flip)
623 {
624 return (*(this->MinMaxVolume + 3 * offset) < maxIdx);
625 }
626 else
627 {
628 return (*(this->MinMaxVolume + 3 * offset + 1) > maxIdx);
629 }
630 }
631 else
632 {
633 return 0;
634 }
635}
636
637inline void vtkFixedPointVolumeRayCastMapper::LookupColorUC(unsigned short* colorTable,
638 unsigned short* scalarOpacityTable, unsigned short index, unsigned char color[4])
639{
640 unsigned short alpha = scalarOpacityTable[index];
641 color[0] = static_cast<unsigned char>(
642 (colorTable[3 * index] * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
643 color[1] = static_cast<unsigned char>(
644 (colorTable[3 * index + 1] * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
645 color[2] = static_cast<unsigned char>(
646 (colorTable[3 * index + 2] * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
647 color[3] = static_cast<unsigned char>(alpha >> (VTKKW_FP_SHIFT - 8));
648}
649
650inline void vtkFixedPointVolumeRayCastMapper::LookupDependentColorUC(unsigned short* colorTable,
651 unsigned short* scalarOpacityTable, unsigned short index[4], int components,
652 unsigned char color[4])
653{
654 unsigned short alpha;
655 switch (components)
656 {
657 case 2:
658 alpha = scalarOpacityTable[index[1]];
659 color[0] = static_cast<unsigned char>(
660 (colorTable[3 * index[0]] * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
661 color[1] = static_cast<unsigned char>(
662 (colorTable[3 * index[0] + 1] * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
663 color[2] = static_cast<unsigned char>(
664 (colorTable[3 * index[0] + 2] * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
665 color[3] = static_cast<unsigned char>(alpha >> (VTKKW_FP_SHIFT - 8));
666 break;
667 case 4:
668 alpha = scalarOpacityTable[index[3]];
669 color[0] = static_cast<unsigned char>((index[0] * alpha + 0x7fff) >> VTKKW_FP_SHIFT);
670 color[1] = static_cast<unsigned char>((index[1] * alpha + 0x7fff) >> VTKKW_FP_SHIFT);
671 color[2] = static_cast<unsigned char>((index[2] * alpha + 0x7fff) >> VTKKW_FP_SHIFT);
672 color[3] = static_cast<unsigned char>(alpha >> (VTKKW_FP_SHIFT - 8));
673 break;
674 }
675}
676
678 unsigned short* colorTable[4], unsigned short* scalarOpacityTable[4], unsigned short index[4],
679 float weights[4], int components, unsigned char color[4])
680{
681 unsigned int tmp[4] = { 0, 0, 0, 0 };
682
683 for (int i = 0; i < components; i++)
684 {
685 unsigned short alpha =
686 static_cast<unsigned short>(static_cast<float>(scalarOpacityTable[i][index[i]]) * weights[i]);
687 tmp[0] += static_cast<unsigned char>(
688 ((colorTable[i][3 * index[i]]) * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
689 tmp[1] += static_cast<unsigned char>(
690 ((colorTable[i][3 * index[i] + 1]) * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
691 tmp[2] += static_cast<unsigned char>(
692 ((colorTable[i][3 * index[i] + 2]) * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
693 tmp[3] += static_cast<unsigned char>(alpha >> (VTKKW_FP_SHIFT - 8));
694 }
695
696 color[0] = static_cast<unsigned char>((tmp[0] > 255) ? (255) : (tmp[0]));
697 color[1] = static_cast<unsigned char>((tmp[1] > 255) ? (255) : (tmp[1]));
698 color[2] = static_cast<unsigned char>((tmp[2] > 255) ? (255) : (tmp[2]));
699 color[3] = static_cast<unsigned char>((tmp[3] > 255) ? (255) : (tmp[3]));
700}
701
703{
704 int idx;
705
706 if (pos[2] < this->FixedPointCroppingRegionPlanes[4])
707 {
708 idx = 0;
709 }
710 else if (pos[2] > this->FixedPointCroppingRegionPlanes[5])
711 {
712 idx = 18;
713 }
714 else
715 {
716 idx = 9;
717 }
718
719 if (pos[1] >= this->FixedPointCroppingRegionPlanes[2])
720 {
721 if (pos[1] > this->FixedPointCroppingRegionPlanes[3])
722 {
723 idx += 6;
724 }
725 else
726 {
727 idx += 3;
728 }
729 }
730
731 if (pos[0] >= this->FixedPointCroppingRegionPlanes[0])
732 {
733 if (pos[0] > this->FixedPointCroppingRegionPlanes[1])
734 {
735 idx += 2;
736 }
737 else
738 {
739 idx += 1;
740 }
741 }
742
743 return !(static_cast<unsigned int>(this->CroppingRegionFlags) & this->CroppingRegionMask[idx]);
744}
745
746VTK_ABI_NAMESPACE_END
747#endif
Defines a transfer function for mapping a property to an RGB color value.
encode a direction into a one or two byte value
Compute shading tables for encoded normals.
Use finite differences to estimate gradient.
helper class for a ray cast image
A helper that generates composite images for the volume ray cast mapper.
A helper that generates composite images for the volume ray cast mapper.
A helper that generates composite images for the volume ray cast mapper.
A helper that generates composite images for the volume ray cast mapper.
A helper that generates MIP images for the volume ray cast mapper.
void SetRayCastImage(vtkFixedPointRayCastImage *)
Set / Get the underlying image object.
vtkRayCastImageDisplayHelper * ImageDisplayHelper
vtkFixedPointVolumeRayCastMIPHelper * MIPHelper
vtkFixedPointVolumeRayCastCompositeGOHelper * CompositeGOHelper
int ShouldUseNearestNeighborInterpolation(vtkVolume *vol)
void ReleaseGraphicsResources(vtkWindow *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
float RetrieveRenderTime(vtkRenderer *ren)
void GetFloatTripleFromPointer(float v[3], float *ptr)
void CaptureZBuffer(vtkRenderer *ren)
float ComputeRequiredImageSampleDistance(float desiredTime, vtkRenderer *ren)
What is the image sample distance required to achieve the desired time?
void ComputeRayInfo(int x, int y, unsigned int pos[3], unsigned int dir[3], unsigned int *numSteps)
vtkFixedPointVolumeRayCastCompositeShadeHelper * CompositeShadeHelper
void StoreRenderTime(vtkRenderer *ren, vtkVolume *vol, float t)
vtkFiniteDifferenceGradientEstimator * GradientEstimator
vtkFixedPointVolumeRayCastCompositeGOShadeHelper * CompositeGOShadeHelper
int ComputeRowBounds(vtkRenderer *ren, int imageFlag, int rowBoundsFlag, int inputExtent[6])
float GetZBufferValue(int x, int y)
void DisplayRenderedImage(vtkRenderer *, vtkVolume *)
void FillInMaxGradientMagnitudes(int fullDim[3], int smallDim[3])
void InitializeRayInfo(vtkVolume *vol)
void SetNumberOfThreads(int num)
Set/Get the number of threads to use.
void Render(vtkRenderer *, vtkVolume *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Initialize rendering for this volume.
void ComputeGradients(vtkVolume *vol)
int UpdateShadingTable(vtkRenderer *ren, vtkVolume *vol)
void GetUIntTripleFromPointer(unsigned int v[3], unsigned int *ptr)
float ComputeRequiredImageSampleDistance(float desiredTime, vtkRenderer *ren, vtkVolume *vol)
What is the image sample distance required to achieve the desired time?
static vtkFixedPointVolumeRayCastMapper * New()
float GetEstimatedRenderTime(vtkRenderer *ren, vtkVolume *vol)
Get an estimate of the rendering time for a given volume / renderer.
float RetrieveRenderTime(vtkRenderer *ren, vtkVolume *vol)
int CheckMinMaxVolumeFlag(unsigned int pos[3], int c)
vtkFixedPointVolumeRayCastCompositeHelper * CompositeHelper
int CheckMIPMinMaxVolumeFlag(unsigned int pos[3], int c, unsigned short maxIdx, int flip)
friend VTK_THREAD_RETURN_TYPE vtkFPVRCMSwitchOnDataType(void *arg)
void PerSubVolumeInitialization(vtkRenderer *, vtkVolume *, int)
void ComputeMatrices(double inputOrigin[3], double inputSpacing[3], int inputExtent[6], vtkRenderer *ren, vtkVolume *vol)
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void LookupColorUC(unsigned short *colorTable, unsigned short *scalarOpacityTable, unsigned short index, unsigned char color[4])
void FixedPointIncrement(unsigned int position[3], unsigned int increment[3])
void LookupAndCombineIndependentColorsUC(unsigned short *colorTable[4], unsigned short *scalarOpacityTable[4], unsigned short index[4], float weights[4], int components, unsigned char color[4])
vtkVolumeRayCastSpaceLeapingImageFilter * SpaceLeapFilter
void PerVolumeInitialization(vtkRenderer *, vtkVolume *)
int ClipRayAgainstVolume(double rayStart[3], double rayEnd[3], float rayDirection[3], double bounds[6])
void CreateCanonicalView(vtkVolume *volume, vtkImageData *image, int blend_mode, double viewDirection[3], double viewUp[3])
int PerImageInitialization(vtkRenderer *, vtkVolume *, int, double *, double *, int *)
void UpdateMinMaxVolume(vtkVolume *vol)
friend VTK_THREAD_RETURN_TYPE FixedPointVolumeRayCastMapper_CastRays(void *arg)
void ShiftVectorDown(unsigned int in[3], unsigned int out[3])
int UpdateColorTable(vtkVolume *vol)
int ClipRayAgainstClippingPlanes(double rayStart[3], double rayEnd[3], int numClippingPlanes, float *clippingPlanes)
int GetNumberOfThreads()
Set/Get the number of threads to use.
int UpdateGradients(vtkVolume *vol)
void LookupDependentColorUC(unsigned short *colorTable, unsigned short *scalarOpacityTable, unsigned short index[4], int components, unsigned char color[4])
topologically and geometrically regular array of data
a simple class to control print indentation
Definition vtkIndent.h:29
represent and manipulate 4x4 transformation matrices
A class for performing multithreaded execution.
Defines a 1D piecewise function.
maintain a list of planes
helper class that draws the image to the screen
create a window for renderers to draw into
abstract specification for renderers
Definition vtkRenderer.h:64
record modification and/or execution time
Timer support and logging.
Definition vtkTimerLog.h:86
describes linear transformations via a 4x4 matrix
int CroppingRegionFlags
Cropping variables, and a method for converting the world coordinate cropping region planes to voxel ...
represents a volume (data & properties) in a rendered scene
Definition vtkVolume.h:41
window superclass for vtkRenderWindow
Definition vtkWindow.h:29
int vtkTypeBool
Definition vtkABI.h:64
#define vtkDataArray
VTK_THREAD_RETURN_TYPE vtkFPVRCMSwitchOnDataType(void *arg)
VTK_THREAD_RETURN_TYPE FixedPointVolumeRayCastMapper_CastRays(void *arg)
int vtkIdType
Definition vtkType.h:368
#define VTK_MARSHAL_EXCLUDE_REASON_IS_INTERNAL
#define VTK_MARSHALAUTO
#define VTK_MARSHALEXCLUDE(reason)