# 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 */