xsi_miuserdata_defs.h

Go to the documentation of this file.
00001 
00008 #ifndef XSI_MIUSERDATA_DEFS_H
00009 #define XSI_MIUSERDATA_DEFS_H
00010 
00011 #include <shader.h>
00012 
00013 /* Transformation data ------------------------------------------*/
00014 
00015 #define XSIMR_INSTANCETRANSFORMDATA_LABEL   0x00004210
00016 #define XSIMR_INSTANCETRANSFORMDATA_VERSION 0x00000003
00017 
00018 #define XSIMR_SHADOWINSTANCE_LABEL          0xf6a209ca      // From random.org
00019 
00020 typedef enum
00021 {
00022     E3DIF_Ignore        = 0,
00023     E3DIF_Back          = 1,
00024     E3DIF_Front         = 2,
00025     E3DIF_Both          = 3
00026 } xsimrInstanceFaceFlags;
00027 
00028 #define miDONTCARE          (miCBoolean)2
00029 
00030 typedef struct
00031 {
00032     miCBoolean              is_instance;
00033 
00034     miCBoolean              primary_visible;
00035 
00036     miCBoolean              transparent_receive;
00037     miCBoolean              transparent_cast;
00038 
00039     miCBoolean              reflection_receive;
00040     miCBoolean              reflection_cast;
00041 
00042     miCBoolean              refraction_receive;
00043     miCBoolean              refraction_cast;
00044 
00045     miCBoolean              fg_receive;
00046     miCBoolean              fg_cast;
00047     miCBoolean              fg_visible;
00048 
00049     miCBoolean              gi_receive;
00050     miCBoolean              gi_cast;
00051     miCBoolean              gi_visible;
00052 
00053     miCBoolean              caustic_receive;
00054     miCBoolean              caustic_cast;
00055     miCBoolean              caustic_visible;
00056 
00057     miCBoolean              shadow_receive;
00058     miCBoolean              shadow_cast;
00059 
00060     xsimrInstanceFaceFlags  face;
00061 } xsimrInstanceFlags;
00062 
00063 typedef struct
00064 {
00065     miVector                scaling;
00066     miVector                translation;
00067     miQuaternion            rotation;
00068     miQuaternion            scale_orientation;
00069 } xsimrInstanceTransform;
00070 
00071 typedef struct
00072 {
00073     miUint4                 version;            // Version + Byteswap indicator
00074     miCBoolean              si_scaling;         // Perform SI scaling (as opposed to classical)
00075     miCBoolean              motionblur;         // Do motion blur
00076     xsimrInstanceFlags      flags;              // Instance's visibility flags
00077     xsimrInstanceTransform  open_transform;     // Instance's transform on shutter open
00078     xsimrInstanceTransform  close_transform;    // Instance's transform on shutter close (or if no motion blur)
00079 } xsimrInstanceTransformData;
00080 
00081 
00082 /* -----------------------------------------------------------*/
00105 #define XSIMR_LIGHTDATA_LABEL       2860411             
00115 typedef enum
00116 {
00117     XSIMR_LF_DIFFUSE            = 1 << 0,               
00118     XSIMR_LF_SPECULAR           = 1 << 1                
00119 } xsimrLightFlags;
00128 typedef struct
00129 {
00130     xsimrLightFlags             flags;   
00131 } xsimrLightData;
00135 /* -----------------------------------------------------------*/
00141 #define XSIMR_RENDERMAPDATA_LABEL       0x2C1ACA        
00146 /* Profile Curves ---------------------------------------------*/
00147 #define XSIMR_PROFILECURVEDATA_LABEL        0x9FDDD497; // random.org
00148 
00155 typedef enum
00156 {
00157     XSIMR_CE_CONSTANT           = 1,    
00158     XSIMR_CE_END_GRADIENT       = 2,    
00159     XSIMR_CE_CYCLE              = 3,    
00160     XSIMR_CE_CYCLE_RELATIVE     = 4     
00162 } xsimrCurveExtrapolation;
00178 typedef struct {
00179     xsimrCurveExtrapolation extrapolation_type;     
00180     miInteger               n_points;               
00181     miVector2d              points[ 1 ];            
00182 } xsimrProfileCurveData;
00183 
00184 
00185 /* Particle Shape -----------------------------------------------------------*/
00186 #include <shader.h>
00187 #include <geoshader.h>
00188 
00189 #define XSIMR_POINTCLOUDDATA_LABEL          0x613EC66E      // random.org
00190 
00191 #define XSIMR_POINTCLOUDDATA_VERSION        0x020000        // 2.0
00192 
00199 typedef enum
00200 {
00201     xsimrSHAPE_POINT,               
00202     xsimrSHAPE_SEGMENT,             
00203     xsimrSHAPE_DISC,                
00204     xsimrSHAPE_RECTANGLE,           
00205     xsimrSHAPE_SPHERE,              
00206     xsimrSHAPE_BOX,                 
00207     xsimrSHAPE_CYLINDER,            
00208     xsimrSHAPE_CAPSULE,             
00209     xsimrSHAPE_CONE,                
00210     xsimrSHAPE_BLOB,                
00211     xsimrNB_SIMPLE_SHAPES,          
00213     xsimrSHAPE_INSTANCE     = 128,  
00214 } xsimrParticleShapeType;
00322 typedef struct
00323 {
00324     xsimrParticleShapeType      type;
00325     miInteger                   instance_id;
00326 } xsimrParticleShape;
00327 
00334 typedef enum
00335 {
00336     xsimrATTRIBUTE_BOOLEAN,     
00337     xsimrATTRIBUTE_INTEGER,     
00338     xsimrATTRIBUTE_SCALAR,      
00339     xsimrATTRIBUTE_VECTOR2,     
00340     xsimrATTRIBUTE_VECTOR3,     
00341     xsimrATTRIBUTE_VECTOR4,     
00342     xsimrATTRIBUTE_QUATERNION,  
00343     xsimrATTRIBUTE_MATRIX33,    
00344     xsimrATTRIBUTE_MATRIX44,    
00345     xsimrATTRIBUTE_COLOR4,      
00346     xsimrATTRIBUTE_ROTATION,    
00347     xsimrATTRIBUTE_SHAPE,       
00348 } xsimrAttributeType;
00387 typedef struct
00388 {
00391     miTag           name;           // The attribute's name
00392 
00396     xsimrAttributeType  type;   // The attribute's data type
00397 
00407     miBoolean       constant;
00408 
00412     miUint          size;
00413 
00421     miTag           offsets;
00422 
00428     miTag           data;           // The userdata tag for the data blob.
00429 } xsimrAttributeData;
00430 
00431 
00448 typedef struct
00449 {
00450     miUint          version;            
00451     miUint          nb_particles;       
00452     miTag           positions;          
00454     int             i_data;             
00455     int             n_data;             
00457     xsimrAttributeData attributes[ 1 ]; 
00458 } xsimrPointCloudData;
00459 
00460 
00461 // Instance Marker
00462 
00472 #define XSIMR_POINTCLOUD_INDEX_LABEL        0x613EC66F      
00473 #define XSIMR_ATTRIBUTE_SHADER_KEY          "xsiATTR"       
00483 typedef struct
00484 {
00485     miUint          pc_index;   
00486 } xsimrPointCloudIndex;
00490 // Time mapping data for attribute time-controlled images
00499 typedef struct
00500 {
00501     miScalar            range_min;      
00502     miScalar            range_max;      
00503     miInteger           index;          
00504 } xsimrTimeMapValue;
00505 
00514 typedef struct
00515 {
00516     miInteger           n_time_map;         
00517     xsimrTimeMapValue   time_map[ 1 ];      
00518 } xsimrAttributeImageTimeMap;
00519 
00521 // Color Correction Look-up Table Definition
00522 
00523 #define XSIMR_CCLUT_GAMMA_LABEL     0x0A63EC03  // random.org
00524 #define XSIMR_CCLUT_1D_LABEL        0x0F2F2674  // random.org
00525 #define XSIMR_CCLUT_3D_LABEL        0x088F67E5  // random.org
00526 
00527 typedef struct
00528 {
00529     miScalar        r, g, b;
00530 } xsimrColor3;
00531 
00532 typedef struct
00533 {
00534     miScalar        red_gamma;
00535     miScalar        green_gamma;
00536     miScalar        blue_gamma;
00537 } xsimrCCLUTGamma;
00538 
00539 typedef struct
00540 {
00541     miScalar        from;
00542     miScalar        to;
00543 } xsimrCCLUTMapTuple;
00544 
00545 typedef struct
00546 {
00547     int             i_tuple;
00548     int             n_tuple;
00549     xsimrCCLUTMapTuple tuple[ 1 ];
00550 } xsimrCCLUTRangeMap;
00551 
00552 typedef struct
00553 {
00554     xsimrCCLUTRangeMap  red_range;
00555     xsimrCCLUTRangeMap  green_range;
00556     xsimrCCLUTRangeMap  blue_range;
00557 
00558     int             i_lut;
00559     int             n_lut;
00560     xsimrColor3     lut[ 1 ];
00561 } xsimrCCLUT1D;
00562 
00563 typedef struct
00564 {
00565     xsimrCCLUTRangeMap  red_range;
00566     xsimrCCLUTRangeMap  green_range;
00567     xsimrCCLUTRangeMap  blue_range;
00568 
00569     // red_size * green_size * blue_size == n_lut
00570     int             red_size;
00571     int             green_size;
00572     int             blue_size;
00573 
00574     int             i_lut;
00575     int             n_lut;
00576     xsimrColor3     lut[ 1 ];
00577 } xsimrCCLUT3D;
00578 
00579 #endif /* XSI_MIUSERDATA_DEFS_H */