173 lines
5 KiB
C
173 lines
5 KiB
C
/*
|
|
* Copyright (c) 1993-1995 Argonaut Technologies Limited. All rights reserved.
|
|
*
|
|
* $Id: formats.h 1.4 1998/09/21 14:50:54 johng Exp $
|
|
* $Locker: $
|
|
*
|
|
* All the geometry formats understood by the renderer
|
|
* This internal format is being generally release to remove the need for
|
|
* for duplicate copies of model data when accessing is required.
|
|
*/
|
|
#ifndef _FORMATS_H_
|
|
#define _FORMATS_H_
|
|
|
|
// This was for restricting our evaluation version.
|
|
#if EVAL
|
|
#define PAD_SIZE (2048-32)
|
|
#endif
|
|
|
|
/**
|
|
** Generic vertex structure used for geometry formats
|
|
**/
|
|
#if 0
|
|
struct fmt_vertex {
|
|
br_vector3 p; /* Point in model space */
|
|
br_vector2 map; /* Mapping coordinates */
|
|
br_vector3 n; /* Surface normal at vertex */
|
|
#if EVAL
|
|
br_int_8 _pad[PAD_SIZE];
|
|
#endif
|
|
};
|
|
|
|
struct fmt_vertex_x {
|
|
br_vector3_x p; /* Point in model space */
|
|
br_vector2_x map; /* Mapping coordinates */
|
|
br_vector3_x n; /* Surface normal at vertex */
|
|
#if EVAL
|
|
br_int_8 _pad[PAD_SIZE];
|
|
#endif
|
|
};
|
|
|
|
struct fmt_vertex_f {
|
|
br_vector3_f p; /* Point in model space */
|
|
br_vector2_f map; /* Mapping coordinates */
|
|
br_vector3_f n; /* Surface normal at vertex */
|
|
#if EVAL
|
|
br_int_8 _pad[PAD_SIZE];
|
|
#endif
|
|
};
|
|
/**
|
|
** Version 1.1 prepared model format
|
|
**/
|
|
struct v11face {
|
|
br_uint_16 vertices[3]; /* Vertices around face */
|
|
br_uint_16 edges[3]; /* Edges around face */
|
|
br_vector4 eqn; /* Plane equation as a 4 vector (Nx,Ny,Nz,D)*/
|
|
};
|
|
|
|
struct v11face_x {
|
|
br_uint_16 vertices[3]; /* Vertices around face */
|
|
br_uint_16 edges[3]; /* Edges around face */
|
|
br_vector4_x eqn; /* Plane equation as a 4 vector (Nx,Ny,Nz,D)*/
|
|
};
|
|
|
|
struct v11face_f {
|
|
br_uint_16 vertices[3]; /* Vertices around face */
|
|
br_uint_16 edges[3]; /* Edges around face */
|
|
br_vector4_f eqn; /* Plane equation as a 4 vector (Nx,Ny,Nz,D)*/
|
|
};
|
|
#endif
|
|
|
|
// This groups together all the faces with the same material.
|
|
struct v11group {
|
|
void *stored; /* Group material (or NULL) */
|
|
|
|
// struct v11face *faces; /* faces in group */
|
|
br_vector3_u16 *vertex_numbers;
|
|
br_vector3_u16 *edges;
|
|
br_vector4 * eqn;
|
|
br_colour *face_colours; /* Colour for geometry */
|
|
br_uint_16 *face_user; /* Per face user data */
|
|
br_uint_8 *face_flags; /* Per face flags */
|
|
|
|
// struct fmt_vertex *vertices; /* vertices in group */
|
|
br_vector3 * position;
|
|
br_vector2 * map;
|
|
br_vector3 * normal;
|
|
br_colour *vertex_colours; /* Colour for geometry */
|
|
br_uint_16 *vertex_user; /* Per vertex user data */
|
|
|
|
br_uint_16 nfaces; /* Number of faces in this group */
|
|
br_uint_16 nvertices; /* Number of vertices in this group */
|
|
br_uint_16 nedges; /* Number of edges in this group */
|
|
};
|
|
|
|
#if 0
|
|
struct v11group_x {
|
|
void *stored; /* Group material (or NULL) */
|
|
|
|
struct v11face_x *faces; /* faces in group */
|
|
br_colour *face_colours; /* Colour for geometry */
|
|
br_uint_16 *face_user; /* Per face user data */
|
|
br_uint_8 *face_flags; /* Per face flags */
|
|
|
|
struct fmt_vertex_x *vertices; /* vertices in group */
|
|
br_colour *vertex_colours; /* Colour for geometry */
|
|
br_uint_16 *vertex_user; /* Per vertex user data */
|
|
|
|
br_uint_16 nfaces; /* Number of faces in this group */
|
|
br_uint_16 nvertices; /* Number of vertices in this group */
|
|
br_uint_16 nedges; /* Number of edges in this group */
|
|
};
|
|
|
|
struct v11group_f {
|
|
void *stored; /* Group material (or NULL) */
|
|
|
|
struct v11face_f *faces; /* faces in group */
|
|
br_colour *face_colours; /* Colour for geometry */
|
|
br_uint_16 *face_user; /* Per face user data */
|
|
br_uint_8 *face_flags; /* Per face flags */
|
|
|
|
struct fmt_vertex_f *vertices; /* vertices in group */
|
|
br_colour *vertex_colours; /* Colour for geometry */
|
|
br_uint_16 *vertex_user; /* Per vertex user data */
|
|
|
|
br_uint_16 nfaces; /* Number of faces in this group */
|
|
br_uint_16 nvertices; /* Number of vertices in this group */
|
|
br_uint_16 nedges; /* Number of edges in this group */
|
|
};
|
|
#endif
|
|
struct v11model {
|
|
br_size_t size;
|
|
br_uint_32 flags;
|
|
br_uint_16 ngroups;
|
|
br_vector3 pivot;
|
|
|
|
struct v11group *groups;
|
|
|
|
br_bounds bounds;
|
|
br_scalar radius;
|
|
br_vector3 centre;
|
|
br_scalar centred_radius;
|
|
};
|
|
|
|
#if 0
|
|
struct v11model_x {
|
|
br_size_t size;
|
|
br_uint_32 flags;
|
|
br_uint_16 ngroups;
|
|
br_vector3_x pivot;
|
|
|
|
struct v11group_x *groups;
|
|
|
|
br_bounds3_x bounds;
|
|
br_fixed_ls radius;
|
|
br_vector3_x centre;
|
|
br_fixed_ls centred_radius;
|
|
};
|
|
|
|
struct v11model_f {
|
|
br_size_t size;
|
|
br_uint_32 flags;
|
|
br_uint_16 ngroups;
|
|
br_vector3_f pivot;
|
|
|
|
struct v11group_f *groups;
|
|
|
|
br_bounds3_f bounds;
|
|
float radius;
|
|
br_vector3_f centre;
|
|
float centred_radius;
|
|
};
|
|
#endif
|
|
#endif
|