HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GU_PrimVolumeCache.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: GU_PrimVolumeCache.h ( GU Library, C++)
7  *
8  * COMMENTS:
9  */
10 
11 #ifndef __GU_PrimVolumeCache__
12 #define __GU_PrimVolumeCache__
13 
14 #include "GU_API.h"
15 
16 #include <string.h>
17 #include <UT/UT_Vector3.h>
18 #include <UT/UT_Vector4.h>
19 #include <UT/UT_Array.h>
20 #include <UT/UT_VoxelArray.h>
22 
23 #include <GEO/GEO_PrimVolume.h>
24 
25 #include "GU_Detail.h"
26 #include "GU_DetailHandle.h"
27 #include "GU_DisplayCache.h"
28 
29 class UT_Ramp;
30 class GEO_PrimVolume;
31 class GEO_PrimVDB;
32 
33 // TODO: When deleting GU_DisplayCache, DON'T delete
34 // GU_PrimVolumeCache. Move it to GT_PrimVolumeCache,
35 // along with any functions needed from the superclass.
36 // It's still used by GT_PrimVolume!!!
38 
40 typedef RE_OGLTexture RE_Texture;
42 {
43 public:
45  : myOrg(0,0,0), myDir(0,0,0), myCd(0,0,0), myShadow(0.0),
46  myHasAttenuation(false), myIsAmbient(false), myIsInfinite(false),
47  myIsHeadlight(false), myIsEnvironment(false), myIsCone(false),
48  myEnvMap(nullptr)
49  {
50  for(int i = 0; i < 8; i++)
51  myAtten[i] = 1;
52  }
53 
54  bool operator==(const GU_PrimVolumeCacheLight &l) const
55  {
56  // ignore headlight to prevent updates on tumble
57  if (myIsHeadlight &&
58  myIsHeadlight == l.myIsHeadlight)
59  return true;
60 
61  // Ensure attenuation parameters are the same...
62  if(myHasAttenuation != l.myHasAttenuation || (myHasAttenuation &&
63  (myAttenuationCoeffs[0] != l.myAttenuationCoeffs[0]
64  || myAttenuationCoeffs[1] != l.myAttenuationCoeffs[1]
65  || myAttenuationCoeffs[2] != l.myAttenuationCoeffs[2])))
66  return false;
67  // Ensure cone light parameters are the same...
68  if(myIsCone != l.myIsCone || (myIsCone &&
69  (myConeAngle != l.myConeAngle
70  || myConeDelta != l.myConeDelta
71  || myConeRolloff != l.myConeRolloff)))
72  return false;
73 
74  return (myOrg == l.myOrg) &&
75  (myDir == l.myDir) &&
76  (myCd == l.myCd) &&
77  (myIsAmbient == l.myIsAmbient) &&
78  (myIsInfinite == l.myIsInfinite) &&
79  (myShadow == l.myShadow) &&
80  (myIsEnvironment == l.myIsEnvironment) &&
81  (!myIsEnvironment || (myEnvMap == l.myEnvMap &&
82  myOrientation == l.myOrientation));
83  }
84 
85  void setOrg(const UT_Vector3 &org) { myOrg = org; }
86  void setDir(const UT_Vector3 &dir) { myDir = dir; }
87  void setCd(const UT_Vector3 &cd) { myCd = cd; }
88  void setShadowIntensity(float shadow) { myShadow = shadow; }
89  void setIsAmbient(bool isamb) { myIsAmbient = isamb; }
90  void setIsInfinite(bool isinf) { myIsInfinite = isinf; }
91  void setIsHeadlight(bool hl) { myIsHeadlight = hl; }
92  void setIsEnvironment(bool env) { myIsEnvironment = env; }
93  void setEnvironmentMap(const RE_Texture* env) { myEnvMap = env; }
94  void setOrientation(const UT_Matrix3& mat) { myOrientation = mat; }
95  void setIsCone(bool cone) { myIsCone = cone; }
96  void setConeAngle(float angle) { myConeAngle = angle; }
97  void setConeDelta(float delta) { myConeDelta = delta; }
98  void setConeRolloff(float rolloff) { myConeRolloff = rolloff; }
99 
100  const UT_Vector3 &getOrg() const { return myOrg; }
101  const UT_Vector3 &getDir() const { return myDir; }
102  const UT_Vector3 &getCd() const { return myCd; }
103  float getShadow() const { return myShadow; }
104  float getConeAngle() const { return myConeAngle; }
105  float getConeDelta() const { return myConeDelta; }
106  float getConeRolloff() const { return myConeRolloff; }
107  const RE_Texture* getEnvironmentMap() const { return myEnvMap; }
108  const UT_Matrix3 &getOrientation() const { return myOrientation; }
109 
110  bool isAmbient() const { return myIsAmbient; }
111  bool isInfinite() const { return myIsInfinite; }
112  bool isHeadlight() const { return myIsHeadlight; }
113  bool isEnvironment() const { return myIsEnvironment; }
114  bool isCone() const { return myIsCone; }
115 
116  float getDistance(const UT_Vector3 &pos) const;
117  // Inv Brightness attenuation for the 8 corners: x, then y, then z; - then +
118  // interpolate, then invert.
119  void setCornerAttenuation(float a[8])
120  {
121  myHasAttenuation = true;
122  for(int i=0; i<8; i++)
123  myAtten[i] = a[i];
124  }
125  bool hasAttenuation() const { return myHasAttenuation; }
126  float getAttenuation(const UT_Vector3F &uvw) const;
127  const float* getCornerAttenuation() const { return myAtten; }
128 
129  float* getAttenuationCoeffArray() { return myAttenuationCoeffs; }
130  const float* getConstAttenuationCoeffArray() const { return myAttenuationCoeffs; }
131 
132 protected:
135  float myShadow;
137  float myAtten[8];
138  float myAttenuationCoeffs[3];
139  bool myIsAmbient, myIsInfinite, myIsHeadlight;
141  bool myIsCone;
142  float myConeAngle, myConeDelta, myConeRolloff;
143 
144  const RE_Texture* myEnvMap;
146 };
147 
148 
150 class GU_PrimVolume;
151 
153 {
154 public:
155  SYS_DEPRECATED_HDK(13.0)
157  SYS_DEPRECATED_HDK(13.0)
158  virtual ~GU_PrimVolumeTexture() {}
159 
160  SYS_DEPRECATED_HDK(13.0)
161  virtual void refresh(const UT_VoxelArrayV4 *voxels) = 0;
162  SYS_DEPRECATED_HDK(13.0)
163  virtual int64 getMemoryUsage(bool inclusive) const = 0;
164 };
165 
167 {
168 public:
169  GU_PrimVolumeCacheRamp(UT_Ramp *ramp, bool periodic);
170  ~GU_PrimVolumeCacheRamp();
171 
172  void eval(float &rval, float val) const;
173  void eval(UT_Vector4 &rval, float val) const;
174 
175 protected:
178 };
179 
181 {
182 public:
183  GU_PrimVolumeCacheSampler(const GEO_Detail *gdp, const GEO_Primitive *vol);
185 
186  GU_PrimVolumeCacheRamp *buildRampFromAttribute(
187  const GEO_Detail *gdp,
188  const char *attribname) const;
189  int findCollationIndex(const GEO_Detail *gdp,
190  const GEO_Primitive *vol) const;
191  const GEO_Primitive *selectVolumeFromAttribute(
192  const GEO_Detail *gdp,
193  const char *attribname,
194  int collateidx) const;
195  void selectVolumesFromAttribute(
196  const GEO_Primitive *vol[3],
197  const GEO_Detail *gdp,
198  const char *attribname,
199  int collateidx) const;
200  void getRangeFromAttribute(
201  const GEO_Detail *gdp,
202  const char *attribname,
203  float &rmin, float &rscale) const;
204  float getFloatFromAttribute(
205  const GEO_Detail *gdp,
206  const char *attribname,
207  float def) const;
208 
209  float getDensity(int x, int y, int z) const;
210  UT_Vector4 getDiffuse(int x, int y, int z) const;
211 
212  void getDensityProbe(UT_VoxelProbeF &probe) const;
213  void getEmitProbe(UT_VoxelProbeF &probe) const;
214  void getEmitCdProbe(UT_VoxelProbeV4 &probe) const;
215  const UT_VoxelArrayF *getDensityArray() const;
216 
217  const GEO_Primitive *densityField() const { return myDensityField; }
218  void setDensityField(const GEO_Primitive *densityfield);
219 
220  void hardenFields(const UT_VoxelArray<UT_Vector4> &refvol,
221  const GEO_PrimVolumeXform &volxform,
222  bool isheightfield);
223 
224  UT_VoxelArrayReadHandleF hardenScalar(const UT_VoxelArrayV4 &refvol,
225  const GEO_PrimVolumeXform &volxform,
226  const GEO_Primitive *field,
228  float rmin, float rinvscale);
229  UT_VoxelArrayReadHandleV4 hardenVector(const UT_VoxelArrayV4 &refvol,
230  const GEO_PrimVolumeXform &volxform,
231  const GEO_Primitive *field,
233  float rmin, float rinvscale);
234  UT_VoxelArrayReadHandleV4 hardenVectorMulti(const UT_VoxelArrayV4 &refvol,
235  const GEO_PrimVolumeXform &volxform,
236  const GEO_Primitive *field[3],
238  float rmin, float rinvscale);
239  UT_VoxelArrayReadHandleV4 hardenVDBVector(const UT_VoxelArrayV4 &refvol,
240  const GEO_PrimVolumeXform &volxform,
241  const GEO_Primitive *field,
243  float rmin, float rinvscale);
244 
246  dst->numTiles() > 1,
247  doHardenAligned,
248  UT_VoxelArrayF *, dst,
249  const UT_VoxelArrayF *, src,
250  const GEO_PrimVolumeXform &, dst_xform,
251  const GEO_PrimVolumeXform &, src_xform,
252  GU_PrimVolumeCacheRamp *, ramp,
253  float, rmin,
254  float, rinvscale)
255  void doHardenAlignedPartial(UT_VoxelArrayF *dst,
257  const GEO_PrimVolumeXform &dst_xform,
258  const GEO_PrimVolumeXform &src_xform,
260  float rmin, float rinvscale,
261  const UT_JobInfo &info) const;
263  dst->numTiles() > 1,
264  doHardenUnaligned,
265  UT_VoxelArrayF *, dst,
266  const UT_VoxelArrayF *, src,
267  const GEO_PrimVolumeXform &, dst_xform,
268  const GEO_PrimVolumeXform &, src_xform,
269  GU_PrimVolumeCacheRamp *, ramp,
270  float, rmin,
271  float, rinvscale)
272  void doHardenUnalignedPartial(UT_VoxelArrayF *dst,
273  const UT_VoxelArrayF *src,
274  const GEO_PrimVolumeXform &dst_xform,
275  const GEO_PrimVolumeXform &src_xform,
277  float rmin, float rinvscale,
278  const UT_JobInfo &info) const;
280  dst->numTiles() > 1,
281  doHardenVectorAligned,
282  UT_VoxelArrayV4 *, dst,
283  const UT_VoxelArrayF *, src,
284  const GEO_PrimVolumeXform &, dst_xform,
285  const GEO_PrimVolumeXform &, src_xform,
286  GU_PrimVolumeCacheRamp *, ramp,
287  float, rmin,
288  float, rinvscale)
289  void doHardenVectorAlignedPartial(UT_VoxelArrayV4 *dst,
290  const UT_VoxelArrayF *src,
291  const GEO_PrimVolumeXform &dst_xform,
292  const GEO_PrimVolumeXform &src_xform,
294  float rmin, float rinvscale,
295  const UT_JobInfo &info) const;
297  dst->numTiles() > 1,
298  doHardenVectorUnaligned,
299  UT_VoxelArrayV4 *, dst,
300  const UT_VoxelArrayF *, src,
301  const GEO_PrimVolumeXform &, dst_xform,
302  const GEO_PrimVolumeXform &, src_xform,
303  GU_PrimVolumeCacheRamp *, ramp,
304  float, rmin,
305  float, rinvscale)
306  void doHardenVectorUnalignedPartial(UT_VoxelArrayV4 *dst,
307  const UT_VoxelArrayF *src,
308  const GEO_PrimVolumeXform &dst_xform,
309  const GEO_PrimVolumeXform &src_xform,
311  float rmin, float rinvscale,
312  const UT_JobInfo &info) const;
314  dst->numTiles() > 1,
315  doHardenVectorAxisAligned,
316  UT_VoxelArrayV4 *, dst,
317  const UT_VoxelArrayF *, src,
318  int, axis,
319  const GEO_PrimVolumeXform &, dst_xform,
320  const GEO_PrimVolumeXform &, src_xform,
321  GU_PrimVolumeCacheRamp *, ramp,
322  float, rmin,
323  float, rinvscale)
324  void doHardenVectorAxisAlignedPartial(UT_VoxelArrayV4 *dst,
326  int axis,
327  const GEO_PrimVolumeXform &dst_xform,
328  const GEO_PrimVolumeXform &src_xform,
330  float rmin, float rinvscale,
331  const UT_JobInfo &info) const;
333  dst->numTiles() > 1,
334  doHardenVectorAxisUnaligned,
335  UT_VoxelArrayV4 *, dst,
336  const UT_VoxelArrayF *, src,
337  int, axis,
338  const GEO_PrimVolumeXform &, dst_xform,
339  const GEO_PrimVolumeXform &, src_xform,
340  GU_PrimVolumeCacheRamp *, ramp,
341  float, rmin,
342  float, rinvscale)
343  void doHardenVectorAxisUnalignedPartial(UT_VoxelArrayV4 *dst,
344  const UT_VoxelArrayF *src,
345  int axis,
346  const GEO_PrimVolumeXform &dst_xform,
347  const GEO_PrimVolumeXform &src_xform,
349  float rmin, float rinvscale,
350  const UT_JobInfo &info) const;
351 
353  dst->numTiles() > 1,
354  doHardenVDB,
355  UT_VoxelArrayF *, dst,
356  const GEO_PrimVDB *, src,
357  const GEO_PrimVolumeXform &, xform,
358  GU_PrimVolumeCacheRamp *, ramp,
359  float, rmin,
360  float, rinvscale)
361  void doHardenVDBPartial(UT_VoxelArrayF *dst,
362  const GEO_PrimVDB *src,
363  const GEO_PrimVolumeXform &xform,
365  float rmin, float rinvscale,
366  const UT_JobInfo &info) const;
368  dst->numTiles() > 1,
369  doHardenVectorVDB,
370  UT_VoxelArrayV4 *, dst,
371  const GEO_PrimVDB *, src,
372  const GEO_PrimVolumeXform &, xform,
373  GU_PrimVolumeCacheRamp *, ramp,
374  float, rmin,
375  float, rinvscale)
376  void doHardenVectorVDBPartial(UT_VoxelArrayV4 *dst,
377  const GEO_PrimVDB *src,
378  const GEO_PrimVolumeXform &xform,
380  float rmin, float rinvscale,
381  const UT_JobInfo &info) const;
383  dst->numTiles() > 1,
384  doHardenVectorAxisVDB,
385  UT_VoxelArrayV4 *, dst,
386  const GEO_PrimVDB *, src,
387  int, axis,
388  const GEO_PrimVolumeXform &, xform,
389  GU_PrimVolumeCacheRamp *, ramp,
390  float, rmin,
391  float, rinvscale)
392  void doHardenVectorAxisVDBPartial(UT_VoxelArrayV4 *dst,
393  const GEO_PrimVDB *src,
394  int axis,
395  const GEO_PrimVolumeXform &xform,
397  float rmin, float rinvscale,
398  const UT_JobInfo &info) const;
400  dst->numTiles() > 1,
401  doHardenVectorVectorVDB,
402  UT_VoxelArrayV4 *, dst,
403  const GEO_PrimVDB *, src,
404  const GEO_PrimVolumeXform &, xform,
405  GU_PrimVolumeCacheRamp *, ramp,
406  float, rmin,
407  float, rinvscale)
408  void doHardenVectorVectorVDBPartial(UT_VoxelArrayV4 *dst,
409  const GEO_PrimVDB *src,
410  const GEO_PrimVolumeXform &xform,
412  float rmin, float rinvscale,
413  const UT_JobInfo &info) const;
414 
416  dst->numTiles() > 1,
417  applyAmbientLight,
418  UT_VoxelArrayV4 *, dst,
419  const UT_Vector4, cd)
420  void applyAmbientLightPartial(UT_VoxelArrayV4 *dst,
421  const UT_Vector4 &cd,
422  const UT_JobInfo &info) const;
423 
424  bool hasEmission() const;
425  float getEmissionScale() const { return myEmissionScale; }
426  float getShadowScale() const { return myShadowScale; }
427 
428 protected:
429  float myDensityMin, myDensityInvRange;
433 
434 
435  float myDiffuseMin, myDiffuseInvRange;
436  const GEO_Primitive *myDiffuseField[3];
438 
440  float myEmissionMin, myEmissionInvRange;
443 
444 
445  float myEmissionCdMin, myEmissionCdInvRange;
446  const GEO_Primitive *myEmissionCdField[3];
448 
453 };
454 
456 {
457 public:
459  ~GU_PrimVolumeCache() override;
460 
461  // Build the cache.
462  int refresh(const GEO_Primitive *parent_prim,
463  const GU_PrimVolumeCacheParms &parms);
464 
465  // Get the cached data.
466  UT_VoxelArrayV4 *getShadedVoxels(bool *reduced=nullptr) const
467  {
468  if(reduced)
469  *reduced = myVolumeReduced;
470  return myVoxels;
471  }
472  SYS_DEPRECATED_HDK(13.0)
473  GU_PrimVolumeTexture *getTexture() const { return myTexture; }
474  SYS_DEPRECATED_HDK(13.0)
475  void setTexture(GU_PrimVolumeTexture *tex)
476  { myTexture = tex; }
477 
478  GU_ConstDetailHandle getIsoSurface() const { return myIsoSurf; }
479 
480  UT_Vector3 getIsoCd() const { return myIsoCd; }
481 
482  /// The cached resolution
483  UT_Vector3I getRes() const { return myCacheRes; }
484 
486  { return myVolumeXform; }
487 
488  int64 getMemoryUsage(bool inclusive) const
489  {
490  int64 mem = inclusive ? sizeof(*this) : 0;
491  if (myVoxels)
492  mem += myVoxels->getMemoryUsage(true);
493  mem += myLightList.getMemoryUsage(true);
494  if (myTexture)
495  mem += myTexture->getMemoryUsage(true);
496  mem += myIsoSurf.getMemoryUsage(false);
497  return mem;
498  }
499 
500 protected:
501  void lightVoxelsFromLight(const GU_PrimVolumeCacheSampler &sampler,
502  const GU_PrimVolumeCacheLight &light,
503  const UT_Vector3 &cd,
504  float shadowdensity);
505 
506  void rainbowVoxels(const GU_PrimVolumeCacheSampler &sampler);
507 
508  THREADED_METHOD3(GU_PrimVolumeCache, myVoxels->numTiles() > 1,
509  computeAlphaVoxels,
511  float, lightdensity,
512  bool, premultiply)
513  void computeAlphaVoxelsPartial(
515  float lightdensity,
516  bool premultiply,
517  const UT_JobInfo &info);
518 
519  /// Maximum per-axis resolution to do the self shadowing calculations
520  /// at.
521  int getMaxRes(const GEO_Primitive *volume,
522  const GU_PrimVolumeCacheParms &parms,
523  int axis) const;
524 
525  /// Used to convert to and from our *cached* indices, not the
526  /// actual primitive indices that may be a different resolution
527  bool indexToPos(int x, int y, int z, UT_Vector3 &pos) const;
528  bool posToIndex(UT_Vector3 pos, int &x, int &y, int &z) const;
529 
532  SYS_DEPRECATED_HDK(13.0)
534  GU_DetailHandle myIsoSurf;
535  float myOldLOD;
536  UT_Vector3 myIsoCd;
537 
538  UT_Vector3I myCacheRes;
539  GEO_PrimVolumeXform myVolumeXform;
540  bool myVolumeReduced;
541 
542  // Ignore these
543  UT_Matrix4 myCacheXform;
544  UT_Matrix4 myCacheIXform;
545 
546  const UT_VoxelArrayV4 *myCacheVolume;
547 };
548 
550 {
551 public:
553  : myMaxResW(0), myMaxResH(0), myMaxResD(0)
554  , myMax2DRes(0)
555  , myDownscale(1.0)
556  , myIsoPoints(false)
557  , myPreMultiply(true)
558  , myCachedFlag(true)
559  {}
561 
563  { myLightList = lightlist; }
565  { return myLightList; }
566 
567  void setMaxResolution(int w, int h, int d)
568  { myMaxResW = w; myMaxResH = h; myMaxResD = d; }
569  void getMaxResolution(int &w, int &h, int &d) const
570  { w = myMaxResW; h = myMaxResH; d = myMaxResD; }
571 
573  { myDownscale = scale; }
575  { return myDownscale; }
576 
577  void setMax2DRes(int s)
578  { myMax2DRes = s; }
579  int getMax2DRes() const
580  { return myMax2DRes; }
581 
582  void setIsoPoints(bool iso_pts) { myIsoPoints = iso_pts; }
583  bool isIsoPoints() const { return myIsoPoints; }
584 
585  void setPreMultiply(bool premultiply) { myPreMultiply = premultiply; }
586  bool getPreMultiply() const { return myPreMultiply; }
587 
588  void setCached(bool b) const { myCachedFlag = b; }
589  bool isCached() const { return myCachedFlag; }
590 
591 private:
593  int myMaxResW;
594  int myMaxResH;
595  int myMaxResD;
596  int myMax2DRes;
597  fpreal myDownscale;
598  bool myIsoPoints;
599  bool myPreMultiply;
600  mutable bool myCachedFlag;
601 };
602 
604 
605 #endif
606 
void setIsEnvironment(bool env)
#define THREADED_METHOD8_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7, PARMTYPE8, PARMNAME8)
const float * getConstAttenuationCoeffArray() const
GLboolean GLboolean GLboolean b
Definition: glcorearb.h:1222
#define THREADED_METHOD6_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6)
GLenum GLenum GLenum GLenum GLenum scale
Definition: glew.h:14163
const UT_Array< GU_PrimVolumeCacheLight > & getLights() const
void setIsAmbient(bool isamb)
*get result *(waiting if necessary)*A common idiom is to fire a bunch of sub tasks at the and then *wait for them to all complete We provide a helper class
Definition: thread.h:623
const UT_Vector3 & getOrg() const
void
Definition: png.h:1083
#define SYS_DEPRECATED_PUSH_DISABLE()
void setCd(const UT_Vector3 &cd)
const GEO_Primitive * myEmissionField
#define SYS_DEPRECATED_POP_DISABLE()
void getMaxResolution(int &w, int &h, int &d) const
const RE_Texture * myEnvMap
void setDir(const UT_Vector3 &dir)
void setDownscale(fpreal scale)
const RE_Texture * getEnvironmentMap() const
void setLights(UT_Array< GU_PrimVolumeCacheLight > &lightlist)
void setShadowIntensity(float shadow)
void setOrientation(const UT_Matrix3 &mat)
void setPreMultiply(bool premultiply)
void setOrg(const UT_Vector3 &org)
GU_PrimVolumeCacheRamp * myEmissionCdRamp
GLuint sampler
Definition: glcorearb.h:1656
GLenum src
Definition: glcorearb.h:1793
void setEnvironmentMap(const RE_Texture *env)
GU_PrimVolumeCacheRamp * myEmissionRamp
const UT_Matrix3 & getOrientation() const
GU_ConstDetailHandle getIsoSurface() const
#define THREADED_METHOD3(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3)
UT_VoxelArrayReadHandleF myEmissionHandle
GLdouble l
Definition: glew.h:9164
GLint GLenum GLint x
Definition: glcorearb.h:409
UT_VoxelArrayV4 * getShadedVoxels(bool *reduced=nullptr) const
GLubyte GLubyte GLubyte GLubyte w
Definition: glcorearb.h:857
UT_Vector4T< float > UT_Vector4
const UT_Vector3 & getCd() const
GU_PrimVolumeCacheRamp * myDensityRamp
#define THREADED_METHOD7_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6, PARMTYPE7, PARMNAME7)
void setConeRolloff(float rolloff)
void setMaxResolution(int w, int h, int d)
void setConeDelta(float delta)
GLboolean GLboolean GLboolean GLboolean a
Definition: glcorearb.h:1222
GLdouble GLdouble GLdouble z
Definition: glcorearb.h:848
long long int64
Definition: SYS_Types.h:116
typedef int(WINAPI *PFNWGLRELEASEPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer
const float * getCornerAttenuation() const
HUSD_API bool eval(VtValue &val, T &ret_val)
#define GU_API
Definition: GU_API.h:14
#define SYS_DEPRECATED_HDK(__V__)
void setIsInfinite(bool isinf)
#define THREADED_METHOD2_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2)
UT_Array< GU_PrimVolumeCacheLight > myLightList
GLuint GLfloat * val
Definition: glcorearb.h:1608
GLfloat GLfloat GLfloat GLfloat h
Definition: glcorearb.h:2002
UT_Vector3 getIsoCd() const
fpreal64 fpreal
Definition: SYS_Types.h:277
Utility class for containing a color ramp.
Definition: UT_Ramp.h:84
const GEO_Primitive * myDensityField
bool operator==(const GU_PrimVolumeCacheLight &l) const
void setIsoPoints(bool iso_pts)
const GEO_Primitive * densityField() const
void setCornerAttenuation(float a[8])
GLdouble angle
Definition: glew.h:9177
UT_VoxelArrayV4 * myVoxels
UT_VoxelArrayReadHandleV4 myDiffuseHandle
GU_PrimVolumeCacheRamp * myDiffuseRamp
#define const
Definition: zconf.h:214
GLenum GLenum dst
Definition: glcorearb.h:1793
void setCached(bool b) const
UT_Vector3I getRes() const
The cached resolution.
GLdouble s
Definition: glew.h:1395
UT_VoxelArrayReadHandleF myDensityHandle
UT_VoxelArrayReadHandleV4 myEmissionCdHandle
GLint y
Definition: glcorearb.h:103
GEO_PrimVolumeXform getSpaceTransform() const
int64 getMemoryUsage(bool inclusive) const
const UT_Vector3 & getDir() const
void setConeAngle(float angle)