ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/mesh.h
(Generate patch)

Comparing ray/src/common/mesh.h (file contents):
Revision 2.9 by schorsch, Mon Jul 14 22:23:59 2003 UTC vs.
Revision 2.14 by greg, Fri May 20 02:06:38 2011 UTC

# Line 13 | Line 13
13   extern "C" {
14   #endif
15  
16 < #ifndef BYTE
17 < #define BYTE    unsigned char
16 > #ifndef uby8
17 > #define uby8    unsigned char
18   #endif
19  
20   /*
# Line 30 | Line 30 | extern "C" {
30   *
31   * Vertex ID's are encoded using the bottom 8 bits of a 4-byte integer
32   * to index a vertex in a patch indicated by the 22 bits above (8-29).
33 < * For triangle ID's, the top 22 bits (10-31) indicate the patch, and
34 < * the bit 9 (0x200) indicates whether the triangle joins patches.
33 > * For triangle ID's, the top 22 bits (10-31) indicate the parent patch,
34 > * and the 10th bit (0x200) indicates whether the triangle joins patches.
35   * If not, then the bottom 9 bits index into the local PTri array.
36 < * If it's a joiner, then the 8th bit indicates whether the triangle joins
36 > * If it's a joiner, then the 9th bit indicates whether the triangle joins
37   * two patches, in which case the bottom 8 bits index the PJoin2 array.
38   * Otherwise, the bottom 8 bits index the PJoin1 array.
39   *
# Line 43 | Line 43 | extern "C" {
43   * a lot of effort, but it can reduce mesh storage by a factor of 3
44   * or more.  This is important, as the whole point is to model very
45   * complicated geometry with this structure, and memory is the main
46 < * limitation.
46 > * limitation.  (This representation is so efficient, that the octree
47 > * structure ends up dominating memory for most compiled meshes.)
48   */
49  
50   /* A triangle mesh patch */
# Line 52 | Line 53 | typedef struct {
53          int32           *norm;          /* vertex normals */
54          uint32          (*uv)[2];       /* vertex local coordinates */
55          struct PTri {
56 <                BYTE            v1, v2, v3;     /* local vertices */
56 >                uby8            v1, v2, v3;     /* local vertices */
57          }               *tri;           /* local triangles */
58          short           solemat;        /* sole material */
59          int16           *trimat;        /* or local material indices */
60          struct PJoin1 {
61                  int32           v1j;            /* non-local vertex */
62                  int16           mat;            /* material index */
63 <                BYTE            v2, v3;         /* local vertices */
63 >                uby8            v2, v3;         /* local vertices */
64          }               *j1tri;         /* joiner triangles */
65          struct PJoin2 {
66                  int32           v1j, v2j;       /* non-local vertices */
67                  int16           mat;            /* material index */
68 <                BYTE            v3;             /* local vertex */
68 >                uby8            v3;             /* local vertex */
69          }               *j2tri;         /* double joiner triangles */
70          short           nverts;         /* vertex count */
71 <        short           ntris;          /* triangle count */
71 >        short           ntris;          /* local triangle count */
72          short           nj1tris;        /* joiner triangle count */
73          short           nj2tris;        /* double joiner triangle count */
74   } MESHPATCH;
# Line 81 | Line 82 | typedef struct mesh {
82          RREAL           uvlim[2][2];    /* local coordinate extrema */
83          OBJECT          mat0;           /* base material index */
84          OBJECT          nmats;          /* number of materials */
85 <        MESHPATCH       *patch;         /* mesh patch list */
85 >        MESHPATCH       *patch;         /* allocated mesh patch array */
86          int             npatches;       /* number of mesh patches */
87          OBJREC          *pseudo;        /* mesh pseudo objects */
88          LUTAB           lut;            /* vertex lookup table */
# Line 136 | Line 137 | extern void    writemesh(MESH *mp, FILE *fp);
137   }
138   #endif
139   #endif /* _RAD_MESH_H_ */
139

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines