#if !defined(_BETTLEJUICE_H_)
#define _BETTLEJUICE_H_


#if defined(_USE_BETTLEJUICE_)

extern HINSTANCE hinstLib;


typedef	int   FRtBoolean;
typedef	int   FRtInt;
typedef	short int FRtSInt;
typedef	unsigned short int FRtUSInt;
typedef unsigned int FRtUInt;
typedef unsigned __int64 FRtUDInt;
typedef  __int64 FRtDInt;
typedef unsigned char FRtUChar;
typedef	float FRtFloat;

typedef	char* FRtToken;

typedef	FRtFloat FRtColor[3];
typedef	FRtFloat FRtAColor[4];
typedef	FRtFloat FRtPoint[3];
typedef	FRtFloat FRtVector[3];
typedef	FRtFloat FRtNormal[3];
typedef FRtFloat FRtQuat[4];
typedef	FRtFloat FRtMatrix[4][4];
typedef	FRtFloat FRtMatrixS[4][3];
typedef	FRtFloat FRtBasis[4][4];
typedef	FRtFloat FRtBound[6];
typedef	char*    FRtString;

typedef	void* FRtPointer;
typedef	void  FRtVoid;

typedef	FRtFloat(*FRtFilterFunc)(FRtFloat, FRtFloat, FRtFloat, FRtFloat);
typedef	FRtFloat(*FRtFloatFunc)();
typedef	FRtVoid (*FRtFunc)();
typedef	FRtVoid (*FRtErrorFunc)(FRtInt code, FRtInt severity, const char *message);
typedef	FRtErrorFunc FRtErrorHandler;

typedef	FRtVoid	(*FRtProcSubdivFunc)(FRtPointer, FRtFloat);
typedef	FRtVoid	(*FRtProcFreeFunc)(FRtPointer);
typedef	FRtVoid	(*FRtArchiveCallback)(FRtToken, char *, ...);

typedef	FRtPointer FRtGeomHandle;
typedef	FRtPointer FRtObjectHandle;
typedef	FRtPointer FRtLightHandle;
typedef	FRtPointer FRtContextHandle;
typedef	FRtPointer FRtShaderHandle;

#define	FRI_FALSE		0
#define	FRI_TRUE		1
#define	FRI_NULL		((FRtToken)0)

#define	FRI_PARAMETERLIST FRtInt count, FRtToken tokens[], FRtPointer values[]


// Render dependend options

typedef FRtVoid (*__FRiOption) (const char * name, ...);
typedef FRtVoid (*__FRiOptionV)(const char * name, FRI_PARAMETERLIST);

// World

typedef FRtVoid (*__FRiBegin)(FRtToken name);
typedef (*__FRiEnd)();
typedef FRtVoid (*__FRiFrameBegin)(FRtInt frame, FRtInt field, FRtInt fps);
typedef FRtVoid (*__FRiFrameEnd)();
typedef FRtVoid (*__FRiWorldBegin)();
typedef FRtVoid (*__FRiWorldEnd)();


// Projection/Display/Framebuffer

typedef FRtVoid (*__FRiFormat)(FRtInt xresolution, FRtInt yresolution, FRtFloat pixelaspectratio);
typedef FRtVoid (*__FRiFrameAspectRatio)(FRtFloat frameratio);
typedef FRtVoid (*__FRiProjection)(const char * name, ...);
typedef FRtVoid (*__FRiProjectionV)(const char * name, FRI_PARAMETERLIST);
typedef FRtVoid (*__FRiScreenWindow)(FRtFloat left, FRtFloat right, FRtFloat bottom, FRtFloat top);
typedef FRtVoid (*__FRiCropWindow)(FRtFloat left, FRtFloat right, FRtFloat top, FRtFloat bottom);
typedef FRtVoid (*__FRiClipping) (FRtFloat hither, FRtFloat yon);
typedef FRtVoid (*__FRiClippingPlane)(FRtFloat x, FRtFloat y, FRtFloat z, FRtFloat nx, FRtFloat ny, FRtFloat nz);
typedef FRtVoid (*__FRiDepthOfField)(FRtFloat fstop, FRtFloat focallength, FRtFloat focaldistance);
typedef FRtVoid (*__FRiShutter)(FRtFloat min, FRtFloat max);
typedef FRtVoid (*__FRiDisplay)(const char *name, FRtToken type, FRtToken mode, ...);
typedef FRtVoid (*__FRiDisplayV)(const char *name, FRtToken type, FRtToken mode, FRI_PARAMETERLIST);



// Exposure
typedef FRtVoid (*__FRiExposure)(FRtFloat gain, FRtFloat gamma);
typedef FRtVoid (*__FRiAAExposure)(FRtFloat gain, FRtFloat gamma);


// Quantize
typedef FRtVoid (*__FRiQuantize)(FRtToken type, FRtInt one, FRtInt min, FRtInt max, FRtFloat ditheramplitude);
typedef FRtVoid (*__FRiDither)(FRtToken type, FRtFloat ditheramplitude);



typedef FRtVoid  (*__FRiPixelSamples)(FRtFloat x_samples, FRtFloat y_samples);
typedef FRtVoid  (*__FRiPixelVariance)(FRtFloat variance);
typedef FRtVoid  (*__FRiPixelFilter)(FRtFilterFunc function, FRtFloat xwidth, FRtFloat ywidth);
typedef FRtFloat (*__FRiGaussianFilter)(FRtFloat x, FRtFloat y, FRtFloat xwidth, FRtFloat ywidth);
typedef FRtFloat (*__FRiBoxFilter)(FRtFloat x, FRtFloat y, FRtFloat xwidth, FRtFloat ywidth);
typedef FRtFloat (*__FRiAreaFilter)(FRtFloat x, FRtFloat y, FRtFloat xwidth, FRtFloat ywidth);
typedef FRtFloat (*__FRiTriangleFilter)(FRtFloat x, FRtFloat y, FRtFloat xwidth, FRtFloat ywidth);
typedef FRtFloat (*__FRiCatmullRomFilter)(FRtFloat x, FRtFloat y, FRtFloat xwidth, FRtFloat ywidth);
typedef FRtFloat (*__FRiSincFilter)(FRtFloat x, FRtFloat y, FRtFloat xwidth, FRtFloat ywidth);
typedef FRtFloat (*__FRiDiskFilter)(FRtFloat x, FRtFloat y, FRtFloat xwidth, FRtFloat ywidth);
typedef FRtFloat (*__FRiBesselFilter)(FRtFloat x, FRtFloat y, FRtFloat xwidth, FRtFloat ywidth);
 

// Render Context
typedef FRtContextHandle (*__FRiGetContext)();
typedef FRtVoid (*__FRiContext)(FRtContextHandle);


// Transformation
typedef FRtVoid   (*__FRiIdentity)();
typedef FRtVoid   (*__FRiTransform)(FRtMatrix transform);
typedef FRtVoid   (*__FRiConcatTransform)(FRtMatrix transform);
typedef FRtVoid   (*__FRiPerspective)(FRtFloat fov);
typedef FRtVoid   (*__FRiTranslate)(FRtFloat dx, FRtFloat dy, FRtFloat dz);
typedef FRtVoid   (*__FRiRotate)(FRtFloat angle, FRtFloat dx, FRtFloat dy, FRtFloat dz);
typedef FRtVoid   (*__FRiRotateQuat)(FRtQuat quat);
typedef FRtVoid   (*__FRiScale)(FRtFloat sx, FRtFloat sy, FRtFloat sz);
typedef FRtVoid   (*__FRiTransformBegin)();
typedef FRtVoid   (*__FRiTransformEnd)();
typedef FRtVoid   (*__FRiCoordinateSystem)(FRtToken space);
typedef FRtVoid   (*__FRiCoordSysTransform)(FRtToken space);
typedef FRtPoint *(*__FRiTransformPoints)(FRtToken fromspace, FRtToken tospace, FRtInt n, FRtPoint points[]);

typedef FRtVoid (*__FRiOrientation)(FRtToken orientation);
typedef FRtVoid (*__FRiReverseOrientation)();


// Lights
typedef FRtLightHandle	(*__FRiLightSource) (const char *name, ...);
typedef FRtLightHandle	(*__FRiLightSourceV)(const char *name, FRI_PARAMETERLIST);
typedef FRtVoid (*__FRiIlluminate) (FRtLightHandle light, FRtBoolean onoff);
typedef FRtVoid (*__FRiLightSetParams) (FRtLightHandle light, ...);
typedef FRtVoid (*__FRiLightSetParamsV)(FRtLightHandle light, FRI_PARAMETERLIST);

// Geometry
typedef FRtGeomHandle (*__FRiPolygon)(FRtInt nvertices, ...);
typedef FRtGeomHandle (*__FRiPolygonV)(FRtInt nvertices, FRI_PARAMETERLIST);
typedef FRtGeomHandle (*__FRiPointsPolygons)( FRtInt npolys, FRtInt nverts[], FRtInt verts[], ...);
typedef FRtGeomHandle (*__FRiPointsPolygonsV)( FRtInt npolys, FRtInt nverts[], FRtInt verts[], FRI_PARAMETERLIST);


// special FAST methods
typedef FRtGeomHandle (*__FRiPointsTriangles) (FRtInt nfaces, FRtInt nverts, FRtInt *faces, ...);
typedef FRtGeomHandle (*__FRiPointsTrianglesV)(FRtInt nfaces, FRtInt nverts, FRtInt *faces, FRI_PARAMETERLIST);
typedef FRtBoolean    (*__FRiReplacePointsTrianglesV)(FRtGeomHandle handle, FRtInt nfaces, FRtInt nverts, FRtInt *faces, FRI_PARAMETERLIST);


