Added (hacky) shader support, but mdl should go out anyway
This commit is contained in:
parent
c4528b5109
commit
10f1a0023e
1 changed files with 59 additions and 45 deletions
104
gl_model.c
104
gl_model.c
|
@ -307,12 +307,17 @@ model_t *Mod_LoadModel (model_t *mod, qboolean crash)
|
||||||
Con_Printf("Loading q3 map\n");
|
Con_Printf("Loading q3 map\n");
|
||||||
ModQ3_LoadBrushModel(mod, buf);
|
ModQ3_LoadBrushModel(mod, buf);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
Sys_Error("Unknown model type\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
/*
|
||||||
default:
|
default:
|
||||||
is_q3map = false;
|
is_q3map = false;
|
||||||
Mod_LoadBrushModel (mod, buf);
|
Mod_LoadBrushModel (mod, buf);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
return mod;
|
return mod;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -365,6 +370,7 @@ byte *mod_base;
|
||||||
Mod_LoadTextures
|
Mod_LoadTextures
|
||||||
=================
|
=================
|
||||||
*/
|
*/
|
||||||
|
/*
|
||||||
void Mod_LoadTextures (lump_t *l)
|
void Mod_LoadTextures (lump_t *l)
|
||||||
{
|
{
|
||||||
int i, j, pixels, num, max, altmax;
|
int i, j, pixels, num, max, altmax;
|
||||||
|
@ -516,12 +522,12 @@ void Mod_LoadTextures (lump_t *l)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
Mod_LoadLighting
|
Mod_LoadLighting
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_LoadLighting (lump_t *l)
|
void Mod_LoadLighting (lump_t *l)
|
||||||
{
|
{
|
||||||
if (!l->filelen)
|
if (!l->filelen)
|
||||||
|
@ -533,12 +539,12 @@ void Mod_LoadLighting (lump_t *l)
|
||||||
memcpy (loadmodel->lightdata, mod_base + l->fileofs, l->filelen);
|
memcpy (loadmodel->lightdata, mod_base + l->fileofs, l->filelen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
Mod_LoadVisibility
|
Mod_LoadVisibility
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_LoadVisibility (lump_t *l)
|
void Mod_LoadVisibility (lump_t *l)
|
||||||
{
|
{
|
||||||
if (!l->filelen)
|
if (!l->filelen)
|
||||||
|
@ -550,12 +556,12 @@ void Mod_LoadVisibility (lump_t *l)
|
||||||
memcpy (loadmodel->visdata, mod_base + l->fileofs, l->filelen);
|
memcpy (loadmodel->visdata, mod_base + l->fileofs, l->filelen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
Mod_LoadEntities
|
Mod_LoadEntities
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_LoadEntities (lump_t *l)
|
void Mod_LoadEntities (lump_t *l)
|
||||||
{
|
{
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
@ -580,13 +586,13 @@ void Mod_LoadEntities (lump_t *l)
|
||||||
loadmodel->entities = Hunk_AllocName ( l->filelen, loadname);
|
loadmodel->entities = Hunk_AllocName ( l->filelen, loadname);
|
||||||
memcpy (loadmodel->entities, mod_base + l->fileofs, l->filelen);
|
memcpy (loadmodel->entities, mod_base + l->fileofs, l->filelen);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
Mod_LoadVertexes
|
Mod_LoadVertexes
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_LoadVertexes (lump_t *l)
|
void Mod_LoadVertexes (lump_t *l)
|
||||||
{
|
{
|
||||||
dvertex_t *in;
|
dvertex_t *in;
|
||||||
|
@ -609,12 +615,12 @@ void Mod_LoadVertexes (lump_t *l)
|
||||||
out->position[2] = LittleFloat (in->point[2]);
|
out->position[2] = LittleFloat (in->point[2]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
Mod_LoadSubmodels
|
Mod_LoadSubmodels
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_LoadSubmodels (lump_t *l)
|
void Mod_LoadSubmodels (lump_t *l)
|
||||||
{
|
{
|
||||||
dmodel_t *in;
|
dmodel_t *in;
|
||||||
|
@ -645,12 +651,12 @@ void Mod_LoadSubmodels (lump_t *l)
|
||||||
out->numfaces = LittleLong (in->numfaces);
|
out->numfaces = LittleLong (in->numfaces);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
Mod_LoadEdges
|
Mod_LoadEdges
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_LoadEdges (lump_t *l)
|
void Mod_LoadEdges (lump_t *l)
|
||||||
{
|
{
|
||||||
dedge_t *in;
|
dedge_t *in;
|
||||||
|
@ -672,12 +678,12 @@ void Mod_LoadEdges (lump_t *l)
|
||||||
out->v[1] = (unsigned short)LittleShort(in->v[1]);
|
out->v[1] = (unsigned short)LittleShort(in->v[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
Mod_LoadTexinfo
|
Mod_LoadTexinfo
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_LoadTexinfo (lump_t *l)
|
void Mod_LoadTexinfo (lump_t *l)
|
||||||
{
|
{
|
||||||
texinfo_t *in;
|
texinfo_t *in;
|
||||||
|
@ -738,14 +744,14 @@ void Mod_LoadTexinfo (lump_t *l)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
================
|
================
|
||||||
CalcSurfaceExtents
|
CalcSurfaceExtents
|
||||||
|
|
||||||
Fills in s->texturemins[] and s->extents[]
|
Fills in s->texturemins[] and s->extents[]
|
||||||
================
|
================
|
||||||
*/
|
*//*
|
||||||
void CalcSurfaceExtents (msurface_t *s)
|
void CalcSurfaceExtents (msurface_t *s)
|
||||||
{
|
{
|
||||||
float mins[2], maxs[2], val;
|
float mins[2], maxs[2], val;
|
||||||
|
@ -787,17 +793,17 @@ void CalcSurfaceExtents (msurface_t *s)
|
||||||
|
|
||||||
s->texturemins[i] = bmins[i] * 16;
|
s->texturemins[i] = bmins[i] * 16;
|
||||||
s->extents[i] = (bmaxs[i] - bmins[i]) * 16;
|
s->extents[i] = (bmaxs[i] - bmins[i]) * 16;
|
||||||
if ( !(tex->flags & TEX_SPECIAL) && s->extents[i] > 512 /* 256 */ )
|
if ( !(tex->flags & TEX_SPECIAL) && s->extents[i] > 512 )
|
||||||
Sys_Error ("Bad surface extents");
|
Sys_Error ("Bad surface extents");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
Mod_LoadFaces
|
Mod_LoadFaces
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_LoadFaces (lump_t *l)
|
void Mod_LoadFaces (lump_t *l)
|
||||||
{
|
{
|
||||||
dface_t *in;
|
dface_t *in;
|
||||||
|
@ -897,13 +903,13 @@ void Mod_LoadFaces (lump_t *l)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
Mod_SetParent
|
Mod_SetParent
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_SetParent (mnode_t *node, mnode_t *parent)
|
void Mod_SetParent (mnode_t *node, mnode_t *parent)
|
||||||
{
|
{
|
||||||
node->parent = parent;
|
node->parent = parent;
|
||||||
|
@ -912,12 +918,12 @@ void Mod_SetParent (mnode_t *node, mnode_t *parent)
|
||||||
Mod_SetParent (node->children[0], node);
|
Mod_SetParent (node->children[0], node);
|
||||||
Mod_SetParent (node->children[1], node);
|
Mod_SetParent (node->children[1], node);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
Mod_LoadNodes
|
Mod_LoadNodes
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_LoadNodes (lump_t *l)
|
void Mod_LoadNodes (lump_t *l)
|
||||||
{
|
{
|
||||||
int i, j, count, p;
|
int i, j, count, p;
|
||||||
|
@ -959,12 +965,12 @@ void Mod_LoadNodes (lump_t *l)
|
||||||
|
|
||||||
Mod_SetParent (loadmodel->nodes, NULL); // sets nodes and leafs
|
Mod_SetParent (loadmodel->nodes, NULL); // sets nodes and leafs
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
Mod_LoadLeafs
|
Mod_LoadLeafs
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_LoadLeafs (lump_t *l)
|
void Mod_LoadLeafs (lump_t *l)
|
||||||
{
|
{
|
||||||
dleaf_t *in;
|
dleaf_t *in;
|
||||||
|
@ -1052,12 +1058,12 @@ void Mod_LoadLeafs (lump_t *l)
|
||||||
out->index = i;
|
out->index = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
Mod_LoadClipnodes
|
Mod_LoadClipnodes
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_LoadClipnodes (lump_t *l)
|
void Mod_LoadClipnodes (lump_t *l)
|
||||||
{
|
{
|
||||||
dclipnode_t *in, *out;
|
dclipnode_t *in, *out;
|
||||||
|
@ -1104,14 +1110,14 @@ void Mod_LoadClipnodes (lump_t *l)
|
||||||
out->children[1] = LittleShort(in->children[1]);
|
out->children[1] = LittleShort(in->children[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
Mod_MakeHull0
|
Mod_MakeHull0
|
||||||
|
|
||||||
Deplicate the drawing hull structure as a clipping hull
|
Deplicate the drawing hull structure as a clipping hull
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_MakeHull0 (void)
|
void Mod_MakeHull0 (void)
|
||||||
{
|
{
|
||||||
mnode_t *in, *child;
|
mnode_t *in, *child;
|
||||||
|
@ -1143,12 +1149,12 @@ void Mod_MakeHull0 (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
Mod_LoadMarksurfaces
|
Mod_LoadMarksurfaces
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_LoadMarksurfaces (lump_t *l)
|
void Mod_LoadMarksurfaces (lump_t *l)
|
||||||
{
|
{
|
||||||
int i, j, count;
|
int i, j, count;
|
||||||
|
@ -1172,12 +1178,12 @@ void Mod_LoadMarksurfaces (lump_t *l)
|
||||||
out[i] = loadmodel->surfaces + j;
|
out[i] = loadmodel->surfaces + j;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
Mod_LoadSurfedges
|
Mod_LoadSurfedges
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_LoadSurfedges (lump_t *l)
|
void Mod_LoadSurfedges (lump_t *l)
|
||||||
{
|
{
|
||||||
int i, count;
|
int i, count;
|
||||||
|
@ -1195,13 +1201,13 @@ void Mod_LoadSurfedges (lump_t *l)
|
||||||
for ( i=0 ; i<count ; i++)
|
for ( i=0 ; i<count ; i++)
|
||||||
out[i] = LittleLong (in[i]);
|
out[i] = LittleLong (in[i]);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
Mod_LoadPlanes
|
Mod_LoadPlanes
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_LoadPlanes (lump_t *l)
|
void Mod_LoadPlanes (lump_t *l)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
@ -1234,7 +1240,7 @@ void Mod_LoadPlanes (lump_t *l)
|
||||||
out->signbits = bits;
|
out->signbits = bits;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
RadiusFromBounds
|
RadiusFromBounds
|
||||||
|
@ -1257,7 +1263,7 @@ float RadiusFromBounds (vec3_t mins, vec3_t maxs)
|
||||||
=================
|
=================
|
||||||
Mod_LoadBrushModel
|
Mod_LoadBrushModel
|
||||||
=================
|
=================
|
||||||
*/
|
*//*
|
||||||
void Mod_LoadBrushModel (model_t *mod, void *buffer)
|
void Mod_LoadBrushModel (model_t *mod, void *buffer)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
@ -1336,7 +1342,7 @@ void Mod_LoadBrushModel (model_t *mod, void *buffer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
==============================================================================
|
==============================================================================
|
||||||
|
|
||||||
|
@ -1548,7 +1554,7 @@ void *Mod_LoadAllSkins (int numskins, daliasskintype_t *pskintype)
|
||||||
Sys_Error ("Mod_LoadAliasModel: Invalid # of skins: %d\n", numskins);
|
Sys_Error ("Mod_LoadAliasModel: Invalid # of skins: %d\n", numskins);
|
||||||
|
|
||||||
s = pheader->skinwidth * pheader->skinheight;
|
s = pheader->skinwidth * pheader->skinheight;
|
||||||
|
|
||||||
for (i=0 ; i<numskins ; i++)
|
for (i=0 ; i<numskins ; i++)
|
||||||
{
|
{
|
||||||
if (pskintype->type == ALIAS_SKIN_SINGLE) {
|
if (pskintype->type == ALIAS_SKIN_SINGLE) {
|
||||||
|
@ -1560,6 +1566,7 @@ void *Mod_LoadAllSkins (int numskins, daliasskintype_t *pskintype)
|
||||||
pheader->texels[i] = texels - (byte *)pheader;
|
pheader->texels[i] = texels - (byte *)pheader;
|
||||||
memcpy (texels, (byte *)(pskintype + 1), s);
|
memcpy (texels, (byte *)(pskintype + 1), s);
|
||||||
// }
|
// }
|
||||||
|
/*
|
||||||
sprintf (name, "%s_%i", loadmodel->name, i);
|
sprintf (name, "%s_%i", loadmodel->name, i);
|
||||||
pheader->gl_texturenum[i][0] =
|
pheader->gl_texturenum[i][0] =
|
||||||
pheader->gl_texturenum[i][1] =
|
pheader->gl_texturenum[i][1] =
|
||||||
|
@ -1572,7 +1579,7 @@ void *Mod_LoadAllSkins (int numskins, daliasskintype_t *pskintype)
|
||||||
pheader->gl_lumatex[i][2] =
|
pheader->gl_lumatex[i][2] =
|
||||||
pheader->gl_lumatex[i][3] =
|
pheader->gl_lumatex[i][3] =
|
||||||
GL_LoadLuma (name, true);
|
GL_LoadLuma (name, true);
|
||||||
|
*/
|
||||||
pskintype = (daliasskintype_t *)((byte *)(pskintype+1) + s);
|
pskintype = (daliasskintype_t *)((byte *)(pskintype+1) + s);
|
||||||
} else {
|
} else {
|
||||||
// animating skin group. yuck.
|
// animating skin group. yuck.
|
||||||
|
@ -1591,21 +1598,23 @@ void *Mod_LoadAllSkins (int numskins, daliasskintype_t *pskintype)
|
||||||
pheader->texels[i] = texels - (byte *)pheader;
|
pheader->texels[i] = texels - (byte *)pheader;
|
||||||
memcpy (texels, (byte *)(pskintype), s);
|
memcpy (texels, (byte *)(pskintype), s);
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
sprintf (name, "%s_%i_%i", loadmodel->name, i,j);
|
sprintf (name, "%s_%i_%i", loadmodel->name, i,j);
|
||||||
pheader->gl_texturenum[i][j&3] =
|
pheader->gl_texturenum[i][j&3] =
|
||||||
GL_LoadTexture (name, pheader->skinwidth,
|
GL_LoadTexture (name, pheader->skinwidth,
|
||||||
pheader->skinheight, (byte *)(pskintype), true, false, true);
|
pheader->skinheight, (byte *)(pskintype), true, false, true);
|
||||||
pheader->gl_lumatex[i][j&3] = GL_LoadLuma(name, true);
|
pheader->gl_lumatex[i][j&3] = GL_LoadLuma(name, true);
|
||||||
|
*/
|
||||||
|
|
||||||
pskintype = (daliasskintype_t *)((byte *)(pskintype) + s);
|
pskintype = (daliasskintype_t *)((byte *)(pskintype) + s);
|
||||||
}
|
}
|
||||||
k = j;
|
k = j;
|
||||||
for (/* */; j < 4; j++)
|
//for (; j < 4; j++)
|
||||||
pheader->gl_texturenum[i][j&3] =
|
//pheader->gl_texturenum[i][j&3] =
|
||||||
pheader->gl_texturenum[i][j - k];
|
// pheader->gl_texturenum[i][j - k];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (void *)pskintype;
|
return (void *)pskintype;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1628,6 +1637,7 @@ void Mod_LoadAliasModel (model_t *mod, void *buffer)
|
||||||
daliasskintype_t *pskintype;
|
daliasskintype_t *pskintype;
|
||||||
int start, end, total;
|
int start, end, total;
|
||||||
alias3data_t *palias3;
|
alias3data_t *palias3;
|
||||||
|
char shadername[128];
|
||||||
|
|
||||||
start = Hunk_LowMark ();
|
start = Hunk_LowMark ();
|
||||||
|
|
||||||
|
@ -1705,6 +1715,10 @@ void Mod_LoadAliasModel (model_t *mod, void *buffer)
|
||||||
pskintype = (daliasskintype_t *)&pinmodel[1];
|
pskintype = (daliasskintype_t *)&pinmodel[1];
|
||||||
pskintype = Mod_LoadAllSkins (pheader->numskins, pskintype);
|
pskintype = Mod_LoadAllSkins (pheader->numskins, pskintype);
|
||||||
|
|
||||||
|
//load a hard coded skin
|
||||||
|
sprintf(shadername,"textures/skins/%s",loadname);
|
||||||
|
pheader->shader = GL_ShaderForName(shadername);
|
||||||
|
|
||||||
//
|
//
|
||||||
// load base s and t vertices
|
// load base s and t vertices
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in a new issue