brender-v1.3.2/ddi_inc/formats.h
2022-05-03 13:10:51 -07:00

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