// primitives
typedef FRtGeomHandle (*__FRiSphere) (FRtFloat radius, FRtFloat zmin, FRtFloat zmax, FRtFloat tmax, ...);
typedef FRtGeomHandle (*__FRiSphereV)(FRtFloat radius, FRtFloat zmin, FRtFloat zmax, FRtFloat tmax, FRI_PARAMETERLIST);


// geometry shader support
typedef FRtGeomHandle (*__FRiGeometry)(const char *name, ...);
typedef FRtGeomHandle (*__FRiGeometryV)(const char *name, FRI_PARAMETERLIST);


// 1-side, 2-side or flip options
typedef FRtVoid (*__FRiSides)(FRtInt sides);

// mapping channels extension
typedef FRtBoolean (*__FRiMapChannel)(FRtGeomHandle handle, FRtInt channel, FRtInt nfaces, FRtInt *faces, FRtPoint *verts, FRtInt tan_axis);
typedef FRtBoolean (*__FRiUserVertChannel)(FRtGeomHandle handle, FRtInt channel, FRtUInt data_size, FRtVoid *data, FRtInt *faces);
typedef FRtBoolean (*__FRiUserFaceChannel)(FRtGeomHandle handle, FRtInt channel, FRtUInt data_size, FRtVoid *data);


// Attributes
typedef FRtVoid (*__FRiAttributeBegin)();
typedef FRtVoid (*__FRiAttributeEnd)();
typedef FRtVoid (*__FRiAttribute) (const char *name, ...);
typedef FRtVoid (*__FRiAttributeV)(const char *name, FRI_PARAMETERLIST);
typedef FRtBoolean (*__FRiSelectForBaking)(FRtGeomHandle handle, FRtBoolean onOff, FRtInt bakeMapChannel);


// Instancing
typedef FRtObjectHandle (*__FRiObjectBegin)(void);
typedef FRtVoid         (*__FRiObjectEnd)(void);
typedef FRtGeomHandle   (*__FRiObjectInstance)(FRtObjectHandle handle);
typedef FRtVoid         (*__FRiObjectDelete)(FRtObjectHandle handle);


// Motion Blur
typedef FRtBoolean (*__FRiMotionBegin)(FRtInt n, ...);
typedef FRtBoolean (*__FRiMotionBeginV)(FRtInt n, FRtFloat times[]);
typedef FRtBoolean (*__FRiMotionEnd)();
// which==0: object, which==1: light, which==2: camera (handle==NULL)
typedef FRtBoolean (*__FRiSetMotionSample)(FRtInt which, FRtGeomHandle handle, FRtInt samples_max, FRtInt sample, FRtFloat time, ...);
typedef FRtBoolean (*__FRiSetMotionSampleV)(FRtInt which, FRtGeomHandle handle, FRtInt samples_max, FRtInt sample, FRtFloat time, FRI_PARAMETERLIST);


// User Data
typedef FRtInt (*__FRiObjectUserData)(FRtGeomHandle handle, FRtToken token, FRtUInt data_size, FRtVoid *data);



// Color 
typedef FRtVoid	(*__FRiColor)  (FRtColor Cq);
typedef FRtVoid	(*__FRiOpacity)(FRtColor Os);


// surface and shaders
typedef FRtShaderHandle (*__FRiSurface) (const char *name, ...);
typedef FRtShaderHandle (*__FRiSurfaceV)(const char *name, FRI_PARAMETERLIST);

typedef FRtShaderHandle (*__FRiSurfaceBegin)();
typedef FRtShaderHandle (*__FRiSurfaceEnd)();

typedef FRtVoid         (*__FRiSurfaceInstance)(FRtShaderHandle handle);

typedef FRtShaderHandle (*__FRiShader)(const char *type, const char *name, ...);
typedef FRtShaderHandle (*__FRiShaderV)(const char *type, const char *name, FRI_PARAMETERLIST);
typedef FRtVoid         (*__FRiShaderInstance)(FRtShaderHandle handle, FRtInt assign_to);
typedef FRtBoolean      (*__FRiShaderSet)(FRtShaderHandle handle, ...);
typedef FRtBoolean      (*__FRiShaderSetV)(FRtShaderHandle handle, FRI_PARAMETERLIST);
typedef FRtVoid         (*__FRiShaderDelete)(FRtShaderHandle handle);
typedef FRtInt          (*__FRiShaderOutputIdx)(FRtShaderHandle handle, const char *pName, FRtInt *out_type);
typedef FRtBoolean      (*__FRiAssignSurfaceShader)(FRtGeomHandle geom, FRtShaderHandle shader, FRtInt assign_to);
typedef FRtShaderHandle (*__FRiGetSurfaceShader)(FRtGeomHandle geom, FRtInt assign_to);


// displacement shader
typedef FRtShaderHandle (*__FRiDisplacement) (const char *name, ...);
typedef FRtShaderHandle (*__FRiDisplacementV)(const char *name, FRI_PARAMETERLIST);


// volume shader (atmospherics)
typedef FRtShaderHandle (*__FRiAtmosphere) (const char *name, ...);
typedef FRtShaderHandle (*__FRiAtmosphereV)(const char *name, FRI_PARAMETERLIST);
typedef FRtShaderHandle (*__FRiInterior)   (const char *name, ...);
typedef FRtShaderHandle (*__FRiInteriorV)  (const char *name, FRI_PARAMETERLIST);
typedef FRtShaderHandle (*__FRiExterior)   (const char *name, ...);
typedef FRtShaderHandle (*__FRiExteriorV)  (const char *name, FRI_PARAMETERLIST);


// effects
typedef FRtShaderHandle (*__FRiEffect)(const char *name, ...);
typedef FRtShaderHandle (*__FRiEffectV)(const char *name, FRI_PARAMETERLIST);



// render elements
typedef FRtShaderHandle (*__FRiRenderElement)(const char *name, ...);
typedef FRtShaderHandle (*__FRiRenderElementV)(const char *name, FRI_PARAMETERLIST);

// plugins
typedef FRtBoolean (*__FRiSetPluginPath)(const char *new_path);
typedef FRtBoolean (*__FRiUnloadPlugins)();



#define FRI_SHADER					"shader"
#define FRI_NODE					"node"
#define FRI_FRAQMC					"fraqmc"
#define FRI_USEFRAGMENTS			"use_fragments"
#define FRI_MINRATE					"min_rate"
#define FRI_MAXRATE					"max_rate"
#define FRI_JITTER					"jitter"
#define FRI_SHARE_SAMPLES			"share_samples"
#define FRI_USE_DECAY				"use_decay"
#define FRI_THRESHOLD				"threshold"
#define FRI_MINRAYS					"min_rays"
#define FRI_MAXRAYS					"max_rays"

#define FRI_OP_PROGRESSCALLBACK			"op_set_progresscallback"
#define FRI_OP_APPHANDLE				"op_set_apphandle"
#define FRI_OP_CONFIG_DIRECTORY		"op_config_dir" 
#define FRI_OP_TEXTURE_DIRECTORY		"op_texture_dir"

// Progess Interface
#define FRI_PROGRESS_CONTINUE		1
#define FRI_PROGRESS_ABORT			0

#define FRI_PROGRESS_FIELD_NONE		0
#define FRI_PROGRESS_FIELD_FIRST	1
#define FRI_PROGRESS_FIELD_SECOND	2

#define FRI_BUCKET_MODE_RENDER		0
#define FRI_BUCKET_MODE_CLEAR		1
#define FRI_BUCKET_MODE_POST		2

#define FRI_OP_TBUFFER_MODE_MEMORY		0
#define FRI_OP_TBUFFER_MODE_HDSTAY		1
#define FRI_OP_TBUFFER_MODE_HDTEMP		2

// textures (bitmaps)
#define FRI_OP_TBUFFER				"op_tbuffer"
#define FRI_OP_TBUFFER_MODE			"op_tbuffer_mode"
#define FRI_OP_TBUFFER_MAXMEMORY	"op_tbuffer_maxmemory"
#define FRI_OP_TBUFFER_BLOCKWIDTH	"op_tbuffer_blockwidth"
#define FRI_OP_TBUFFER_DIRECTORY	"op_tbuffer_dir"

// gbuffer 
#define FRI_OP_GBUFFER_MODE_MEMORY	0
#define FRI_OP_GBUFFER_MODE_HDSTAY	1
#define FRI_OP_GBUFFER_MODE_HDTEMP	2

#define FRI_OP_GBUFFER				"op_gbuffer"
#define FRI_OP_GBUFFER_MODE			"op_gbuffer_mode"
#define FRI_OP_GBUFFER_MAXLAYER		"op_gbuffer_maxlayer"
#define FRI_OP_GBUFFER_MAXMEMORY	"op_tbuffer_maxmemory"
#define FRI_OP_GBUFFER_BLOCKWIDTH	"op_gbuffer_blockwidth"
#define FRI_OP_GBUFFER_DIRECTORY	"op_tbuffer_dir"

// messages
#define FRI_OP_DISPLAYMESSAGES		"op_displaymessages"
#define FRI_OP_VERBOSELEVEL			"op_verboselevel"
#define FRI_OP_CHECKFORMISSINGFILES "op_checkformissingfiles"
#define FRI_OP_TRACKMOUSEINVFB		"op_trackmouseinvfb"

// global flags
#define FRI_OP_FORCE2SIDE			"op_force2side"
#define FRI_OP_MAPPING				"op_mapping"
#define FRI_OP_USEDEFAULTLIGHTS		"op_usedefaultlights"
#define FRI_OP_SHADOWS				"op_shadows"
#define FRI_OP_HIDEPREPASSES		"op_hide_prepasses"
#define FRI_OP_DISPLACEMENT			"op_displacement"
#define FRI_OP_SPECULARS			"op_usespeculars"
#define FRI_OP_DIFFUSE				"op_usediffuse"

