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 {
41 public:
43  : myOrg(0,0,0), myDir(0,0,0), myCd(0,0,0), myShadow(0.0),
44  myHasAttenuation(false), myIsAmbient(false), myIsInfinite(false),
45  myIsHeadlight(false), myIsEnvironment(false), myIsCone(false)
46  {
47  for(int i = 0; i < 8; i++)
48  myAtten[i] = 1;
49  }
50 
51  bool operator==(const GU_PrimVolumeCacheLight &l) const
52  {
53  // ignore headlight to prevent updates on tumble
54  if (myIsHeadlight &&
55  myIsHeadlight == l.myIsHeadlight)
56  return true;
57 
58  // Ensure attenuation parameters are the same...
59  if(myHasAttenuation != l.myHasAttenuation || (myHasAttenuation &&
60  (myAttenuationCoeffs[0] != l.myAttenuationCoeffs[0]
61  || myAttenuationCoeffs[1] != l.myAttenuationCoeffs[1]
62  || myAttenuationCoeffs[2] != l.myAttenuationCoeffs[2])))
63  return false;
64  // Ensure cone light parameters are the same...
65  if(myIsCone != l.myIsCone || (myIsCone &&
66  (myConeAngle != l.myConeAngle
67  || myConeDelta != l.myConeDelta
68  || myConeRolloff != l.myConeRolloff)))
69  return false;
70 
71  return (myOrg == l.myOrg) &&
72  (myDir == l.myDir) &&
73  (myCd == l.myCd) &&
74  (myIsAmbient == l.myIsAmbient) &&
75  (myIsInfinite == l.myIsInfinite) &&
76  (myShadow == l.myShadow) &&
77  (myIsEnvironment == l.myIsEnvironment);
78  }
79 
80  void setOrg(const UT_Vector3 &org) { myOrg = org; }
81  void setDir(const UT_Vector3 &dir) { myDir = dir; }
82  void setCd(const UT_Vector3 &cd) { myCd = cd; }
83  void setShadowIntensity(float shadow) { myShadow = shadow; }
84  void setIsAmbient(bool isamb) { myIsAmbient = isamb; }
85  void setIsInfinite(bool isinf) { myIsInfinite = isinf; }
86  void setIsHeadlight(bool hl) { myIsHeadlight = hl; }
87  void setIsEnvironment(bool env) { myIsEnvironment = env; }
88  void setIsCone(bool cone) { myIsCone = cone; }
89  void setConeAngle(float angle) { myConeAngle = angle; }
90  void setConeDelta(float delta) { myConeDelta = delta; }
91  void setConeRolloff(float rolloff) { myConeRolloff = rolloff; }
92 
93  const UT_Vector3 &getOrg() const { return myOrg; }
94  const UT_Vector3 &getDir() const { return myDir; }
95  const UT_Vector3 &getCd() const { return myCd; }
96  float getShadow() const { return myShadow; }
97  float getConeAngle() const { return myConeAngle; }
98  float getConeDelta() const { return myConeDelta; }
99  float getConeRolloff() const { return myConeRolloff; }
100 
101  bool isAmbient() const { return myIsAmbient; }
102  bool isInfinite() const { return myIsInfinite; }
103  bool isHeadlight() const { return myIsHeadlight; }
104  bool isEnvironment() const { return myIsEnvironment; }
105  bool isCone() const { return myIsCone; }
106 
107  float getDistance(const UT_Vector3 &pos) const;
108  // Inv Brightness attenuation for the 8 corners: x, then y, then z; - then +
109  // interpolate, then invert.
110  void setCornerAttenuation(float a[8])
111  {
112  myHasAttenuation = true;
113  for(int i=0; i<8; i++)
114  myAtten[i] = a[i];
115  }
116  bool hasAttenuation() const { return myHasAttenuation; }
117  float getAttenuation(const UT_Vector3F &uvw) const;
118  const float* getCornerAttenuation() const { return myAtten; }
119 
120  float* getAttenuationCoeffArray() { return myAttenuationCoeffs; }
121  const float* getConstAttenuationCoeffArray() const { return myAttenuationCoeffs; }
122 
123 protected:
126  float myShadow;
128  float myAtten[8];
129  float myAttenuationCoeffs[3];
130  bool myIsAmbient, myIsInfinite, myIsHeadlight;
132  bool myIsCone;
133  float myConeAngle, myConeDelta, myConeRolloff;
134 };
135 
136 
138 class GU_PrimVolume;
139 
141 {
142 public:
143  SYS_DEPRECATED_HDK(13.0)
145  SYS_DEPRECATED_HDK(13.0)
146  virtual ~GU_PrimVolumeTexture() {}
147 
148  SYS_DEPRECATED_HDK(13.0)
149  virtual void refresh(const UT_VoxelArrayV4 *voxels) = 0;
150  SYS_DEPRECATED_HDK(13.0)
151  virtual int64 getMemoryUsage(bool inclusive) const = 0;
152 };
153 
155 {
156 public:
157  GU_PrimVolumeCacheRamp(UT_Ramp *ramp, bool periodic);
158  ~GU_PrimVolumeCacheRamp();
159 
160  void eval(float &rval, float val) const;
161  void eval(UT_Vector4 &rval, float val) const;
162 
163 protected:
166 };
167 
169 {
170 public:
171  GU_PrimVolumeCacheSampler(const GEO_Detail *gdp, const GEO_Primitive *vol);
173 
174  GU_PrimVolumeCacheRamp *buildRampFromAttribute(
175  const GEO_Detail *gdp,
176  const char *attribname) const;
177  int findCollationIndex(const GEO_Detail *gdp,
178  const GEO_Primitive *vol) const;
179  const GEO_Primitive *selectVolumeFromAttribute(
180  const GEO_Detail *gdp,
181  const char *attribname,
182  int collateidx) const;
183  void selectVolumesFromAttribute(
184  const GEO_Primitive *vol[3],
185  const GEO_Detail *gdp,
186  const char *attribname,
187  int collateidx) const;
188  void getRangeFromAttribute(
189  const GEO_Detail *gdp,
190  const char *attribname,
191  float &rmin, float &rscale) const;
192  float getFloatFromAttribute(
193  const GEO_Detail *gdp,
194  const char *attribname,
195  float def) const;
196 
197  float getDensity(int x, int y, int z) const;
198  UT_Vector4 getDiffuse(int x, int y, int z) const;
199 
200  void getDensityProbe(UT_VoxelProbeF &probe) const;
201  void getEmitProbe(UT_VoxelProbeF &probe) const;
202  void getEmitCdProbe(UT_VoxelProbeV4 &probe) const;
203  const UT_VoxelArrayF *getDensityArray() const;
204 
205  const GEO_Primitive *densityField() const { return myDensityField; }
206  void setDensityField(const GEO_Primitive *densityfield);
207 
208  void hardenFields(const UT_VoxelArray<UT_Vector4> &refvol,
209  const GEO_PrimVolumeXform &volxform,
210  bool isheightfield);
211 
212  UT_VoxelArrayReadHandleF hardenScalar(const UT_VoxelArrayV4 &refvol,
213  const GEO_PrimVolumeXform &volxform,
214  const GEO_Primitive *field,
216  float rmin, float rinvscale);
217  UT_VoxelArrayReadHandleV4 hardenVector(const UT_VoxelArrayV4 &refvol,
218  const GEO_PrimVolumeXform &volxform,
219  const GEO_Primitive *field,
221  float rmin, float rinvscale);
222  UT_VoxelArrayReadHandleV4 hardenVectorMulti(const UT_VoxelArrayV4 &refvol,
223  const GEO_PrimVolumeXform &volxform,
224  const GEO_Primitive *field[3],
226  float rmin, float rinvscale);
227  UT_VoxelArrayReadHandleV4 hardenVDBVector(const UT_VoxelArrayV4 &refvol,
228  const GEO_PrimVolumeXform &volxform,
229  const GEO_Primitive *field,
231  float rmin, float rinvscale);
232 
234  dst->numTiles() > 1,
235  doHardenAligned,
236  UT_VoxelArrayF *, dst,
237  const UT_VoxelArrayF *, src,
238  const GEO_PrimVolumeXform &, dst_xform,
239  const GEO_PrimVolumeXform &, src_xform,
240  GU_PrimVolumeCacheRamp *, ramp,
241  float, rmin,
242  float, rinvscale)
243  void doHardenAlignedPartial(UT_VoxelArrayF *dst,
245  const GEO_PrimVolumeXform &dst_xform,
246  const GEO_PrimVolumeXform &src_xform,
248  float rmin, float rinvscale,
249  const UT_JobInfo &info) const;
251  dst->numTiles() > 1,
252  doHardenUnaligned,
253  UT_VoxelArrayF *, dst,
254  const UT_VoxelArrayF *, src,
255  const GEO_PrimVolumeXform &, dst_xform,
256  const GEO_PrimVolumeXform &, src_xform,
257  GU_PrimVolumeCacheRamp *, ramp,
258  float, rmin,
259  float, rinvscale)
260  void doHardenUnalignedPartial(UT_VoxelArrayF *dst,
261  const UT_VoxelArrayF *src,
262  const GEO_PrimVolumeXform &dst_xform,
263  const GEO_PrimVolumeXform &src_xform,
265  float rmin, float rinvscale,
266  const UT_JobInfo &info) const;
268  dst->numTiles() > 1,
269  doHardenVectorAligned,
270  UT_VoxelArrayV4 *, dst,
271  const UT_VoxelArrayF *, src,
272  const GEO_PrimVolumeXform &, dst_xform,
273  const GEO_PrimVolumeXform &, src_xform,
274  GU_PrimVolumeCacheRamp *, ramp,
275  float, rmin,
276  float, rinvscale)
277  void doHardenVectorAlignedPartial(UT_VoxelArrayV4 *dst,
278  const UT_VoxelArrayF *src,
279  const GEO_PrimVolumeXform &dst_xform,
280  const GEO_PrimVolumeXform &src_xform,
282  float rmin, float rinvscale,
283  const UT_JobInfo &info) const;
285  dst->numTiles() > 1,
286  doHardenVectorUnaligned,
287  UT_VoxelArrayV4 *, dst,
288  const UT_VoxelArrayF *, src,
289  const GEO_PrimVolumeXform &, dst_xform,
290  const GEO_PrimVolumeXform &, src_xform,
291  GU_PrimVolumeCacheRamp *, ramp,
292  float, rmin,
293  float, rinvscale)
294  void doHardenVectorUnalignedPartial(UT_VoxelArrayV4 *dst,
295  const UT_VoxelArrayF *src,
296  const GEO_PrimVolumeXform &dst_xform,
297  const GEO_PrimVolumeXform &src_xform,
299  float rmin, float rinvscale,
300  const UT_JobInfo &info) const;
302  dst->numTiles() > 1,
303  doHardenVectorAxisAligned,
304  UT_VoxelArrayV4 *, dst,
305  const UT_VoxelArrayF *, src,
306  int, axis,
307  const GEO_PrimVolumeXform &, dst_xform,
308  const GEO_PrimVolumeXform &, src_xform,
309  GU_PrimVolumeCacheRamp *, ramp,
310  float, rmin,
311  float, rinvscale)
312  void doHardenVectorAxisAlignedPartial(UT_VoxelArrayV4 *dst,
314  int axis,
315  const GEO_PrimVolumeXform &dst_xform,
316  const GEO_PrimVolumeXform &src_xform,
318  float rmin, float rinvscale,
319  const UT_JobInfo &info) const;
321  dst->numTiles() > 1,
322  doHardenVectorAxisUnaligned,
323  UT_VoxelArrayV4 *, dst,
324  const UT_VoxelArrayF *, src,
325  int, axis,
326  const GEO_PrimVolumeXform &, dst_xform,
327  const GEO_PrimVolumeXform &, src_xform,
328  GU_PrimVolumeCacheRamp *, ramp,
329  float, rmin,
330  float, rinvscale)
331  void doHardenVectorAxisUnalignedPartial(UT_VoxelArrayV4 *dst,
332  const UT_VoxelArrayF *src,
333  int axis,
334  const GEO_PrimVolumeXform &dst_xform,
335  const GEO_PrimVolumeXform &src_xform,
337  float rmin, float rinvscale,
338  const UT_JobInfo &info) const;
339 
341  dst->numTiles() > 1,
342  doHardenVDB,
343  UT_VoxelArrayF *, dst,
344  const GEO_PrimVDB *, src,
345  const GEO_PrimVolumeXform &, xform,
346  GU_PrimVolumeCacheRamp *, ramp,
347  float, rmin,
348  float, rinvscale)
349  void doHardenVDBPartial(UT_VoxelArrayF *dst,
350  const GEO_PrimVDB *src,
351  const GEO_PrimVolumeXform &xform,
353  float rmin, float rinvscale,
354  const UT_JobInfo &info) const;
356  dst->numTiles() > 1,
357  doHardenVectorVDB,
358  UT_VoxelArrayV4 *, dst,
359  const GEO_PrimVDB *, src,
360  const GEO_PrimVolumeXform &, xform,
361  GU_PrimVolumeCacheRamp *, ramp,
362  float, rmin,
363  float, rinvscale)
364  void doHardenVectorVDBPartial(UT_VoxelArrayV4 *dst,
365  const GEO_PrimVDB *src,
366  const GEO_PrimVolumeXform &xform,
368  float rmin, float rinvscale,
369  const UT_JobInfo &info) const;
371  dst->numTiles() > 1,
372  doHardenVectorAxisVDB,
373  UT_VoxelArrayV4 *, dst,
374  const GEO_PrimVDB *, src,
375  int, axis,
376  const GEO_PrimVolumeXform &, xform,
377  GU_PrimVolumeCacheRamp *, ramp,
378  float, rmin,
379  float, rinvscale)
380  void doHardenVectorAxisVDBPartial(UT_VoxelArrayV4 *dst,
381  const GEO_PrimVDB *src,
382  int axis,
383  const GEO_PrimVolumeXform &xform,
385  float rmin, float rinvscale,
386  const UT_JobInfo &info) const;
388  dst->numTiles() > 1,
389  doHardenVectorVectorVDB,
390  UT_VoxelArrayV4 *, dst,
391  const GEO_PrimVDB *, src,
392  const GEO_PrimVolumeXform &, xform,
393  GU_PrimVolumeCacheRamp *, ramp,
394  float, rmin,
395  float, rinvscale)
396  void doHardenVectorVectorVDBPartial(UT_VoxelArrayV4 *dst,
397  const GEO_PrimVDB *src,
398  const GEO_PrimVolumeXform &xform,
400  float rmin, float rinvscale,
401  const UT_JobInfo &info) const;
402 
404  dst->numTiles() > 1,
405  applyAmbientLight,
406  UT_VoxelArrayV4 *, dst,
407  const UT_Vector4, cd)
408  void applyAmbientLightPartial(UT_VoxelArrayV4 *dst,
409  const UT_Vector4 &cd,
410  const UT_JobInfo &info) const;
411 
412  bool hasEmission() const;
413  float getEmissionScale() const { return myEmissionScale; }
414  float getShadowScale() const { return myShadowScale; }
415 
416 protected:
417  float myDensityMin, myDensityInvRange;
421 
422 
423  float myDiffuseMin, myDiffuseInvRange;
424  const GEO_Primitive *myDiffuseField[3];
426 
428  float myEmissionMin, myEmissionInvRange;
431 
432 
433  float myEmissionCdMin, myEmissionCdInvRange;
434  const GEO_Primitive *myEmissionCdField[3];
436 
441 };
442 
444 {
445 public:
446  GU_PrimVolumeCache(void);
447  virtual ~GU_PrimVolumeCache(void);
448 
449  // Build the cache.
450  int refresh(const GEO_Primitive *parent_prim,
451  const GU_PrimVolumeCacheParms &parms);
452 
453  // Get the cached data.
454  UT_VoxelArrayV4 *getShadedVoxels(bool *reduced=nullptr) const
455  {
456  if(reduced)
457  *reduced = myVolumeReduced;
458  return myVoxels;
459  }
460  SYS_DEPRECATED_HDK(13.0)
461  GU_PrimVolumeTexture *getTexture() const { return myTexture; }
462  SYS_DEPRECATED_HDK(13.0)
463  void setTexture(GU_PrimVolumeTexture *tex)
464  { myTexture = tex; }
465 
466  GU_ConstDetailHandle getIsoSurface() const { return myIsoSurf; }
467 
468  UT_Vector3 getIsoCd() const { return myIsoCd; }
469 
470  /// The cached resolution
471  UT_Vector3I getRes() const { return myCacheRes; }
472 
474  { return myVolumeXform; }
475 
476  int64 getMemoryUsage(bool inclusive) const
477  {
478  int64 mem = inclusive ? sizeof(*this) : 0;
479  if (myVoxels)
480  mem += myVoxels->getMemoryUsage(true);
481  mem += myLightList.getMemoryUsage(true);
482  if (myTexture)
483  mem += myTexture->getMemoryUsage(true);
484  mem += myIsoSurf.getMemoryUsage(false);
485  return mem;
486  }
487 
488 protected:
489  void lightVoxelsFromLight(const GU_PrimVolumeCacheSampler &sampler,
490  const GU_PrimVolumeCacheLight &light,
491  const UT_Vector3 &cd,
492  float shadowdensity);
493 
494  void rainbowVoxels(const GU_PrimVolumeCacheSampler &sampler);
495 
496  THREADED_METHOD3(GU_PrimVolumeCache, myVoxels->numTiles() > 1,
497  computeAlphaVoxels,
499  float, lightdensity,
500  bool, premultiply)
501  void computeAlphaVoxelsPartial(
503  float lightdensity,
504  bool premultiply,
505  const UT_JobInfo &info);
506 
507  /// Maximum per-axis resolution to do the self shadowing calculations
508  /// at.
509  int getMaxRes(const GEO_Primitive *volume,
510  const GU_PrimVolumeCacheParms &parms,
511  int axis) const;
512 
513  /// Used to convert to and from our *cached* indices, not the
514  /// actual primitive indices that may be a different resolution
515  bool indexToPos(int x, int y, int z, UT_Vector3 &pos) const;
516  bool posToIndex(UT_Vector3 pos, int &x, int &y, int &z) const;
517 
520  SYS_DEPRECATED_HDK(13.0)
522  GU_DetailHandle myIsoSurf;
523  float myOldLOD;
524  UT_Vector3 myIsoCd;
525 
526  UT_Vector3I myCacheRes;
527  GEO_PrimVolumeXform myVolumeXform;
528  bool myVolumeReduced;
529 
530  // Ignore these
531  UT_Matrix4 myCacheXform;
532  UT_Matrix4 myCacheIXform;
533 
534  const UT_VoxelArrayV4 *myCacheVolume;
535 };
536 
538 {
539 public:
541  : myMaxResW(0), myMaxResH(0), myMaxResD(0)
542  , myMax2DRes(0)
543  , myIsoPoints(false)
544  , myPreMultiply(true)
545  , myCachedFlag(true)
546  {}
547  virtual ~GU_PrimVolumeCacheParms(void) {}
548 
550  { myLightList = lightlist; }
552  { return myLightList; }
553 
554  void setMaxResolution(int w, int h, int d)
555  { myMaxResW = w; myMaxResH = h; myMaxResD = d; }
556  void getMaxResolution(int &w, int &h, int &d) const
557  { w = myMaxResW; h = myMaxResH; d = myMaxResD; }
558 
559  void setMax2DRes(int s)
560  { myMax2DRes = s; }
561  int getMax2DRes() const
562  { return myMax2DRes; }
563 
564  void setIsoPoints(bool iso_pts) { myIsoPoints = iso_pts; }
565  bool isIsoPoints() const { return myIsoPoints; }
566 
567  void setPreMultiply(bool premultiply) { myPreMultiply = premultiply; }
568  bool getPreMultiply() const { return myPreMultiply; }
569 
570  void setCached(bool b) const { myCachedFlag = b; }
571  bool isCached() const { return myCachedFlag; }
572 
573 private:
575  int myMaxResW;
576  int myMaxResH;
577  int myMaxResD;
578  int myMax2DRes;
579  bool myIsoPoints;
580  bool myPreMultiply;
581  mutable bool myCachedFlag;
582 };
583 
585 
586 #endif
587 
GLdouble s
Definition: glew.h:1390
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
GLenum src
Definition: glew.h:2410
#define THREADED_METHOD6_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3, PARMTYPE4, PARMNAME4, PARMTYPE5, PARMNAME5, PARMTYPE6, PARMNAME6)
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:643
const UT_Vector3 & getOrg() const
#define SYS_DEPRECATED_PUSH_DISABLE()
void setCd(const UT_Vector3 &cd)
const GEO_Primitive * myEmissionField
#define SYS_DEPRECATED_POP_DISABLE()
GLuint const GLfloat * val
Definition: glew.h:2794
void getMaxResolution(int &w, int &h, int &d) const
void setDir(const UT_Vector3 &dir)
GLboolean GLboolean GLboolean GLboolean a
Definition: glew.h:9477
void setLights(UT_Array< GU_PrimVolumeCacheLight > &lightlist)
void setShadowIntensity(float shadow)
void setPreMultiply(bool premultiply)
void setOrg(const UT_Vector3 &org)
GU_PrimVolumeCacheRamp * myEmissionCdRamp
GLdouble l
Definition: glew.h:9122
GLdouble angle
Definition: glew.h:9135
GU_PrimVolumeCacheRamp * myEmissionRamp
GU_ConstDetailHandle getIsoSurface() const
#define THREADED_METHOD3(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3)
UT_VoxelArrayReadHandleF myEmissionHandle
GLdouble GLdouble z
Definition: glew.h:1559
UT_VoxelArrayV4 * getShadedVoxels(bool *reduced=nullptr) const
long long int64
Definition: SYS_Types.h:111
UT_Vector4T< float > UT_Vector4
const UT_Vector3 & getCd() const
GLint GLint GLint GLint GLint x
Definition: glew.h:1252
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1252
dummy_int isinf(...)
Definition: format.h:276
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)
GLuint sampler
Definition: glew.h:3603
void setConeDelta(float delta)
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1890
void
Definition: png.h:1083
GLenum GLenum dst
Definition: glew.h:2410
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
GLfloat GLfloat GLfloat GLfloat h
Definition: glew.h:8011
#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
GLdouble GLdouble GLdouble b
Definition: glew.h:9122
UT_Vector3 getIsoCd() const
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])
UT_VoxelArrayV4 * myVoxels
UT_VoxelArrayReadHandleV4 myDiffuseHandle
GU_PrimVolumeCacheRamp * myDiffuseRamp
#define const
Definition: zconf.h:214
void setCached(bool b) const
virtual ~GU_PrimVolumeCacheParms(void)
UT_Vector3I getRes() const
The cached resolution.
UT_VoxelArrayReadHandleF myDensityHandle
UT_VoxelArrayReadHandleV4 myEmissionCdHandle
GEO_PrimVolumeXform getSpaceTransform() const
int64 getMemoryUsage(bool inclusive) const
const UT_Vector3 & getDir() const
void setConeAngle(float angle)