47 #include "RixInterfaces.h"
53 #define RSL_PLUGIN_VERSION 7
135 int argc,
const class RslArg** argv);
265 template<
typename T>
friend class RslIter;
269 virtual RslIncrType* getIncrList(
unsigned int stride)
const = 0;
297 virtual bool IsFloat()
const = 0;
300 virtual bool IsPoint()
const = 0;
306 virtual bool IsColor()
const = 0;
315 virtual bool IsArray()
const = 0;
327 virtual unsigned int NumValues()
const = 0;
341 virtual void GetData(
float** data,
int* stride)
const = 0;
345 template<
typename T>
friend class RslIter;
349 virtual void getInfo(
float** data,
RslIncrType** incrList,
350 bool* isVarying)
const = 0;
354 virtual void getArrayInfo(
float** data,
356 bool* isVarying)
const = 0;
389 virtual const char*
GetName()
const = 0;
408 virtual float* getStructData(
int* length,
409 unsigned int* stride)
const = 0;
412 virtual const RslArg** getStructInfo(
float* data,
414 unsigned int* numMembers)
const = 0;
419 virtual void getArrayInfo(
float** data,
421 int* arrayCapacity,
bool* isVarying)
const = 0;
424 virtual void getArrayInfo(
float** data,
426 bool* isVarying)
const = 0;
451 virtual void getArrayInfo(
float **data,
453 int* arrayCapacity,
int* elemStride,
454 bool* isVarying)
const = 0;
457 virtual void getArrayInfo(
float** data,
459 int* arrayCapacity,
bool* isVarying)
const = 0;
462 virtual void getArrayInfo(
float** data,
464 bool* isVarying)
const = 0;
538 for (
int i = 0; i < argc; ++i) {
580 arg->getInfo(&m_data, &m_incrList, &m_isVarying);
581 m_dataStart = m_data;
582 m_incrListStart = m_incrList;
588 m_data((float*) data),
589 m_dataStart((float*) data),
590 m_incrList(ctx->getIncrList(0)),
591 m_incrListStart(ctx->getIncrList(0)),
611 m_data += *m_incrList;
630 m_data = m_dataStart;
631 m_incrList = m_incrListStart;
661 m_data += *m_incrList * 16;
720 arg->getArrayInfo(&m_data, &m_incrList, &m_length, &m_capacity,
721 &m_stride, &m_isVarying);
723 m_dataStart = m_data;
724 m_incrListStart = m_incrList;
730 m_data((float*) data),
731 m_dataStart((float*) data),
732 m_incrList(ctx->getIncrList(0)),
733 m_incrListStart(ctx->getIncrList(0)),
746 m_incrListStart(NULL),
758 assert(x >= 0 && x < m_length);
759 return ((T*)m_data)[x * m_stride];
767 m_data += *m_incrList;
788 m_data = (
float *)&((T*)m_dataStart)[index * m_stride];
789 m_incrList = m_incrListStart;
805 #ifndef RSL_ALLOW_ARRAY_DEREF
808 T* operator*() {
return (T*) m_data; }
843 m_data += *m_incrList * 16;
916 virtual unsigned int GetLength()
const = 0;
926 virtual void Resize(
unsigned int n) = 0;
933 virtual void Reserve(
unsigned int n) = 0;
990 float* data = arg->getStructData(&length, &stride);
991 m_members = arg->getStructInfo(data, &m_name, &m_numMembers);
995 const char*
GetName()
const {
return m_name; }
1003 assert(i >= 0 && (
unsigned int) i < m_numMembers);
1004 return m_members[i];
1009 const RslArg** m_members;
1015 unsigned int m_numMembers;
1023 m_members = arg->getStructInfo(data, &m_name, &m_numMembers);
1052 m_data = arg->getStructData(&m_length, &m_stride);
1058 assert(i >= 0 && i < m_length);
1059 return RslStruct(m_array, m_data + i * m_stride);
1076 unsigned int m_stride;