// gamma settings
#define FRI_OP_GAMMA				"op_gamma"
#define FRI_OP_GAMMA_ENABLE			"op_gamma_enable"
#define FRI_OP_GAMMA_DISPLAY		"op_gamma_display"
#define FRI_OP_GAMMA_FILEIN			"op_gamma_filein"
#define FRI_OP_GAMMA_FILEOUT		"op_gamma_fileout"


// Bucket size
#define FRI_OP_BUCKETSIZE_16			0
#define FRI_OP_BUCKETSIZE_32			1
#define FRI_OP_BUCKETSIZE_64			2
#define FRI_OP_BUCKETSIZE_128			3
#define FRI_OP_BUCKETSIZE_256			4
// bucket order
#define FRI_OP_BUCKETORDER_TOPBOTTOM	0
#define FRI_OP_BUCKETORDER_LEFTRIGHT	1
#define FRI_OP_BUCKETORDER_SPIRAL		2
#define FRI_OP_BUCKETORDER_RANDOM		3
#define FRI_OP_BUCKETORDER_HILBERT		4
// clear options
#define FRI_OP_CLEAROPTIONS_NOTHING		0
#define FRI_OP_CLEAROPTIONS_FILL		1
#define FRI_OP_CLEAROPTIONS_GRID		2
#define FRI_OP_CLEAROPTIONS_DARKEN		3
// storage options
#define FRI_OP_STORAGE_INT8				0
#define FRI_OP_STORAGE_INT16			1
#define FRI_OP_STORAGE_FLOAT32			2


#define FRI_OP_BUCKETS				"op_buckets"
#define FRI_OP_BUCKETSIZE			"op_bucketsize"
#define FRI_OP_BUCKETORDER			"op_bucketorder"
#define FRI_OP_BUCKETORDER_REVERSE	"op_bucketorder_reverse"
#define FRI_OP_CLEAROPTIONS			"op_clearoptions"
#define FRI_OP_CLEARCOLOR			"op_clearcolor"
#define FRI_OP_STORAGETYPE			"op_storagetype"

// multi-threading

#define FRI_OP_MULTITHREADING		"op_multithreading"
#define FRI_OP_USEMULTITHREADING	"op_usemultithreading"
#define FRI_OP_LOWPRIORITYTHREADS	"op_lowprioritythreads"
#define FRI_OP_USEALLPROCESSORS		"op_useallprocessors"
#define FRI_OP_CUSTOMNUMTHREADS		"op_customnumthreads"

// environment

#define FRI_OP_ENVIRONMENT			"op_environment"
#define FRI_OP_BACKGROUNDCOLOR		"op_backgroundcolor"
#define FRI_OP_AMBIENTCOLOR			"op_ambientcolor"
#define FRI_OP_GLOBALLIGHTLEVEL		"op_globallightlevel"
#define FRI_OP_ENVIRONMENTMAP		"op_environmentmap"


// antialiasing 

#define FRI_OP_AA					"op_aa"
#define FRI_OP_AA_ENGINE			"op_aa_engine"
#define FRI_OP_ANTIALIAS			"op_antialias"
#define FRI_OP_FILTERMAPS			"op_filtermaps"
#define FRI_OP_FILTERMAPSBLUR		"op_filtermapsblur"
#define FRI_OP_FILTERMAPSBLUROFFSET	"op_filtermapsbluroffset"
#define FRI_OP_FILTERIMAGE			"op_filterimage"

// adaptive anti-aliasing
#define FRI_AA_ADAPT				"fraa_adapt"
#define FRI_AA_ADAPT_MINRATE		"fraa_adapt_minrate"
#define FRI_AA_ADAPT_MAXRATE		"fraa_adapt_maxrate"
#define FRI_AA_ADAPT_JITTER			"fraa_adapt_jitter"
#define FRI_AA_ADAPT_USETHRESH		"fraa_adapt_usethresh"
#define FRI_AA_ADAPT_THRESH			"fraa_adapt_thresh"
#define FRI_AA_ADAPT_SHOWSMP		"fraa_adapt_showsmp"
#define FRI_AA_ADAPT_SMPCOLOR		"fraa_adapt_smpcolor"
#define FRI_AA_ADAPT_OBJEDGES		"fraa_adapt_objedges"
#define FRI_AA_ADAPT_SMGROUPS		"fraa_adapt_smgroups"
#define FRI_AA_ADAPT_MULTIPASS		"fraa_adapt_multipass"
#define FRI_AA_ADAPT_AFFECT_RE		"fraa_adapt_affect_renderelements"

// raytrace accel
#define FRI_OP_ISECT				"op_isect"
#define FRI_OP_ISECT_ENGINE			"op_isect_engine"

// scene MSP
#define FRI_SCENEMSP				"frscenemsp"
#define FRI_SCENEMSP_STAT_DEPTH		"frscenemsp_stat_depth"
#define FRI_SCENEMSP_STAT_LENGTH	"frscenemsp_stat_length"
#define FRI_SCENEMSP_STAT_BALANCE	"frscenemsp_stat_balance"
#define FRI_SCENEMSP_DYN_DEPTH		"frscenemsp_dyn_depth"
#define FRI_SCENEMSP_DYN_LENGTH		"frscenemsp_dyn_length"
#define FRI_SCENEMSP_DYN_BALANCE	"frscenemsp_dyn_balance"

#define FRI_SCENEMSP_MINDEPTH		"frscenemsp_min_depth"
#define FRI_SCENEMSP_MAXDEPTH		"frscenemsp_max_depth"
#define FRI_SCENEMSP_LENGTH			"frscenemsp_length"
#define FRI_SCENEMSP_BALANCE		"frscenemsp_balance"
#define FRI_SCENEMSP_INST_MINDEPTH	"frscenemsp_inst_min_depth"
#define FRI_SCENEMSP_INST_MAXDEPTH	"frscenemsp_inst_max_depth"
#define FRI_SCENEMSP_INST_LENGTH	"frscenemsp_inst_length"
#define FRI_SCENEMSP_INST_BALANCE	"frscenemsp_inst_balance"
#define FRI_SCENEMSP_CONSERVE_MEM	"frscenemsp_conserve_memory"
#define FRI_SCENEMSP_USE_INSTANCES	"frscenemsp_use_instances"
#define FRI_SCENEMSP_DIVATRUNTIME	"frscenemsp_divide_at_runtime"

// dynamic MSP
#define FRI_DYNMSP					"frdynamicmsp"
#define FRI_DYNMSP_DEPTH			"frdynamicmsp_depth"
#define FRI_DYNMSP_LENGTH			"frdynamicmsp_length"
#define FRI_DYNMSP_BALANCE			"frdynamicmsp_balance"
#define FRI_DYNMSP_OBJECTS			"frdynamicmsp_objects"
#define FRI_DYNMSP_USEQUEUE			"frdynamicmsp_use_queue"
#define FRI_DYNMSP_QUEUELENGTH		"frdynamicmsp_queue_length"

// raytracer

#define FRI_OP_RAYTRACE				"op_raytrace"
#define FRI_OP_USEREFRACTION		"op_userefraction" 
#define FRI_OP_USEREFLECTION		"op_usereflection"
#define FRI_OP_REFLECTBOUNCES		"op_reflectbounces"
#define FRI_OP_REFRACTBOUNCES		"op_refractbounces"
#define FRI_OP_SHADOWBOUNCES		"op_shadowbounces"
#define FRI_OP_TOTALINTERNALBOUNCES	"op_totalinternalbounces"
#define FRI_OP_TOTALBOUNCES			"op_totalbounces"
#define FRI_OP_USEREFLECTMAXCOLOR	"op_usereflectmaxcolor"
#define FRI_OP_USEREFRACTMAXCOLOR	"op_userefractmaxcolor"
#define FRI_OP_REFLECTCOLOR			"op_reflectcolor"
#define FRI_OP_REFRACTCOLOR			"op_refractcolor"
#define FRI_OP_USEREFLECTMAXMAP		"op_usereflectmaxmap"
#define FRI_OP_USEREFRACTMAXMAP		"op_userefractmaxmap"
#define FRI_OP_REFLECTMAP			"op_reflectmap"
#define FRI_OP_REFRACTMAP			"op_refractmap"
#define FRI_OP_RAYTHRESHOLD			"op_raythreshold"
#define FRI_OP_RAYFILTERMAPSBLUR	"op_rayfiltermapsblur"
#define FRI_OP_BLURRYENABLE			"op_blurryenable"

#define FRI_OP_RT_ENVIRONMENTMODE_GLOBAL		0
#define FRI_OP_RT_ENVIRONMENTMODE_COLOR			1
#define FRI_OP_RT_ENVIRONMENTMODE_MAP			2

#define FRI_OP_RT_ENVIRONMENTMODE	"op_rt_environmentmode"
#define FRI_OP_RT_ENVIRONMENTCOLOR	"op_rt_environmentcolor"
#define FRI_OP_RT_ENVIRONMENTMAP	"op_rt_environmentmap"

// caustics global
#define FRI_OP_CAUSTICS				"op_caustics"
#define FRI_OP_CAUSTICS_ENGINE		"op_caustics_engine"
#define FRI_OP_CAUSTICS_ENABLE		"op_caustics_enable"
#define FRI_OP_VOLUME_CAUSTICS_ENABLE	"op_caustics_volume_enable"
#define FRI_OP_REFLECT_CAUSTICS_ENABLE	"op_caustics_reflect_enable"
#define FRI_OP_REFRACT_CAUSTICS_ENABLE	"op_caustics_refract_enable"
#define FRI_OP_CAUSTICS_MULTIPLIER		"op_caustics_multiplier"
#define FRI_OP_CAUSTICS_VOLUME_MULTIPLIER	"op_caustics_volume_multiplier"
#define FRI_OP_CAUSTICS_DISABLE_LOCALS	"op_caustics_disable_locals"

