thirtyflightsofloving/renderer/r_alias.h

130 lines
2.7 KiB
C

/*
===========================================================================
Copyright (C) 1997-2001 Id Software, Inc.
This file is part of Quake 2 source code.
Quake 2 source code is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
Quake 2 source code is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Quake 2 source code; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
===========================================================================
*/
//
// MD3 representation in memory
// Vic code with a few my changes
// -Harven
//
typedef struct maliascoord_s
{
vec2_t st;
} maliascoord_t;
typedef struct maliasvertex_s
{
short xyz[3];
byte normal[2];
byte lightnormalindex; // used for ye olde quantized normal shading
} maliasvertex_t;
typedef struct
{
vec3_t mins;
vec3_t maxs;
vec3_t scale;
vec3_t translate;
float radius;
} maliasframe_t;
typedef struct
{
char name[MD3_MAX_PATH];
dorientation_t orient;
} maliastag_t;
typedef enum {
WAVEFORM_SIN,
WAVEFORM_TRIANGLE,
WAVEFORM_SQUARE,
WAVEFORM_SAWTOOTH,
WAVEFORM_INVERSESAWTOOTH,
WAVEFORM_NOISE
} waveForm_t;
typedef struct
{
waveForm_t type;
float params[4];
} waveFunc_t;
typedef struct
{
qboolean twosided;
qboolean alphatest;
qboolean fullbright;
qboolean nodraw;
qboolean noshadow;
qboolean nodiffuse;
float envmap;
float basealpha;
float translate_x;
float translate_y;
float rotate;
float scale_x;
float scale_y;
waveFunc_t stretch;
waveFunc_t turb;
float scroll_x;
float scroll_y;
qboolean blend;
GLenum blendfunc_src;
GLenum blendfunc_dst;
waveFunc_t glow;
} renderparms_t;
typedef struct
{
char name[MD3_MAX_PATH];
char glowname[MD3_MAX_PATH];
image_t *glowimage;
renderparms_t renderparms;
//int shader;
} maliasskin_t;
typedef struct
{
int num_verts;
char name[MD3_MAX_PATH];
maliasvertex_t *vertexes;
maliascoord_t *stcoords;
int num_tris;
index_t *indexes;
int *trneighbors;
int num_skins;
maliasskin_t *skins;
} maliasmesh_t;
typedef struct maliasmodel_s
{
int num_frames;
maliasframe_t *frames;
int num_tags;
maliastag_t *tags;
int num_meshes;
maliasmesh_t *meshes;
} maliasmodel_t;