1 #ifndef RixInterfaces_h
2 #define RixInterfaces_h
127 k_RixThreadUtils = 0,
133 k_RixGlobalTokenData,
135 k_RixSessionData = 8,
139 k_RixSubdivisionSurfaceEvaluation,
151 k_RixLightingServices,
156 k_RixResourceResolver,
214 virtual void HandleXcpt(
int code,
int severity,
const char *msg) = 0;
215 virtual void HandleExitRequest(
int code) = 0;
248 virtual void Lock() = 0;
251 virtual void Unlock() = 0;
282 virtual void Error(
const char* format, ...) = 0;
285 virtual void ErrorAlways(
const char* format, ...) = 0;
288 virtual void Warning(
const char* format, ...) = 0;
294 virtual void Info(
const char* format, ...) = 0;
297 virtual void InfoAlways(
const char* format, ...) = 0;
336 virtual void WriteXml(
const char* format, ...) = 0;
340 virtual void WriteText(
const char* format, ...) = 0;
346 void WriteStat(
char const *name,
char const *desc,
int value)
349 if (desc)
WriteXml(
" description=\"%s\"", desc);
353 void WriteStat(
char const *name,
char const *desc, RtUInt64 value)
356 if (desc)
WriteXml(
" description=\"%s\"", desc);
360 void WriteStat(
char const *name,
char const *desc,
float value)
362 WriteXml(
"<float name=\"%s\"", name);
363 if (desc)
WriteXml(
" description=\"%s\"", desc);
367 void WriteStat(
char const *name,
char const *desc,
char const *value)
369 WriteXml(
"<string name=\"%s\"", name);
370 if (desc)
WriteXml(
" description=\"%s\"", desc);
371 WriteXml(
"> %s </string>\n", value);
374 void WriteTime(
char const *name,
char const *desc,
float time)
376 WriteXml(
"<timer name=\"%s\"", name);
377 if (desc)
WriteXml(
" description=\"%s\"", desc);
378 WriteXml(
"><elapsed>%f</elapsed></timer>\n", time);
405 virtual void AddTimerStat(
float* seconds,
const char* name,
406 const char* description) = 0;
427 virtual void Reset() = 0;
428 virtual const char *GetName() = 0;
429 virtual const char *GetDescription() = 0;
430 virtual void GetResults(RtUInt64 *result, Fmt *fmt) = 0;
441 const char* description) = 0;
446 typedef void (*ReporterCtx)(
void *ctx,
class RixXmlFile *);
466 virtual void AddReporterCtx(ReporterCtx func,
void *ctx) = 0;
473 virtual void AddFileLogStat(
const char *filename,
const char *path) = 0;
481 typedef void (*RixCleanupFunc)(
RixContext* context,
void* data);
544 virtual void*
Get(
const char* key) = 0;
549 virtual void Set(
const char* key,
void* data,
550 RixCleanupFunc cleanup = NULL) = 0;
554 virtual void Clear(
const char* key) = 0;
557 virtual void Lock() = 0;
560 virtual void Unlock() = 0;
581 virtual const char *
GetToken(
const char *input) = 0;
628 virtual int TextureInfo(
const RtString filename,
const char *query,
629 void *result,
int resultlen,
630 resultType *resulttype,
int *resultcount,
631 int faceindex = -1)=0;
637 RtInt firstchannel, RtInt nchannels,
638 RtFloat *s, RtFloat *t, RtFloat *result,
639 RtInt n, RtToken tokens[], RtPointer parms[])=0;
645 RtInt firstchannel, RtInt nchannels,
646 RtFloat *s0, RtFloat *t0,
647 RtFloat *s1, RtFloat *t1,
648 RtFloat *s2, RtFloat *t2,
649 RtFloat *s3, RtFloat *t3,
650 RtFloat *result, RtInt n, RtToken tokens[],
651 RtPointer parms[])=0;
657 RtInt firstchannel, RtInt nchannels,
658 RtFloat *fr, RtFloat *result,
659 RtInt n, RtToken tokens[], RtPointer parms[])=0;
665 RtInt firstchannel, RtInt nchannels,
666 RtFloat *faceId, RtFloat *fr,
668 RtInt n, RtToken tokens[],
669 RtPointer parms[])=0;
675 RtInt firstchannel, RtInt nchannels,
677 RtFloat *u, RtFloat *v,
678 RtFloat *du1, RtFloat *dv1,
679 RtFloat *du2, RtFloat *dv2,
681 RtInt n, RtToken tokens[],
682 RtPointer parms[])=0;
744 RtPointer fileHandle;
746 unsigned char *channelTypes;
812 const char *filename,
813 TxProperties &txProperties,
814 bool persistentFilename =
false) = 0;
822 TxProperties
const &txProperties,
823 TxProperties &partProperties) = 0;
828 virtual int ReleaseTexture (TxProperties
const &txProperties) = 0;
841 TxProperties
const &txProperties,
842 TxParams
const &txParams,
845 RtFloat
const *stRadius,
847 int *runFlags = NULL) = 0;
866 TxProperties
const &txProperties,
867 TxParams
const &txParams,
875 RtFloat *dresultds, RtFloat *dresultdt,
876 int *runFlags = NULL) = 0;
895 TxProperties
const &txProperties,
896 TxParams
const &txParams,
899 RtFloat
const *uWidth,
900 RtFloat
const *vWidth,
902 int *runFlags = NULL) = 0;
910 TxProperties
const &txProperties,
911 TxParams
const &txParams,
928 virtual RtFloat
Noise(RtFloat in) = 0;
929 virtual RtFloat
Noise(RtFloat2
const &in) = 0;
930 virtual RtFloat
Noise(RtFloat3
const &in) = 0;
931 virtual RtFloat
Noise(RtFloat3
const &in, RtFloat inF) = 0;
933 virtual RtFloat3 Noise3(RtFloat in) = 0;
934 virtual RtFloat3 Noise3(RtFloat2
const &in) = 0;
935 virtual RtFloat3 Noise3(RtFloat3
const &in) = 0;
936 virtual RtFloat3 Noise3(RtFloat3
const &in, RtFloat inF) = 0;
939 virtual RtFloat
PNoise(RtFloat in, RtFloat period) = 0;
940 virtual RtFloat
PNoise(RtFloat2
const &in, RtFloat2
const &period) = 0;
941 virtual RtFloat
PNoise(RtFloat3
const &in, RtFloat3
const &period) = 0;
942 virtual RtFloat
PNoise(RtFloat3
const &in, RtFloat inF,
943 RtFloat3
const &period, RtFloat periodF) = 0;
945 virtual RtFloat3 PNoise3(RtFloat in, RtFloat period) = 0;
946 virtual RtFloat3 PNoise3(RtFloat2
const &in, RtFloat2
const &period) = 0;
947 virtual RtFloat3 PNoise3(RtFloat3
const &in, RtFloat3
const &period) = 0;
948 virtual RtFloat3 PNoise3(RtFloat3
const &in, RtFloat inF,
949 RtFloat3
const &period, RtFloat periodF) = 0;
952 virtual RtFloat
CellNoise(RtFloat in) = 0;
953 virtual RtFloat
CellNoise(RtFloat2
const &in) = 0;
954 virtual RtFloat
CellNoise(RtFloat3
const &in) = 0;
955 virtual RtFloat
CellNoise(RtFloat3
const &in, RtFloat inF) = 0;
957 virtual RtFloat3 CellNoise3(RtFloat in) = 0;
958 virtual RtFloat3 CellNoise3(RtFloat2
const &in) = 0;
959 virtual RtFloat3 CellNoise3(RtFloat3
const &in) = 0;
960 virtual RtFloat3 CellNoise3(RtFloat3
const &in, RtFloat inF) = 0;
972 RtFloat
const knot[],
976 RtFloat
const knot[],
980 RtFloat3
const knot[],
999 RtConstString tospace,
1000 RtInt n, RtPoint p[], RtFloat time) = 0;
1010 RtConstString tospace,
1011 RtFloat time, RtMatrix m) = 0;
1032 virtual int AreaShadowFrV(RtInt nMaps,
const RtString mapNames[],
1033 RtFloat* filterRegions,
1034 RtInt nLightSamples,
1035 RtPoint* lightPoints,
1037 RtColor* perRayResult,
1039 RtFloat* perRayLMag,
1040 RtInt n, RtToken tokens[],
1041 RtPointer parms[]) = 0;
1044 virtual int AreaShadowPV(RtInt nMaps,
const RtString mapNames[],
1046 RtInt nLightSamples,
1047 RtPoint* lightPoints,
1049 RtColor* perRayResult,
1051 RtFloat* perRayLMag,
1052 RtInt n, RtToken tokens[],
1053 RtPointer parms[]) = 0;
1079 k_EvaluationLifetime,
1085 k_ShadeContextLifetime,
1092 virtual void *Allocate(
size_t numbytes, BlockLifetime) = 0;
1104 const char *renderer;
1105 const char *version;
1107 RtInt versionCode[4];
1116 enum t_integrationMode
1129 int pixelSamples[2];
1132 t_integrationMode integrationMode;
1138 t_displayStyle displayStyle;
1145 char const *integratorName;
1146 char const *integratorPath;
1147 class RixIntegratorEnvironment const *integratorEnv;
1185 k_siNumShadingIntents
1192 char const *raylabel;
1193 int depth, diffusedepth, speculardepth, shadowdepth, subsurfacedepth;
1194 int integratorIteration;
1195 int currentDecimation, maxDecimation;
1196 ShadingIntent shadingIntent;
1231 virtual int GetOption(
const char *name,
void *result,
int resultlen,
1232 Type *resulttype,
int *resultcount) = 0;
1234 virtual int GetAttribute(
const char *name,
void *result,
int resultlen,
1235 Type *resulttype,
int *resultcount) = 0;
1287 virtual RtPointer
ResolveSymbol(
const char *nm, SymbolGroup group) = 0;
1323 char result[],
int maxlen) = 0;
1332 virtual void EmitVector(RtVector3 v, RtColorRGB c)=0;
1333 virtual void EmitPoint(RtPoint3 p, RtColorRGB c)=0;
1334 virtual void EmitPointNormal(RtPoint3 p, RtNormal3 n, RtColorRGB c)=0;
1335 virtual void EmitLine(RtPoint3 p1, RtPoint3 p2, RtColorRGB c)=0;
1336 virtual void EmitBound(RtPoint3 pmin, RtPoint3 pmax, RtColorRGB c)=0;
1337 virtual void Clear()=0;
1338 virtual void Flush()=0;
1347 PRMANAPI
class RixContext *RixGetContextViaRMANTREE(
const char*rmantree=0L,
1348 bool printerror=
true);
1351 typedef RtInt RixLPEToken;
1363 bool reflect,
bool user,
1364 unsigned char lobeId,
char const *name) = 0;
1370 virtual int GetNumPotentialSpecularLobes() = 0;
1371 virtual int GetNumPotentialUserLobes() = 0;
1372 virtual RixLPEToken StringToToken(
char const *str) = 0;
1379 class RixShadingContext;
1384 typedef void (*RixLPECallback)(
void *userData,
1385 RixLPEState *lpeState,
1386 RixShadingContext
const *sCtx,
1388 RtColorRGB
const &thruput,
1389 RtColorRGB
const *lgtTrans,
1390 bool firstContribution);
1399 virtual int LookupLPE(
char const *lpeExpr) = 0;
1407 virtual bool MatchesLPE(
int customLpe,
1408 RixLPEState *lpeState,
1409 RtColorRGB &thruput) = 0;
1419 virtual void RegisterScatterCallback(RixLPECallback callbackFunc,
1420 void *userData = NULL) = 0;
1427 virtual void InvokeScatterCallbacks(RixLPEState *lpeState,
1428 RixShadingContext
const *sCtx,
1430 RtColorRGB
const &thruput,
1431 RtColorRGB
const *lgtTrans,
1432 bool firstContribution) = 0;
1438 #endif // RIX_INTERFACE_H