// caustics
#define FRI_CAUSTICS				"frcaustics"
#define FRI_CAUSTICS_ACCURACY		"frcaustics_accuracy"
#define FRI_CAUSTICS_USEMAXRAD		"frcaustics_usemaxrad"
#define FRI_CAUSTICS_MAXRAD			"frcaustics_maxrad"
#define FRI_CAUSTICS_STEPLEN		"frcaustics_steplen"
#define FRI_CAUSTICS_MAXRAYLEN		"frcaustics_maxraylen"
#define FRI_CAUSTICS_VOLACCURACY	"frcaustics_volaccuracy"
#define FRI_CAUSTICS_VOLUSEMAXRAD	"frcaustics_volusemaxrad"
#define FRI_CAUSTICS_VOLMAXRAD		"frcaustics_volmaxrad"
#define FRI_CAUSTICS_REUSE			"frcaustics_reuse"

// sky-light

#define FRI_OP_SKY				"op_sky"
#define FRI_OP_SKY_ENABLE		"op_sky_enable"
#define FRI_OP_SKY_MULTIPLIER	"op_sky_multiplier"
#define FRI_OP_SKY_COLOR		"op_sky_color"
#define FRI_OP_SKY_USEMAP		"op_sky_usemap"
#define FRI_OP_SKY_MAP			"op_sky_map"
#define FRI_OP_SKY_USETRANS		"op_sky_usetrans"
#define FRI_OP_SKY_SAMPLES		"op_sky_samples"


// physical sky

#define FRI_OP_PHYSKY					"op_physical_sky"
#define FRI_OP_PHYSKY_ENABLE			"op_physical_sky_enable"
#define FRI_OP_PHYSKY_MULTIPLIER		"op_physical_sky_multiplier"
#define FRI_OP_PHYSKY_SUN_MULTIPLIER	"op_physical_sky_sun_multiplier"
#define FRI_OP_PHYSKY_ENV_MULTIPLIER	"op_physical_sky_env_multiplier"
#define FRI_OP_PHYSKY_HOURS				"op_physical_sky_hours"
#define FRI_OP_PHYSKY_MINUTES			"op_physical_sky_minutes"
#define FRI_OP_PHYSKY_SECONDS			"op_physical_sky_seconds"
#define FRI_OP_PHYSKY_MONTH				"op_physical_sky_month"
#define FRI_OP_PHYSKY_DAY				"op_physical_sky_day"
#define FRI_OP_PHYSKY_YEAR				"op_physical_sky_year"
#define FRI_OP_PHYSKY_TIMEZONE			"op_physical_sky_timezone"
#define FRI_OP_PHYSKY_LATIDUDE			"op_physical_sky_latitude"
#define FRI_OP_PHYSKY_LONGITUDE			"op_physical_sky_longitude"
#define FRI_OP_PHYSKY_TURBIDITY			"op_physical_sky_turbidity"
#define FRI_OP_PHYSKY_SUNLIGHT			"op_physical_sky_sun_enable"
#define FRI_OP_PHYSKY_OZONE				"op_physical_sky_ozone"
#define FRI_OP_PHYSKY_WATER				"op_physical_sky_water"
#define FRI_OP_PHYSKY_DAYLIGHTSAVING	"op_physical_sky_daylightsavingtime"
#define FRI_OP_PHYSKY_SHOWENV			"op_physical_sky_show_env"
#define FRI_OP_PHYSKY_TRANSFORM			"op_physical_sky_transform"
#define FRI_OP_PHYSKY_SHADOW_BIAS		"op_physical_sky_shadow_bias"
#define FRI_OP_PHYSKY_SHADOW_BLUR		"op_physical_sky_shadow_blur"
#define FRI_OP_PHYSKY_SHADOW_BLUROFFSET "op_physical_sky_shadow_bluroffset"
#define FRI_OP_PHYSKY_SHADOW_SAMPLES	"op_physical_sky_shadow_samples"
#define FRI_OP_PHYSKY_FILTER			"op_physical_sky_filter"
#define FRI_OP_PHYSKY_SUN_FILTER		"op_physical_sky_sun_filter"
#define FRI_OP_PHYSKY_ENV_FILTER		"op_physical_sky_env_filter"
#define FRI_OP_PHYSKY_SATURATION		"op_physical_sky_saturation"
#define FRI_OP_PHYSKY_SUN_SATURATION	"op_physical_sky_sun_saturation"
#define FRI_OP_PHYSKY_ENV_SATURATION	"op_physical_sky_env_saturation"


// global illumination

#define FRI_OP_GI					"op_gi"
#define FRI_OP_GI_ENABLE			"op_gi_enable"
#define FRI_OP_GI_BOUNCES			"op_gi_bounces"
#define FRI_OP_GI_USEDIFFCOLOR		"op_gi_usediffcolor"
#define FRI_OP_GI_DIFFCOLOR			"op_gi_diffcolor"
#define FRI_OP_GI_USEDIFFMAP		"op_gi_usediffmap"
#define FRI_OP_GI_DIFFMAP			"op_gi_diffmap"
#define FRI_OP_GI_MULTIPLIER		"op_gi_multiplier"
#define FRI_OP_GI_SECMULTIPLIER		"op_gi_secmultiplier"
#define FRI_OP_GI_CONTRAST			"op_gi_contrast"
#define FRI_OP_GI_CONTRASTRANGE		"op_gi_contrastrange"
#define FRI_OP_GI_SATURATION		"op_gi_saturation"
#define FRI_OP_GI_SHADEBG			"op_gi_shadebg"
#define FRI_OP_GI_SHADESPECULAR		"op_gi_shadespecular"
#define FRI_OP_GI_COLORBLEEDING		"op_gi_colorbleeding"
#define FRI_OP_GI_MAP_BLUR			"op_gi_map_blur"
#define FRI_OP_GI_HDRIMAP_BLUR		"op_gi_hdrimap_blur"
#define FRI_OP_GI_SHOWDIRECTLIGHT	"op_gi_showdirectlight"
#define FRI_OP_GI_CUTOFF_THRESHOLD	"op_gi_cutoff_threshold"
#define FRI_OP_GI_CUTOFF_COLOR		"op_gi_cutoff_color"
#define FRI_OP_GI_ENGINE			"op_gi_engine"
#define FRI_OP_GI_MOTION_SAMPLING	"op_gi_motion_sampling"

// QMC-GI
#define FRI_QMC_GI					"frqmcgi"
#define FRI_QMC_GI_SAMPLES			"frqmcgi_samples"
#define FRI_QMC_GI_SECSAMPLES		"frqmcgi_secsamples"
#define FRI_QMC_GI_DIFFANGLE		"frqmcgi_diffangle"
#define FRI_QMC_GI_SHOWSAMPLES		"frqmcgi_showsamples"

// image-GI
#define FRI_IMAGE_GI				"frimagegi"
#define FRI_IMAGE_GI_USEPREPASS		"frimagegi_useprepass"
#define FRI_IMAGE_GI_REUSE			"frimagegi_reuse"
#define FRI_IMAGE_GI_LOCK			"frimagegi_lock"
#define FRI_IMAGE_GI_SHOWSAMPLES	"frimagegi_showsamples"
#define FRI_IMAGE_GI_SAMPLECOLOR	"frimagegi_samplecolor"
#define FRI_IMAGE_GI_NUMRAYS		"frimagegi_numrays"
#define FRI_IMAGE_GI_NUMSECRAYS		"frimagegi_sumsecrays"
#define FRI_IMAGE_GI_USESECRAYS		"frimagegi_usesecrays"
#define FRI_IMAGE_GI_QUALITY		"frimagegi_quality"
#define FRI_IMAGE_GI_BALANCE		"frimagegi_balance"
#define FRI_IMAGE_GI_CURVEBALANCE	"frimagegi_curvebalance"
#define FRI_IMAGE_GI_GRAIN			"frimagegi_grain"
#define FRI_IMAGE_GI_ABSRES			"frimagegi_absres"
#define FRI_IMAGE_GI_MAXMINRATIO	"frimagegi_maxminratio"
#define FRI_IMAGE_GI_MAXDENSITY		"frimagegi_maxdensity"
#define FRI_IMAGE_GI_MINRADIUS		"frimagegi_minradius"
#define FRI_IMAGE_GI_EDGEDETECT		"frimagegi_edgedetect"
#define FRI_IMAGE_GI_PREPASSMIN		"frimagegi_prepassmin"
#define FRI_IMAGE_GI_PREPASSMAX		"frimagegi_prepassmax"
#define FRI_IMAGE_GI_FILTERSIZE		"frimagegi_filtersize"
#define FRI_IMAGE_GI_PREPASS_STEPSIZE "frimage_gi_prepass_stepsize"
#define FRI_IMAGE_GI_SECSAMPLECOLOR	"frimagegi_secsamplecolor"
#define FRI_IMAGE_GI_USELOD			"frimagegi_uselod"
#define FRI_IMAGE_GI_LOD			"frimagegi_lod"
#define FRI_IMAGE_GI_LODSTART		"frimagegi_lodstart"		
#define FRI_IMAGE_GI_USEDECAY		"frimagegi_usedecay"
#define FRI_IMAGE_GI_DECAY			"frimagegi_decay"
#define FRI_IMAGE_GI_SAVEGIM		"frimagegi_savegim"
#define FRI_IMAGE_GI_LOADGIM		"frimagegi_loadgim"
#define FRI_IMAGE_GI_PREPASSONLY	"frimagegi_prepassonly"
#define FRI_IMAGE_GI_SHARESAMPLES	"frimagegi_sharesamples"

// color mapping
#define FRI_CMAP_TYPE_LINEAR	0
#define FRI_CMAP_TYPE_EXP		1
#define FRI_CMAP_TYPE_HSVEXP	2
#define FRI_CMAP_TYPE_GAMMA		3

