11 #ifndef __GU_PrimVolumeCache__
12 #define __GU_PrimVolumeCache__
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),
50 for(
int i = 0; i < 8; i++)
68 if(myIsCone != l.
myIsCone || (myIsCone &&
74 return (myOrg == l.
myOrg) &&
81 (!myIsEnvironment || (myEnvMap == l.
myEnvMap &&
116 float getDistance(
const UT_Vector3 &pos)
const;
121 myHasAttenuation =
true;
122 for(
int i=0; i<8; i++)
126 float getAttenuation(
const UT_Vector3F &uvw)
const;
138 float myAttenuationCoeffs[3];
163 virtual
int64 getMemoryUsage(
bool inclusive)
const = 0;
169 GU_PrimVolumeCacheRamp(
UT_Ramp *ramp,
bool periodic);
170 ~GU_PrimVolumeCacheRamp();
172 void eval(
float &rval,
float val)
const;
188 const char *attribname)
const;
193 const char *attribname,
194 int collateidx)
const;
195 void selectVolumesFromAttribute(
198 const char *attribname,
199 int collateidx)
const;
200 void getRangeFromAttribute(
202 const char *attribname,
203 float &rmin,
float &rscale)
const;
204 float getFloatFromAttribute(
206 const char *attribname,
209 float getDensity(
int x,
int y,
int z)
const;
210 UT_Vector4 getDiffuse(
int x,
int y,
int z)
const;
228 float rmin,
float rinvscale);
233 float rmin,
float rinvscale);
238 float rmin,
float rinvscale);
243 float rmin,
float rinvscale);
260 float rmin,
float rinvscale,
277 float rmin,
float rinvscale,
281 doHardenVectorAligned,
294 float rmin,
float rinvscale,
298 doHardenVectorUnaligned,
311 float rmin,
float rinvscale,
315 doHardenVectorAxisAligned,
330 float rmin,
float rinvscale,
334 doHardenVectorAxisUnaligned,
349 float rmin,
float rinvscale,
365 float rmin,
float rinvscale,
380 float rmin,
float rinvscale,
384 doHardenVectorAxisVDB,
397 float rmin,
float rinvscale,
401 doHardenVectorVectorVDB,
412 float rmin,
float rinvscale,
424 bool hasEmission()
const;
469 *reduced = myVolumeReduced;
486 {
return myVolumeXform; }
490 int64 mem = inclusive ?
sizeof(*this) : 0;
492 mem += myVoxels->getMemoryUsage(
true);
493 mem += myLightList.getMemoryUsage(
true);
495 mem += myTexture->getMemoryUsage(
true);
496 mem += myIsoSurf.getMemoryUsage(
false);
504 float shadowdensity);
513 void computeAlphaVoxelsPartial(
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;
540 bool myVolumeReduced;
553 : myMaxResW(0), myMaxResH(0), myMaxResD(0)
557 , myPreMultiply(true)
563 { myLightList = lightlist; }
565 {
return myLightList; }
568 { myMaxResW =
w; myMaxResH =
h; myMaxResD = d; }
570 { w = myMaxResW; h = myMaxResH; d = myMaxResD; }
573 { myDownscale =
scale; }
575 {
return myDownscale; }
580 {
return myMax2DRes; }
600 mutable bool myCachedFlag;
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
GU_PrimVolumeCacheParms()
GLboolean GLboolean GLboolean b
#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
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
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()
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
float getConeDelta() const
void setEnvironmentMap(const RE_Texture *env)
GU_PrimVolumeCacheRamp * myEmissionRamp
const UT_Matrix3 & getOrientation() const
float getEmissionScale() const
bool hasAttenuation() const
GU_ConstDetailHandle getIsoSurface() const
#define THREADED_METHOD3(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3)
UT_VoxelArrayReadHandleF myEmissionHandle
UT_VoxelArrayV4 * getShadedVoxels(bool *reduced=nullptr) const
GLubyte GLubyte GLubyte GLubyte w
UT_Vector4T< float > UT_Vector4
const UT_Vector3 & getCd() const
GU_PrimVolumeCacheRamp * myDensityRamp
float getShadowScale() const
#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
GLdouble GLdouble GLdouble z
typedef int(WINAPI *PFNWGLRELEASEPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer
const float * getCornerAttenuation() const
HUSD_API bool eval(VtValue &val, T &ret_val)
#define SYS_DEPRECATED_HDK(__V__)
void setIsInfinite(bool isinf)
void setIsHeadlight(bool hl)
float getConeRolloff() const
#define THREADED_METHOD2_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2)
bool getPreMultiply() const
UT_Array< GU_PrimVolumeCacheLight > myLightList
GLfloat GLfloat GLfloat GLfloat h
UT_Vector3 getIsoCd() const
void setIsCone(bool cone)
Utility class for containing a color ramp.
float myAttenuationCoeffs[3]
const GEO_Primitive * myDensityField
bool operator==(const GU_PrimVolumeCacheLight &l) const
void setIsoPoints(bool iso_pts)
float * getAttenuationCoeffArray()
const GEO_Primitive * densityField() const
void setCornerAttenuation(float a[8])
UT_VoxelArrayV4 * myVoxels
UT_VoxelArrayReadHandleV4 myDiffuseHandle
float getConeAngle() const
GU_PrimVolumeCacheRamp * myDiffuseRamp
void setCached(bool b) const
UT_Vector3I getRes() const
The cached resolution.
bool isEnvironment() const
UT_VoxelArrayReadHandleF myDensityHandle
UT_VoxelArrayReadHandleV4 myEmissionCdHandle
GU_PrimVolumeCacheLight()
GEO_PrimVolumeXform getSpaceTransform() const
int64 getMemoryUsage(bool inclusive) const
const UT_Vector3 & getDir() const
void setConeAngle(float angle)
~GU_PrimVolumeCacheParms() override