37 #ifndef IMPLICITFIELD_H 38 #define IMPLICITFIELD_H 46 #define IMPLICIT_VER 7 102 for (
int i = 0; i < neval; ++i)
105 result += resultstride;
126 for (
int i = 0; i < neval; ++i)
129 result += resultstride;
235 for (
int i = 0; i < neval; ++i)
237 *result =
Eval(*p++);
238 result += resultstride;
290 for (
int i = 0; i < neval; ++i)
343 virtual void Split(std::vector<ImplicitField*>& children)
383 for (
int i = 0; i < neval; ++i)
413 for (
int i = 0; i < 6; i++)
499 *motioncorners = NULL;
512 #define FIELDCREATE \ 513 extern "C" const PRMANEXPORT int ImplicitFieldVersion = IMPLICIT_VER; \ 514 extern "C" PRMANEXPORT ImplicitField* ImplicitFieldNew( \ 515 int nfloat, const float* float0, const float* float1, \ 516 int nstring, const RtString* string) 518 #define FIELDCREATE_ARGUSED \ 519 PIXAR_ARGUSED(nfloat); \ 520 PIXAR_ARGUSED(float0); \ 521 PIXAR_ARGUSED(float1); \ 522 PIXAR_ARGUSED(nstring); \ 523 PIXAR_ARGUSED(string); virtual void EvalMultiple(int neval, float *result, int resultstride, const RtPoint *p)
Calculates the neval field values at point p, in object coordinates, at shutter open time...
Definition: ImplicitField.h:229
virtual void GetVertexValue(float *result, const RtPoint p)=0
Stores in result the value of the named vertex variable associated with the call to CreateVertexValue...
virtual void MotionMultipleFiltered(int neval, RtPoint *result, const RtPoint *p, const RtPoint *dPdu, const RtPoint *dPdv, const RtPoint *dPdw)
Stores into result the filtered motion vectors representing the movement of the neval p values per un...
Definition: ImplicitField.h:391
virtual void GradientEval(RtPoint result, const RtPoint p)=0
Stores the field gradient at point p, in object coordinates calculated at shutter open time...
virtual void Motion(RtPoint result, const RtPoint p)
Stores into result how much the point p moves per unit time (i.e.
Definition: ImplicitField.h:352
ImplicitVertexValue()
Definition: ImplicitField.h:56
virtual void MotionFiltered(RtPoint result, const RtPoint p, const RtPoint dPdu, const RtPoint dPdv, const RtPoint dPdw)
Stores into result how much the point p moves per unit time (i.e.
Definition: ImplicitField.h:365
virtual void GradientEvalMultipleFiltered(int neval, RtPoint *result, const RtPoint *p, const RtPoint *dPdu, const RtPoint *dPdv, const RtPoint *dPdw)
Calculates the filtered field gradients at points p, in object coordinates calculated at shutter open...
Definition: ImplicitField.h:299
virtual void VolumeCompleted(const RtVolumeHandle h)
VolumeCompleted is a courtesy callback, hinting that PRMan has finished processing all points inside ...
Definition: ImplicitField.h:432
ImplicitField()
Definition: ImplicitField.h:202
virtual void GetVertexValueMultiple(int neval, float *result, int resultstride, const RtPoint *p)
Stores in result the values of the named vertex variable associated with the call to CreateVertexValu...
Definition: ImplicitField.h:96
float RtPoint[3]
Definition: ri.h:58
virtual void HullCornersMotion(RtPoint *corners, int ncorners, RtPoint **motioncorners, int *nmotioncorners)
Given corners of a shutter open convex hull, this routine must modify them to take into account any m...
Definition: ImplicitField.h:490
RtBound bbox
The bbox field must be filled in during initialization with a bounding box outside which the field va...
Definition: ImplicitField.h:194
virtual ~ImplicitVertexValue()
Definition: ImplicitField.h:57
virtual void GetVertexValueMultipleFiltered(int neval, float *result, int resultstride, const RtPoint *p, const RtPoint *dPdu, const RtPoint *dPdv, const RtPoint *dPdw)
Stores in result the filtered values of the named vertex variable associated with the call to CreateV...
Definition: ImplicitField.h:117
virtual float Eval(const RtPoint p)=0
Returns the field value at point p, in object coordinates, at shutter open time.
float RtBound[6]
Definition: ri.h:64
virtual void Range(RtInterval result, const RtPoint corners[8], const RtVolumeHandle h)
Stores into result the bounds of the field function values inside the region of object space with the...
Definition: ImplicitField.h:323
virtual ImplicitVertexValue * CreateVertexValue(const RtUString name, int nvalue)
CreateVertexValue informs the plugin of a vertex variable declaration, asking that the plugin provide...
Definition: ImplicitField.h:447
virtual void GradientEvalMultiple(int neval, RtPoint *result, const RtPoint *p)
Calculates the field gradients at points p, in object coordinates calculated at shutter open time...
Definition: ImplicitField.h:285
virtual void GradientEvalFiltered(RtPoint result, const RtPoint p, const RtPoint dPdu, const RtPoint dPdv, const RtPoint dPdw)
Stores the field gradient at point p, in object coordinates calculated at shutter open time...
Definition: ImplicitField.h:268
virtual void GetVertexValueMultipleTemporalFiltered(int neval, float *result, int resultstride, const RtPoint *p, const RtPoint *dPdu, const RtPoint *dPdv, const RtPoint *dPdw, const float *time)
Stores in result the time-dependent value of the named vertex variable associated with the call to Cr...
Definition: ImplicitField.h:161
virtual void MotionMultiple(int neval, RtPoint *result, const RtPoint *p)
Stores into result how much the neval points p move per unit time (i.e.
Definition: ImplicitField.h:381
virtual float MinimumVoxelSize(const RtPoint corners[8])
This callback allows the plugin to hint at the minimum size of a voxel in object space as a way of av...
Definition: ImplicitField.h:461
virtual float EvalFiltered(const RtPoint p, const RtPoint dPdu, const RtPoint dPdv, const RtPoint dPdw)
Returns the filtered field value over the region of space in object coordinates delineated by point p...
Definition: ImplicitField.h:212
Definition: ImplicitField.h:48
virtual void GetVertexValueMultipleTemporal(int neval, float *result, int resultstride, const RtPoint *p, const float *time)
Stores in result the time-dependent values of the named vertex variable associated with the call to C...
Definition: ImplicitField.h:141
virtual bool ShouldSplit()
Returns true if the DSO requires splitting into children DSOs.
Definition: ImplicitField.h:336
virtual void BoxMotion(RtBound result, const RtBound b)
Given a shutter open bounding box b, this routine must compute a corresponding bounding box taking in...
Definition: ImplicitField.h:411
float RtInterval[2]
Definition: ri.h:65
virtual void GetVertexValueFiltered(float *result, const RtPoint p, const RtPoint dPdu, const RtPoint dPdv, const RtPoint dPdw)
Stores in result the filtered value of the named vertex variable associated with the call to CreateVe...
Definition: ImplicitField.h:74
virtual void EvalMultipleFiltered(int neval, float *result, int resultstride, const RtPoint *p, const RtPoint *dPdu, const RtPoint *dPdv, const RtPoint *dPdw)
Calculates the neval filtered field values at point p, in object coordinates, at shutter open time...
Definition: ImplicitField.h:246
virtual size_t MemoryUsage()
Returns the memory consumption of the plugin.
Definition: ImplicitField.h:506
RtPointer RtVolumeHandle
Definition: ri.h:82
virtual void HullCorners(RtPoint **corners, int *ncorners)
Return corners of a convex hull outside which the field value is zero.
Definition: ImplicitField.h:474
Definition: ImplicitField.h:187
pxrcore::UString RtUString
Definition: RiTypesHelper.h:682
virtual size_t MemoryUsage()
Returns the memory consumption of the vertex value.
Definition: ImplicitField.h:181
virtual ~ImplicitField()
Definition: ImplicitField.h:203
#define PIXAR_ARGUSED(x)
Definition: prmanapi.h:170
virtual void Split(std::vector< ImplicitField *> &children)
Returns a list of children DSOs.
Definition: ImplicitField.h:343