#define FRI_OP_CMAP				"op_cmap"
#define FRI_OP_CMAP_ENABLE		"op_cmap_enable"
#define FRI_OP_CMAP_TYPE		"op_cmap_type"
#define FRI_OP_CMAP_DARKMULT	"op_cmap_dark_mult"
#define FRI_OP_CMAP_BRIGHTMULT	"op_cmap_bright_mult"
#define FRI_OP_CMAP_AFFECTBG	"op_cmap_affect_bg"

// DOF
#define FRI_OP_DOF				"op_dof"
#define FRI_OP_DOF_ENABLE		"op_dof_enable"
#define FRI_OP_DOF_APERTURE		"op_dof_aperture"
#define FRI_OP_DOF_TARGETDIST	"op_dof_targetdist"
#define FRI_OP_DOF_LENSROTATION	"op_dof_lensrotation"
#define FRI_OP_DOF_LENSTYPE		"op_dof_lenstype"
#define FRI_OP_DOF_SAMPLES		"op_dof_samples"

// QMC Sampler
#define FRI_OP_QMCSMP				"op_qmcsmp"
#define FRI_OP_QMCSMP_LOCKTOSCREEN	"op_qmcsmp_locktoscreen"
#define FRI_OP_QMCSMP_MINSAMPLES	"op_qmcsmp_minsamples"
#define FRI_OP_QMCSMP_AMOUNT		"op_qmcsmp_amount"
#define FRI_OP_QMCSMP_THRESH		"op_qmcsmp_threshold"

// render info print

#define FRI_OP_INFO					"op_info"
#define FRI_OP_INFO_ENABLE			"op_info_enable"
#define FRI_OP_INFO_HEADER			"op_info_header"
#define FRI_OP_INFO_FOOTER			"op_info_footer"
#define FRI_OP_INFO_ENABLEHEADER	"op_info_enableheader"
#define FRI_OP_INFO_ENABLEFOOTER	"op_info_enablefooter"
#define FRI_OP_INFO_TRANSPARENCY	"op_info_transparency"


// MTD
#define FRI_OP_MTD					"op_mtd"
#define FRI_OP_MTD_MAXLEVEL			"op_mtd_maxlevel"
#define FRI_OP_MTD_MULTIPLIER		"op_mtd_multiplier"
#define FRI_OP_MTD_MODE				"op_mtd_mode"
#define FRI_OP_MTD_EDGESIZE			"op_mtd_edgesize"
#define FRI_OP_MTD_VIEWDEP			"op_mtd_viewdep"
#define FRI_OP_MTD_KEEPEDGES		"op_mtd_keepedges"
#define FRI_OP_MTD_ROUNDGEOMETRY	"op_mtd_roundgeometry"
#define FRI_OP_MTD_MAPGEOMETRY		"op_mtd_mapgeometry"
#define FRI_OP_MTD_USESMOOTHANGLE	"op_mtd_usesmoothangle"
#define FRI_OP_MTD_SMOOTHANGLE		"op_mtd_smoothangle"
#define FRI_OP_MTD_THRESHOLD		"op_mtd_threshold"
#define FRI_OP_MTD_VIEWCLIP			"op_mtd_viewclip"
#define FRI_OP_MTD_RUNTIME			"op_mtd_runtime"

// distributed rendering


#define FRI_OP_DR					"op_dr"
#define FRI_OP_DR_ENABLE			"op_dr_use"
#define FRI_OP_DR_DISTRIBUTEMAPS	"op_dr_distributemaps"
#define FRI_OP_DR_RESETHOSTLIST		"op_dr_resethostlist"
#define FRI_OP_DR_ADDHOST			"op_dr_addhost"
#define FRI_OP_DR_TIMEOUTS			"op_dr_timeouts"


// motion blur
#define FRI_OP_MBLUR				"op_mblur"
#define FRI_OP_MBLUR_SAMPLES		"op_mblur_samples"
#define FRI_OP_MBLUR_TRAILS			"op_mblur_trails"
#define FRI_OP_MBLUR_MODE			"op_mblur_mode"


// global shadow control


#define FRI_SHADOWS_DENSITY				"shadowdensity"
#define FRI_SHADOWS_COLOR				"shadowcolor"
#define FRI_SHADOWS_LIGHTAFFECTSCOLOR	"shadowlightaffectscolor"
#define FRI_SHADOWS_ATMOS				"atmosphericshadows"
#define FRI_SHADOWS_ATMOS_OPACITY		"atmosphericshadows_opacity"
#define FRI_SHADOWS_ATMOS_COLORAMT		"atmosphericshadows_coloramount"
#define FRI_SHADOWS_DIST_DENSITY		"shadowdistdensity"

// area shadows
#define FRI_AREASHADOW_TYPE_DISC			0
#define FRI_AREASHADOW_TYPE_RECT			1
#define FRI_AREASHADOW_TYPE_SPHERE			2
#define FRI_AREASHADOW_TYPE_CYLINDER		3
#define FRI_AREASHADOW_TYPE_ANGLE			4

#define FRI_RAYTRACEDSHADOW_MODE_NORMAL		0
#define FRI_RAYTRACEDSHADOW_MODE_SOLID		1
#define FRI_RAYTRACEDSHADOW_MODE_FALLOFF	2


#define FRI_AREASHADOWS				"areashadows"
#define FRI_AREASHADOWS_TYPE		"areashadows_type"
#define FRI_AREASHADOWS_RADIUS		"areashadows_radius"
#define FRI_AREASHADOWS_WIDTH		"areashadows_width"
#define FRI_AREASHADOWS_HEIGHT		"areashadows_height"
#define FRI_AREASHADOWS_BIAS		"areashadows_bias"
#define FRI_AREASHADOWS_FORCE2SIDE	"areashadows_force2side"
#define FRI_AREASHADOWS_USETRANSPARENCY "areashadows_usetransparency"
#define FRI_AREASHADOWS_MINSAMPLES	"areashadows_minsamples"
#define FRI_AREASHADOWS_MAXSAMPLES	"areashadows_maxsamples"
#define FRI_AREASHADOWS_THRESHOLD	"areashadows_threshold"
#define FRI_AREASHADOWS_VOLUMEMINSAMPLES "areashadows_volumeminsamples"
#define FRI_AREASHADOWS_VOLUMEMAXSAMPLES "areashadows_volumemaxsamples"
#define FRI_AREASHADOWS_VOLUMETHRESHOLD "areashadows_volumethreshold"
#define FRI_AREASHADOWS_MODE			"areashadows_mode"
#define FRI_AREASHADOWS_SOLIDDENSITY	"areashadows_soliddensity"
#define FRI_AREASHADOWS_FALLOFF			"areashadows_falloff"
#define FRI_AREASHADOWS_STOREWITHGI		"areashadows_storewithgi"
#define FRI_AREASHADOWS_CURVESRF		"areashadows_curvesrf"
#define FRI_AREASHADOWS_ANGLE			"areashadows_angle"


// raytrace shadows

#define FRI_RAYTRACEDSHADOW_MODE_NORMAL		0
#define FRI_RAYTRACEDSHADOW_MODE_SOLID		1
#define FRI_RAYTRACEDSHADOW_MODE_FALLOFF	2


#define FRI_RAYTRACESHADOWS					"raytraceshadows"
#define FRI_RAYTRACESHADOWS_BIAS			"raytraceshadows_bias"
#define FRI_RAYTRACESHADOWS_FORCE2SIDE		"raytraceshadows_force2side"
#define FRI_RAYTRACESHADOWS_USETRANSPARENCY	"raytraceshadows_usetransparency"
#define FRI_RAYTRACESHADOWS_MODE			"raytraceshadows_mode"
#define FRI_RAYTRACESHADOWS_SOLIDDENSITY	"raytraceshadows_soliddensity"
#define FRI_RAYTRACESHADOWS_FALLOFF			"raytraceshadows_falloff"
#define FRI_RAYTRACESHADOWS_CURVESRF		"raytraceshadows_curvesrf"


// shadowmaps
#define FRI_SHADOWMAPS				"shadowmaps"
#define FRI_SHADOWMAPS_BIAS			"shadowmaps_bias"
#define FRI_SHADOWMAPS_SMPRANGE		"shadowmaps_smprange"
#define FRI_SHADOWMAPS_SIZE			"shadowmaps_size"
#define FRI_SHADOWMAPS_ABSBIAS		"shadowmaps_absbias"
#define FRI_SHADOWMAPS_FORCE2SIDE	"shadowmaps_force2side"
#define FRI_SHADOWMAPS_MIDDIST		"shadowmaps_middist"

 // illustrator
#define FRI_ILLUSTRATOR						"illustrator"
#define FRI_ILLUSTRATOR_LINESIZE			"illustrator_linesize"
#define FRI_ILLUSTRATOR_HIDDEN_LINESIZE		"illustrator_hidden_linesize"
#define FRI_ILLUSTRATOR_VISIBLE_FOLDLINES	"illustrator_visible_foldlines"
#define FRI_ILLUSTRATOR_HIDDEN_FOLDLINES	"illustrator_hidden_foldlines"
#define FRI_ILLUSTRATOR_VISIBLE_CREASELINES	"illustrator_visible_creaselines"
#define FRI_ILLUSTRATOR_HIDDEN_CREASELINES	"illustrator_hidden_creaselines"
#define FRI_ILLUSTRATOR_VISIBLE_ISECTLINES	"illustrator_visible_isectlines"
#define FRI_ILLUSTRATOR_HIDDEN_ISECTLINES	"illustrator_hidden_isectlines"
#define FRI_ILLUSTRATOR_VISIBLE_ANGLELINES	"illustrator_visible_anglelines"
#define FRI_ILLUSTRATOR_HIDDEN_ANGLELINES	"illustrator_hidden_anglelines"
#define FRI_ILLUSTRATOR_MINANGLE			"illustrator_minangle"
#define FRI_ILLUSTRATOR_MAXANGLE			"illustrator_maxangle"
#define FRI_ILLUSTRATOR_SHAPETYPE			"illustrator_shapetype"
 
#define FRI_ILLUSTRATOR_SHAPETYPE_SHADER		0
#define FRI_ILLUSTRATOR_SHAPETYPE_BKGROUND		1

#define FRI_ILLUSTRATOR_VISIBLE_PATTERN		"illustrator_visible_pattern"
#define FRI_ILLUSTRATOR_HIDDEN_PATTERN		"illustrator_hidden_pattern"
#define FRI_ILLUSTRATOR_PATTERNPRIORITY		"illustrator_patternpriority"

// glass material
#define FRI_GLASS							"glass"
#define FRI_GLASS_DIFFUSECOLOR				"glass_diffusecolor"
#define FRI_GLASS_USESPECULAR				"glass_usespecular"
#define FRI_GLASS_SPECULARCOLOR				"glass_specularcolor"
#define FRI_GLASS_SPECULARLEVEL				"glass_specularlevel"
#define FRI_GLASS_SPECULARGLOSSINESS		"glass_specularglossiness"
#define FRI_GLASS_USEFRESNEL				"glass_usefresnel"
#define FRI_GLASS_USETOTALINTERNALREFLECTION "glass_usetotalinternalreflection"
#define FRI_GLASS_USELOCALTHRESHOLD			"glass_uselocalthreshold"
#define FRI_GLASS_THRESHOLD					"glass_threshold"
#define FRI_GLASS_SHADEATMOSPHERICS			"glass_shadeatmospherics"
#define FRI_GLASS_BLURRYAFFECTSCAUSTICS		"glass_blurryaffectscaustics"

#define FRI_GLASS_ENVIRONMENTMODE_GLOBAL	0
#define FRI_GLASS_ENVIRONMENTMODE_LOCAL		1
#define FRI_GLASS_ENVIRONMENTMODE_LOCALMAP	2

#define FRI_GLASS_ENVIRONMENTMODE			"glass_environmentmode"
#define FRI_GLASS_ENVIRONMENTCOLOR			"glass_environmentcolor"


#define FRI_GLASS_EXITMODE_ENV		0
#define FRI_GLASS_EXITMODE_COLOR	1

#define FRI_GLASS_EXITMODE					"glass_exitmode"
#define FRI_GLASS_EXITCOLOR					"glass_exitcolor"
#define FRI_GLASS_REFRACTIOR				"glass_refractior"
#define FRI_GLASS_REFLECTIOR				"glass_reflectior"
#define FRI_GLASS_REFRACTCOLOR				"glass_refractcolor"
#define FRI_GLASS_REFRACTBLURRYAMOUNT		"glass_refractblurryamount"
#define FRI_GLASS_REFRACTBLURRYSAMPLES		"glass_refractblurrysamples"
#define FRI_GLASS_REFRACTBLURRYQUALITY		"glass_refractblurryquality"
#define FRI_GLASS_REFLECTCOLOR				"glass_reflectcolor"
#define FRI_GLASS_REFLECTBLURRYAMOUNT		"glass_reflectblurryamount"
#define FRI_GLASS_REFLECTBLURRYSAMPLES		"glass_reflectblurrysamples"
#define FRI_GLASS_REFLECTBLURRYQUALITY		"glass_reflectblurryquality"
#define FRI_GLASS_DIFFUSEMAPAMOUNT			"diffusemapamount"
#define FRI_GLASS_DIFFUSEMAP				"diffusemap"
#define FRI_GLASS_BUMPMAPAMOUNT				"bumpmapamount"
#define FRI_GLASS_BUMPMAP					"bumpmap"
#define FRI_GLASS_REFRACTMAPAMOUNT			"refractmapamount"
#define FRI_GLASS_REFRACTMAP				"refractmap"
#define FRI_GLASS_REFLECTMAPAMOUNT			"reflectmapamount"
#define FRI_GLASS_REFLECTMAP				"reflectmap"
#define FRI_GLASS_ENVIRONMENTMAP			"environmentmap"
#define FRI_GLASS_NORMAL					"normal"
#define FRI_GLASS_NORMALCAMERA				"normalCamera"

// Metal material

#define FRI_METAL						"metal"
#define FRI_METAL_DIFFUSECOLOR			"metal_diffusecolor"
#define FRI_METAL_USESPECULAR			"metal_usespecular"
#define FRI_METAL_SPECULARLEVEL			"metal_specularlevel"
#define FRI_METAL_SPECULARGLOSSINESS	"metal_specularglossiness"
#define FRI_METAL_REFLECTCOLOR			"metal_reflectcolor"
#define FRI_METAL_REFLECTIVITY			"metal_reflectivity"
#define FRI_METAL_REFLECTLEVELMAPAMOUNT "metal_reflectlevelmapamount"
#define FRI_METAL_REFLECTLEVELMAP		"metal_reflectlevelmap"
#define FRI_METAL_USELOCALTHRESHOLD		"metal_uselocalthreshold"
#define FRI_METAL_THRESHOLD				"metal_threshold"
#define FRI_METAL_SHADEATMOSPHERICS		"metal_shadeatmospherics"
#define FRI_METAL_NORMAL				"normal"
#define FRI_METAL_NORMALCAMERA			"normalCamera"


#define FRI_METAL_ENVIRONMENTMODE_GLOBAL		0
#define FRI_METAL_ENVIRONMENTMODE_LOCAL			1
#define FRI_METAL_ENVIRONMENTMODE_LOCALMAP		2


#define FRI_METAL_ENVIRONMENTMODE		"metal_environmentmode"
#define FRI_METAL_ENVIRONMENTCOLOR		"metal_environmentcolor"
#define FRI_METAL_ENVIRONMENTMAP		"metal_environmentmap"

#define FRI_METAL_EXITMODE_ENV			0
#define FRI_METAL_EXITMODE_COLOR		1

#define FRI_METAL_EXITMODE				"metal_exitmode"
#define FRI_METAL_EXITCOLOR				"metal_exitcolor"
#define FRI_METAL_BLURRYAMOUNT			"metal_blurryamount"
#define FRI_METAL_BLURRYSAMPLES			"metal_blurrysamples"
#define FRI_METAL_BLURRYQUALITY			"metal_blurryquality"
#define FRI_METAL_BLURRYAFFECTSCAUSTICS	"metal_blurryaffectscaustics"
#define FRI_METAL_DIFFUSEMAPAMOUNT		"diffusemapamount"
#define FRI_METAL_DIFFUSEMAP			"diffusemap"

// wood
#define FRI_WOOD						"wood"
#define FRI_WOOD_RINGSCALE				"wood_ringscale"
#define FRI_WOOD_LIGHTWOOD				"wood_lightwood"
#define FRI_WOOD_DARKWOOD				"wood_darkwood"
// marble

#define FRI_MARBLE						"marble"
#define FRI_MARBLE_PALE					"marble_pale"
#define FRI_MARBLE_MEDIUM				"marble_medium"
#define FRI_MARBLE_MEDIUMDARK			"marble_mediumdark"
#define FRI_MARBLE_DARK					"marble_dark"

// noise
#define FRI_NOISE						"noise"
#define FRI_NOISE_AMOUNT				"noise_amount"
#define FRI_NOISE_MINCLAMP				"noise_minclamp"
#define FRI_NOISE_MAXCLAMP				"noise_maxclamp"
#define FRI_NOISE_COLOR1				"noise_color1"
#define FRI_NOISE_COLOR2				"noise_color2"

// gradient
#define FRI_GRADIENT					"gradient"
#define FRI_GRADIENT_NOISEAMOUNT		"gradient_noiseamount"
#define FRI_GRADIENT_NOISESCALE			"gradient_noisescale"
#define FRI_GRADIENT_CENTER				"gradient_center"
#define FRI_GRADIENT_COLOR1				"gradient_color1"
#define FRI_GRADIENT_COLOR2				"gradient_color2"
#define FRI_GRADIENT_COLOR3				"gradient_color3"

// attributes
#define FRI_ATT_IDENTIFIER				"identifier"
#define FRI_ATT_SEENBYCAMERA			"fratt_seenbycamera"
#define FRI_ATT_SEENBYREFLECTION		"fratt_seenbyreflection"
#define FRI_ATT_SEENBYREFRACTION		"fratt_seenbyrefraction"
#define FRI_ATT_SEENBYGI				"fratt_seenbygi"
#define FRI_ATT_SEENITSELFBYGI			"fratt_seenitselfbygi"
#define FRI_ATT_RECEIVEGI				"fratt_receive_gi"
#define FRI_ATT_GENERATEGI				"fratt_generate_gi"
#define FRI_ATT_RECEIVECAUSTICS			"fratt_receive_caustics"
#define FRI_ATT_GENERATECAUSTICS		"fratt_generate_caustics"
#define FRI_ATT_RECEIVESHADOWS			"receive_shadows"
#define FRI_ATT_CASTSHADOWS				"cast_shadows"
#define FRI_ATT_SELFSHADOWS				"self_shadows"
#define FRI_ATT_VISIBILITY				"visibility"
#define FRI_ATT_BAKE					"fratt_bake"
#define FRI_ATT_BAKEMAPCHANNEL			"fratt_bakemapchannel"
#define FRI_ATT_RECEIVEGI_MULT			"fratt_receive_gi_multiplier"
#define FRI_ATT_GENERATEGI_MULT			"fratt_generate_gi_multiplier"
#define FRI_ATT_RECEIVECAUSTICS_MULT	"fratt_receive_caustics_multiplier"
#define FRI_ATT_GENERATECAUSTICS_MULT	"fratt_generate_caustics_multiplier"
#define FRI_ATT_CUTOFF_GI				"fratt_cutoff_gi"
#define FRI_ATT_MOTIONSAMPLES			"fratt_motionsamples"
#define FRI_ATT_DISPLACE				"fratt_displacement"
#define FRI_ATT_GBUFID					"fratt_gbufid"

// interface
#define FRI_MAP_TYPE_CHANNEL		0
#define FRI_MAP_TYPE_ENV_SPHERE		1
#define FRI_MAP_TYPE_ENV_CYLINDER	2
#define FRI_MAP_TYPE_ENV_SHRINK		3
#define FRI_MAP_TYPE_ENV_SCREEN		4

#define FRI_SMGROUP		"smgroup"
#define FRI_SMANGLE		"smangle"
#define FRI_TVID		"tvid"
#define FRI_TV			"tv"
#define FRI_TV_TAN		"tvtan"
#define FRI_MATID		"matid"
#define FRI_MAP_TYPE	"map_type"
#define FRI_MAP_CHANNEL	"map_channel"

#define FRI_ALPHA_SOURCE_NONE		0
#define FRI_ALPHA_SOURCE_FILE		1
#define FRI_ALPHA_SOURCE_RGB		2

#define FRI_ALPHA_SOURCE	"alphasource"//"alpha_source"

#define FRI_OPACITY_SOURCE_RGB		0
#define FRI_OPACITY_SOURCE_MONO		1
#define FRI_OPACITY_SOURCE_ALPHA	2

#define FRI_OPACITY_SOURCE	"opacitysource"
#define FRI_OPACITYNAME		"opacityname"

#define FRI_FRAMEBUFFER			"framebuffer"
#define FRI_FILE				"file"
#define FRI_FILEANDFRAMEBUFFER	"file_and_framebuffer"
#define FRI_RGB					"rgb" // check this
#define FRI_RGBA				"rgba"
#define FRI_RGBZ				"rgbz"
#define FRI_RGBAZ				"rgbaz"
#define FRI_A					"a"
#define FRI_Z					"z" // check this
#define FRI_AZ					"az"
#define FRI_MERGE				"merge"
#define FRI_ORIGIN				"origin"
#define FRI_PERSPECTIVE			"perspective"
#define FRI_ORTHOGRAPHIC		"orthographic"
#define FRI_CYLINDRICAL			"cylindrical"
#define FRI_SPHERICAL			"spherical"
#define FRI_FISHEYE				"fisheye"
#define FRI_DISTORTION			"distortion"
#define FRI_PANORAMIC			"panoramic"
#define FRI_ULTRAWIDE			"ultrawide"
#define FRI_DOME				"dome"
#define FRI_ARCHITECTURAL		"architectural"
#define FRI_INSECTEYE			"insecteye"
#define FRI_HFOV				"hfov"
#define FRI_VFOV				"vfov"
#define FRI_QT_PANORAMA_CUBIC		"qt_panorama_cubic"
#define FRI_QT_PANORAMA_CYLINDRICAL	"qt_panorama_cylindrical"
#define FRI_QT_PANORAMA_WIDTH		"qt_panorama_width"
#define FRI_QT_PANORAMA_HEIGHT		"qt_panorama_height"
#define FRI_QT_PANORAMA_START_PLAYER "qt_panorama_start_player"
//#define FRI_QT_VR					"quicktimevr"
#define FRI_HIDDEN				"hidden"
#define FRI_PAINT				"paint"
#define FRI_CONSTANT			"constant" // check this
#define FRI_SMOOTH				"smooth"
#define FRI_FLATNESS			"flatness"
#define FRI_FOV					"fov"

// shadow type
#define FRI_SHADOWTYPE_NONE			FRI_NULL
#define FRI_SHADOWTYPE_RAYTRACE		FRI_RAYTRACESHADOWS
#define FRI_SHADOWTYPE_AREA			FRI_AREASHADOWS
#define FRI_SHADOWTYPE_MAP			FRI_SHADOWMAPS

#define FRI_DECAY_NONE					0
#define FRI_DECAY_INVERSE				1
#define FRI_DECAY_INVSQ					2
#define FRI_DECAY_INVCUBIC				3

#define FRI_DECAY_OLD_LINEAR			4
#define FRI_DECAY_OLD_INVERSE			5
#define FRI_DECAY_OLD_INVSQUARE			6
#define FRI_DECAY_OLD_INVCUBIC			7
#define FRI_DECAY_EXT_STEP				8
#define FRI_DECAY_EXT_INVSERSE_CLAMPED	9
#define FRI_DECAY_EXT_INVSQUARE_CLAMPED	10
#define FRI_DECAY_EXT_LINEAR			11
#define FRI_DECAY_EXT_INVERSE			12
#define FRI_DECAY_EXT_INVSQUARE			13


#define FRI_SPOTLIGHT		"spotlight"
#define FRI_POINTLIGHT		"pointlight"
#define FRI_AMBIENTLIGHT	"ambientlight"
#define FRI_DISTANTLIGHT	"distantlight"

#define FRI_INTENSITY		"intensity"
#define FRI_LIGHTCOLOR		"lightcolor"		

#define FRI_FROM				"from"
#define FRI_TO					"to"
#define FRI_CONEANGLE			"coneangle"
#define FRI_CONEDELTAANGLE		"conedeltaangle"
#define FRI_BEAMDISTRIBUTION	"beamdistribution"

#define FRI_DECAY				"decay"
#define FRI_DECAYSTART			"decaystart"
#define FRI_DECAYEND			"decayend"
#define FRI_USEATTENUATION			"useattenuation"
#define FRI_ATTENUATIONSTART		"attenuationstart"
#define FRI_ATTENUATIONEND			"attenuationend"
#define FRI_USENEARATTENUATION		"usenearattenuation"
#define FRI_NEARATTENUATIONSTART	"nearattenuationstart"
#define FRI_NEARATTENUATIONEND		"nearattenuationend"
#define FRI_CONTRAST				"contrast"
#define FRI_DIFFSOFTEN				"diffsoften"
#define FRI_AFFECTDIFFUSE			"affectdiffuse"
#define FRI_AFFECTSPECULAR			"affectspecular"
#define FRI_AMBIENTONLY				"ambientonly"
#define FRI_CASTSHADOWS				"castshadows"
#define FRI_USEDIRECT				"usedirect"
#define FRI_USEINDIRECT				"useindirect"
#define FRI_LIGHTDIFFUSEMULT		"diffusemultiplier"
#define FRI_LIGHTSPECULARMULT		"specularmultiplier"
#define FRI_LIGHTEXCL_MODE			"lightexclusionmode"
#define FRI_LIGHTEXCL_RESET			"lightexclusionreset"
#define FRI_LIGHTEXCL_ENTRY			"lightexclusionentry"

#define FRI_OVERSHOOT				"overshoot"
#define FRI_LIGHTSHAPE				"shape"
#define FRI_LIGHTSHAPE_ASPECT		"shapeaspect"
#define FRI_AUTOPLACE				"autoplace"
#define FRI_AUTOSIZE				"autosize"

#define FRI_SHADOWTYPE				"shadowtype"
#define FRI_SHADOWDENSITY			"shadowdensity"
#define FRI_SHADOWCOLOR				"shadowcolor"
#define FRI_LIGHTAFFECTSHADOWCOLOR	"shadowlightaffectscolor"
#define FRI_ATMOSSHADOWS			"atmosphericshadows"
#define FRI_ATMOSSHADOWS_OPACITY	"atmosphericshadows_opacity"
#define FRI_ATMOSSHADOWS_COLORAMT	"atmosphericshadows_coloramount"

#define FRI_USECAUSTICS				"usecaustics"
#define FRI_PHONTON_ENERGY			"photonenergy"
#define FRI_PHONTON_FILTER			"photonfilter"
#define FRI_PHONTON_DECAY			"photondecay"
#define FRI_GIPHOTON_ENERGY			"giphotonenergy"
#define FRI_GIPHONTON_FILTER		"giphotonfilter"
#define FRI_NUM_PHOTONS				"numphotons"
#define FRI_NUM_GIPHOTONS			"numgiphotons"
#define FRI_NUM_VOLPHOTONS			"numvolumephotons"
#define FRI_CAUSTICS_DECAY			"causticsdecay"

#define FRI_MATTE					"matte"
#define FRI_PLASTIC					"plastic"
#define FRI_SHINYMETAL				"shinymetal"
#define FRI_PAINTEDPLASTIC			"paintedplastic"
#define FRI_USEFRESNEL				"use_fresnel"
#define FRI_USETOTALINTERNALREFLECTION "use_totalinternalreflection"
#define FRI_KA						"ka"
#define FRI_KD						"kd"
#define FRI_KO						"ko"
#define FRI_KS						"ks"
#define FRI_KR						"kr"
#define FRI_KT						"kt"
#define FRI_KSI						"ksi"
#define FRI_TEXTURENAME				"texturename"
#define FRI_COLOR					"color"
#define FRI_OPACITY					"opacity"
#define FRI_SPECULARCOLOR			"specularcolor"
#define FRI_REFLECTCOLOR			"reflection_color"
#define FRI_REFRACTCOLOR			"refraction_color"
#define FRI_REFLECTMAP				"reflectmap"
#define FRI_REFRACTMAP				"refractmap"
#define FRI_AMBIENT					"ambient"
#define FRI_BUMPMAPAMOUNT			"bumpmapamount"
#define FRI_BUMPMAP					"bumpmap"
#define FRI_SELFILLUMMAPAMOUNT		"selfillummapamount"
#define FRI_SELFILLUMMAP			"selfillummap"
#define FRI_DIFFUSEMAP				"diffusemap"
#define FRI_OPACITYMAP				"opacitymap"
#define FRI_NORMAL					"normal"
#define FRI_DIFFUSEMAPAMOUNT		"diffusemapamount"
#define FRI_REFRACTMAPAMOUNT		"refractmapamount"
#define FRI_REFLECTMAPAMOUNT		"reflectmapamount"
#define FRI_OPACITYMAPAMOUNT		"opacitymapamount"

#define FRI_TILING_MODE_NONE	0
#define FRI_TILING_MODE_TILING	1
#define FRI_TILING_MODE_MIRROR	2

#define FRI_SPECULARSOFTEN			"specularsoften"
#define FRI_SPECULARGLOSSINESS		"specularglossiness"
#define FRI_TILINGMODE				"tilingmode"
#define FRI_ST_OFFSET				"stoffset"
#define FRI_ST_TILING				"sttiling"
#define FRI_ST_ROTATION				"strotation"
#define FRI_2SIDED					"2sided"
#define FRI_SURFACE_OFFSET			"surface_offset"
#define FRI_SURFACE_SCALE			"surface_scale"
#define FRI_SURFACE_ROTATION		"surface_rotation"
#define FRI_DEPTHCUE				"depthcue"
#define FRI_FOG						"fog"
#define FRI_BUMPY					"bumpy"
#define FRI_MINDISTANCE				"mindistance"
#define FRI_MAXDISTANCE				"maxdistance"
#define FRI_BACKGROUND				"background"
#define FRI_DISTANCE				"distance"
#define FRI_RASTER					"raster"
#define FRI_SCREEN					"screen"
#define FRI_CAMERA					"camera"
#define FRI_WORLD					"world"
#define FRI_OBJECT					"object"
#define FRI_INSIDE					"inside"
#define FRI_OUTSIDE					"outside"
#define FRI_LH						"lh"
#define FRI_RH						"rh"
#define FRI_P						"P"
#define FRI_PZ						"Pz"
#define FRI_PW						"Pw"
#define FRI_N						"N"
#define FRI_NP						"Np"
#define FRI_NID						"Nid"
#define FRI_N_COMPRESSED			"Ncompressed"
#define FRI_N_PERFACE				"Nperface"
#define FRI_CS						"Cs"
#define FRI_OS						"Os"
#define FRI_S						"s"
#define FRI_T						"t"
#define FRI_ST						"st"
#define FRI_BILINEAR				"bilinear"
#define FRI_BICUBIC					"bicubic"
#define FRI_CUBIC					"cubic"
#define FRI_LINEAR					"linear"
#define FRI_PRIMITIVE				"primitive"
#define FRI_INTERSECTION			"intersection"
#define FRI_UNION					"union"
#define FRI_DIFFERENCE				"difference"
#define FRI_WRAP					"wrap" // check
#define FRI_NOWRAP					"nowrap"
#define FRI_PERIODIC				"periodic"
#define FRI_NONPERIODIC				"nonperiodic"
#define FRI_CLAMP					"clamp"
#define FRI_BLACK					"black"
#define FRI_IGNORE					"ignore"
#define FRI_PRINT					"print"
#define FRI_ABORT					"abort"
#define FRI_HANDLER					"handler"
#define FRI_CURRENT					"current"
#define FRI_EYE						"eye"
#define FRI_NDC						"ndc"



#define FRI_OPACITYNAME				"opacityname"
#define FRI_SMGROUP					"smgroup"

#ifdef __cplusplus
extern "C" {
#endif

BOOL fnLoadFinalRender();

 
extern __FRiOption FRiOption;
extern __FRiOptionV FRiOptionV;

extern __FRiBegin FRiBegin;
extern __FRiEnd FRiEnd;
extern __FRiFrameBegin FRiFrameBegin;
extern __FRiFrameEnd FRiFrameEnd;
extern __FRiWorldBegin FRiWorldBegin;
extern __FRiWorldEnd FRiWorldEnd;

extern __FRiFormat FRiFormat;
extern __FRiFrameAspectRatio FRiFrameAspectRatio;
extern __FRiProjection FRiProjection;
extern __FRiProjectionV FRiProjectionV;
extern __FRiScreenWindow FRiScreenWindow;
extern __FRiCropWindow FRiCropWindow;
extern __FRiClipping FRiClipping;
extern __FRiClippingPlane FRiClippingPlane;
extern __FRiDepthOfField FRiDepthOfField;
extern __FRiShutter FRiShutter;
extern __FRiDisplay FRiDisplay;
extern __FRiDisplayV FRiDisplayV;

extern __FRiExposure FRiExposure;
extern __FRiAAExposure FRiAAExposure;

extern __FRiQuantize FRiQuantize;
extern __FRiDither FRiDither;

extern __FRiPixelSamples FRiPixelSamples;
extern __FRiPixelVariance FRiPixelVariance;
extern __FRiPixelFilter FRiPixelFilter;
extern __FRiGaussianFilter FRiGaussianFilter;
extern __FRiBoxFilter FRiBoxFilter;
extern __FRiAreaFilter FRiAreaFilter;
extern __FRiTriangleFilter FRiTriangleFilter;
extern __FRiCatmullRomFilter FRiCatmullRomFilter;
extern __FRiSincFilter FRiSincFilter;
extern __FRiDiskFilter FRiDiskFilter;
extern __FRiBesselFilter FRiBesselFilter;

extern __FRiGetContext FRiGetContext;
extern __FRiContext FRiContext;

extern __FRiIdentity FRiIdentity;
extern __FRiTransform FRiTransform;
extern __FRiConcatTransform FRiConcatTransform;
extern __FRiPerspective FRiPerspective;
extern __FRiTranslate FRiTranslate;
extern __FRiRotate FRiRotate;
extern __FRiRotateQuat FRiRotateQuat;
extern __FRiScale FRiScale;
extern __FRiTransformBegin FRiTransformBegin;
extern __FRiTransformEnd FRiTransformEnd;
extern __FRiCoordinateSystem FRiCoordinateSystem;
extern __FRiCoordSysTransform FRiCoordSysTransform;
extern __FRiTransformPoints FRiTransformPoints;
extern __FRiOrientation FRiOrientation;
extern __FRiReverseOrientation FRiReverseOrientation;

extern __FRiLightSource FRiLightSource;
extern __FRiLightSourceV FRiLightSourceV;
extern __FRiIlluminate FRiIlluminate;
extern __FRiLightSetParams FRiLightSetParams;
extern __FRiLightSetParamsV FRiLightSetParamsV;

extern __FRiPolygon FRiPolygon;
extern __FRiPolygonV FRiPolygonV;
extern __FRiPointsPolygons FRiPointsPolygons;
extern __FRiPointsPolygonsV FRiPointsPolygonsV;

extern __FRiPointsTriangles FRiPointsTriangles;
extern __FRiPointsTrianglesV FRiPointsTrianglesV;
extern __FRiReplacePointsTrianglesV FRiReplacePointsTrianglesV;

extern __FRiSphere FRiSphere;
extern __FRiSphereV FRiSphereV;

extern __FRiGeometry FRiGeometry;
extern __FRiGeometryV FRiGeometryV;

extern __FRiSides FRiSides;

extern __FRiMapChannel FRiMapChannel;
extern __FRiUserVertChannel FRiUserVertChannel;
extern __FRiUserFaceChannel FRiUserFaceChannel;

extern __FRiAttributeBegin FRiAttributeBegin;
extern __FRiAttributeEnd FRiAttributeEnd;
extern __FRiAttribute FRiAttribute;
extern __FRiAttributeV FRiAttributeV;
extern __FRiSelectForBaking FRiSelectForBaking;

extern __FRiObjectBegin FRiObjectBegin;
extern __FRiObjectEnd FRiObjectEnd;
extern __FRiObjectInstance FRiObjectInstance;
extern __FRiObjectDelete FRiObjectDelete;

extern __FRiMotionBegin  FRiMotionBegin;
extern __FRiMotionBeginV FRiMotionBeginV;
extern __FRiMotionEnd FRiMotionEnd;
extern __FRiSetMotionSample FRiSetMotionSample;
extern __FRiSetMotionSampleV FRiSetMotionSampleV;

extern __FRiObjectUserData FRiObjectUserData;

extern __FRiColor FRiColor;
extern __FRiOpacity FRiOpacity;

extern __FRiSurface FRiSurface;
extern __FRiSurfaceV FRiSurfaceV;
extern __FRiSurfaceBegin FRiSurfaceBegin;
extern __FRiSurfaceEnd FRiSurfaceEnd;
extern __FRiSurfaceInstance FRiSurfaceInstance;
extern __FRiShader FRiShader;
extern __FRiShaderV FRiShaderV;
extern __FRiShaderInstance FRiShaderInstance;
extern __FRiShaderSet FRiShaderSet;
extern __FRiShaderSetV FRiShaderSetV;
extern __FRiShaderDelete FRiShaderDelete;
extern __FRiShaderOutputIdx FRiShaderOutputIdx;
extern __FRiAssignSurfaceShader FRiAssignSurfaceShader;
extern __FRiGetSurfaceShader FRiGetSurfaceShader;


extern __FRiDisplacement FRiDisplacement;
extern __FRiDisplacementV FRiDisplacementV;

extern __FRiAtmosphere FRiAtmosphere;
extern __FRiAtmosphereV FRiAtmosphereV;
extern __FRiInterior FRiInterior;
extern __FRiInteriorV FRiInteriorV;
extern __FRiExterior FRiExterior;
extern __FRiExteriorV FRiExteriorV;

extern __FRiEffect FRiEffect;
extern __FRiEffectV FRiEffectV;

extern __FRiRenderElement FRiRenderElement;
extern __FRiRenderElementV FRiRenderElementV;

extern __FRiSetPluginPath FRiSetPluginPath;
extern __FRiUnloadPlugins FRiUnloadPlugins;

#ifdef __cplusplus
}
#endif

#endif
#endif


// EOF