mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-10 07:12:07 +00:00
gl1,gl3,gl4,vk: sync R_LerpVerts
This commit is contained in:
parent
06ee407efa
commit
2a8e84ccd8
8 changed files with 95 additions and 163 deletions
5
Makefile
5
Makefile
|
@ -1038,6 +1038,7 @@ REFGL1_OBJS_ := \
|
||||||
src/client/refresh/gl1/gl1_surf.o \
|
src/client/refresh/gl1/gl1_surf.o \
|
||||||
src/client/refresh/gl1/gl1_warp.o \
|
src/client/refresh/gl1/gl1_warp.o \
|
||||||
src/client/refresh/gl1/gl1_sdl.o \
|
src/client/refresh/gl1/gl1_sdl.o \
|
||||||
|
src/client/refresh/files/mesh.o \
|
||||||
src/client/refresh/files/light.o \
|
src/client/refresh/files/light.o \
|
||||||
src/client/refresh/files/surf.o \
|
src/client/refresh/files/surf.o \
|
||||||
src/client/refresh/files/models.o \
|
src/client/refresh/files/models.o \
|
||||||
|
@ -1074,6 +1075,7 @@ REFGL3_OBJS_ := \
|
||||||
src/client/refresh/gl3/gl3_surf.o \
|
src/client/refresh/gl3/gl3_surf.o \
|
||||||
src/client/refresh/gl3/gl3_warp.o \
|
src/client/refresh/gl3/gl3_warp.o \
|
||||||
src/client/refresh/gl3/gl3_shaders.o \
|
src/client/refresh/gl3/gl3_shaders.o \
|
||||||
|
src/client/refresh/files/mesh.o \
|
||||||
src/client/refresh/files/light.o \
|
src/client/refresh/files/light.o \
|
||||||
src/client/refresh/files/surf.o \
|
src/client/refresh/files/surf.o \
|
||||||
src/client/refresh/files/models.o \
|
src/client/refresh/files/models.o \
|
||||||
|
@ -1116,6 +1118,7 @@ REFGL4_OBJS_ := \
|
||||||
src/client/refresh/gl4/gl4_surf.o \
|
src/client/refresh/gl4/gl4_surf.o \
|
||||||
src/client/refresh/gl4/gl4_warp.o \
|
src/client/refresh/gl4/gl4_warp.o \
|
||||||
src/client/refresh/gl4/gl4_shaders.o \
|
src/client/refresh/gl4/gl4_shaders.o \
|
||||||
|
src/client/refresh/files/mesh.o \
|
||||||
src/client/refresh/files/light.o \
|
src/client/refresh/files/light.o \
|
||||||
src/client/refresh/files/surf.o \
|
src/client/refresh/files/surf.o \
|
||||||
src/client/refresh/files/models.o \
|
src/client/refresh/files/models.o \
|
||||||
|
@ -1160,6 +1163,7 @@ REFSOFT_OBJS_ := \
|
||||||
src/client/refresh/soft/sw_sprite.o \
|
src/client/refresh/soft/sw_sprite.o \
|
||||||
src/client/refresh/soft/sw_surf.o \
|
src/client/refresh/soft/sw_surf.o \
|
||||||
src/client/refresh/soft/sw_warp.o \
|
src/client/refresh/soft/sw_warp.o \
|
||||||
|
src/client/refresh/files/mesh.o \
|
||||||
src/client/refresh/files/light.o \
|
src/client/refresh/files/light.o \
|
||||||
src/client/refresh/files/surf.o \
|
src/client/refresh/files/surf.o \
|
||||||
src/client/refresh/files/models.o \
|
src/client/refresh/files/models.o \
|
||||||
|
@ -1203,6 +1207,7 @@ REFVK_OBJS_ := \
|
||||||
src/client/refresh/vk/vk_warp.o \
|
src/client/refresh/vk/vk_warp.o \
|
||||||
src/client/refresh/vk/vk_util.o \
|
src/client/refresh/vk/vk_util.o \
|
||||||
src/client/refresh/vk/volk/volk.o \
|
src/client/refresh/vk/volk/volk.o \
|
||||||
|
src/client/refresh/files/mesh.o \
|
||||||
src/client/refresh/files/light.o \
|
src/client/refresh/files/light.o \
|
||||||
src/client/refresh/files/surf.o \
|
src/client/refresh/files/surf.o \
|
||||||
src/client/refresh/files/models.o \
|
src/client/refresh/files/models.o \
|
||||||
|
|
63
src/client/refresh/files/mesh.c
Normal file
63
src/client/refresh/files/mesh.c
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 1997-2001 Id Software, Inc.
|
||||||
|
*
|
||||||
|
* This program 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.
|
||||||
|
*
|
||||||
|
* This program 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 this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
* 02111-1307, USA.
|
||||||
|
*
|
||||||
|
* =======================================================================
|
||||||
|
*
|
||||||
|
* Mesh logic
|
||||||
|
*
|
||||||
|
* =======================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "../ref_shared.h"
|
||||||
|
|
||||||
|
static float r_avertexnormals[NUMVERTEXNORMALS][3] = {
|
||||||
|
#include "../constants/anorms.h"
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
R_LerpVerts(qboolean powerUpEffect, int nverts, dtrivertx_t *v, dtrivertx_t *ov,
|
||||||
|
dtrivertx_t *verts, float *lerp, const float move[3],
|
||||||
|
const float frontv[3], const float backv[3])
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (powerUpEffect)
|
||||||
|
{
|
||||||
|
for (i = 0; i < nverts; i++, v++, ov++, lerp += 4)
|
||||||
|
{
|
||||||
|
float *normal = r_avertexnormals[verts[i].lightnormalindex];
|
||||||
|
|
||||||
|
lerp[0] = move[0] + ov->v[0] * backv[0] + v->v[0] * frontv[0] +
|
||||||
|
normal[0] * POWERSUIT_SCALE;
|
||||||
|
lerp[1] = move[1] + ov->v[1] * backv[1] + v->v[1] * frontv[1] +
|
||||||
|
normal[1] * POWERSUIT_SCALE;
|
||||||
|
lerp[2] = move[2] + ov->v[2] * backv[2] + v->v[2] * frontv[2] +
|
||||||
|
normal[2] * POWERSUIT_SCALE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (i = 0; i < nverts; i++, v++, ov++, lerp += 4)
|
||||||
|
{
|
||||||
|
lerp[0] = move[0] + ov->v[0] * backv[0] + v->v[0] * frontv[0];
|
||||||
|
lerp[1] = move[1] + ov->v[1] * backv[1] + v->v[1] * frontv[1];
|
||||||
|
lerp[2] = move[2] + ov->v[2] * backv[2] + v->v[2] * frontv[2];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -41,10 +41,14 @@ R_TextureAnimation(const entity_t *currententity, const mtexinfo_t *tex)
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
if (!tex->next)
|
if (!tex->next)
|
||||||
|
{
|
||||||
return tex->image;
|
return tex->image;
|
||||||
|
}
|
||||||
|
|
||||||
if (!currententity)
|
if (!currententity)
|
||||||
|
{
|
||||||
return tex->image;
|
return tex->image;
|
||||||
|
}
|
||||||
|
|
||||||
c = currententity->frame % tex->numframes;
|
c = currententity->frame % tex->numframes;
|
||||||
while (c && tex)
|
while (c && tex)
|
||||||
|
@ -63,12 +67,16 @@ R_AreaVisible(const byte *areabits, mleaf_t *pleaf)
|
||||||
|
|
||||||
// check for door connected areas
|
// check for door connected areas
|
||||||
if (!areabits)
|
if (!areabits)
|
||||||
|
{
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
area = pleaf->area;
|
area = pleaf->area;
|
||||||
|
|
||||||
if ((areabits[area >> 3] & (1 << (area & 7))))
|
if ((areabits[area >> 3] & (1 << (area & 7))))
|
||||||
|
{
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return false; // not visible
|
return false; // not visible
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,10 +29,6 @@
|
||||||
#define NUMVERTEXNORMALS 162
|
#define NUMVERTEXNORMALS 162
|
||||||
#define SHADEDOT_QUANT 16
|
#define SHADEDOT_QUANT 16
|
||||||
|
|
||||||
static float r_avertexnormals[NUMVERTEXNORMALS][3] = {
|
|
||||||
#include "../constants/anorms.h"
|
|
||||||
};
|
|
||||||
|
|
||||||
/* precalculated dot products for quantized angles */
|
/* precalculated dot products for quantized angles */
|
||||||
static float r_avertexnormal_dots[SHADEDOT_QUANT][256] = {
|
static float r_avertexnormal_dots[SHADEDOT_QUANT][256] = {
|
||||||
#include "../constants/anormtab.h"
|
#include "../constants/anormtab.h"
|
||||||
|
@ -44,41 +40,6 @@ vec3_t shadevector;
|
||||||
float shadelight[3];
|
float shadelight[3];
|
||||||
float *shadedots = r_avertexnormal_dots[0];
|
float *shadedots = r_avertexnormal_dots[0];
|
||||||
|
|
||||||
static void
|
|
||||||
R_LerpVerts(entity_t *currententity, int nverts, dtrivertx_t *v, dtrivertx_t *ov,
|
|
||||||
dtrivertx_t *verts, float *lerp, const float move[3],
|
|
||||||
const float frontv[3], const float backv[3])
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (currententity->flags &
|
|
||||||
(RF_SHELL_RED | RF_SHELL_GREEN |
|
|
||||||
RF_SHELL_BLUE | RF_SHELL_DOUBLE |
|
|
||||||
RF_SHELL_HALF_DAM))
|
|
||||||
{
|
|
||||||
for (i = 0; i < nverts; i++, v++, ov++, lerp += 4)
|
|
||||||
{
|
|
||||||
float *normal = r_avertexnormals[verts[i].lightnormalindex];
|
|
||||||
|
|
||||||
lerp[0] = move[0] + ov->v[0] * backv[0] + v->v[0] * frontv[0] +
|
|
||||||
normal[0] * POWERSUIT_SCALE;
|
|
||||||
lerp[1] = move[1] + ov->v[1] * backv[1] + v->v[1] * frontv[1] +
|
|
||||||
normal[1] * POWERSUIT_SCALE;
|
|
||||||
lerp[2] = move[2] + ov->v[2] * backv[2] + v->v[2] * frontv[2] +
|
|
||||||
normal[2] * POWERSUIT_SCALE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (i = 0; i < nverts; i++, v++, ov++, lerp += 4)
|
|
||||||
{
|
|
||||||
lerp[0] = move[0] + ov->v[0] * backv[0] + v->v[0] * frontv[0];
|
|
||||||
lerp[1] = move[1] + ov->v[1] * backv[1] + v->v[1] * frontv[1];
|
|
||||||
lerp[2] = move[2] + ov->v[2] * backv[2] + v->v[2] * frontv[2];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
R_DrawAliasDrawCommands(entity_t *currententity, int *order, int *order_end,
|
R_DrawAliasDrawCommands(entity_t *currententity, int *order, int *order_end,
|
||||||
float alpha, dtrivertx_t *verts)
|
float alpha, dtrivertx_t *verts)
|
||||||
|
@ -227,6 +188,9 @@ R_DrawAliasFrameLerp(entity_t *currententity, dmdl_t *paliashdr, float backlerp)
|
||||||
float *lerp;
|
float *lerp;
|
||||||
int num_mesh_nodes;
|
int num_mesh_nodes;
|
||||||
short *mesh_nodes;
|
short *mesh_nodes;
|
||||||
|
qboolean colorOnly = 0 != (currententity->flags &
|
||||||
|
(RF_SHELL_RED | RF_SHELL_GREEN | RF_SHELL_BLUE | RF_SHELL_DOUBLE |
|
||||||
|
RF_SHELL_HALF_DAM));
|
||||||
|
|
||||||
frame = (daliasframe_t *)((byte *)paliashdr + paliashdr->ofs_frames
|
frame = (daliasframe_t *)((byte *)paliashdr + paliashdr->ofs_frames
|
||||||
+ currententity->frame * paliashdr->framesize);
|
+ currententity->frame * paliashdr->framesize);
|
||||||
|
@ -247,9 +211,7 @@ R_DrawAliasFrameLerp(entity_t *currententity, dmdl_t *paliashdr, float backlerp)
|
||||||
alpha = 1.0;
|
alpha = 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currententity->flags &
|
if (colorOnly)
|
||||||
(RF_SHELL_RED | RF_SHELL_GREEN | RF_SHELL_BLUE | RF_SHELL_DOUBLE |
|
|
||||||
RF_SHELL_HALF_DAM))
|
|
||||||
{
|
{
|
||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
}
|
}
|
||||||
|
@ -279,7 +241,7 @@ R_DrawAliasFrameLerp(entity_t *currententity, dmdl_t *paliashdr, float backlerp)
|
||||||
|
|
||||||
lerp = s_lerped[0];
|
lerp = s_lerped[0];
|
||||||
|
|
||||||
R_LerpVerts(currententity, paliashdr->num_xyz, v, ov, verts, lerp, move, frontv, backv);
|
R_LerpVerts(colorOnly, paliashdr->num_xyz, v, ov, verts, lerp, move, frontv, backv);
|
||||||
|
|
||||||
num_mesh_nodes = (paliashdr->ofs_skins - sizeof(dmdl_t)) / sizeof(short) / 2;
|
num_mesh_nodes = (paliashdr->ofs_skins - sizeof(dmdl_t)) / sizeof(short) / 2;
|
||||||
mesh_nodes = (short *)((char*)paliashdr + sizeof(dmdl_t));
|
mesh_nodes = (short *)((char*)paliashdr + sizeof(dmdl_t));
|
||||||
|
@ -303,9 +265,7 @@ R_DrawAliasFrameLerp(entity_t *currententity, dmdl_t *paliashdr, float backlerp)
|
||||||
alpha, verts);
|
alpha, verts);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currententity->flags &
|
if (colorOnly)
|
||||||
(RF_SHELL_RED | RF_SHELL_GREEN | RF_SHELL_BLUE |
|
|
||||||
RF_SHELL_DOUBLE | RF_SHELL_HALF_DAM))
|
|
||||||
{
|
{
|
||||||
glEnable(GL_TEXTURE_2D);
|
glEnable(GL_TEXTURE_2D);
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,10 +32,6 @@
|
||||||
#define NUMVERTEXNORMALS 162
|
#define NUMVERTEXNORMALS 162
|
||||||
#define SHADEDOT_QUANT 16
|
#define SHADEDOT_QUANT 16
|
||||||
|
|
||||||
static float r_avertexnormals[NUMVERTEXNORMALS][3] = {
|
|
||||||
#include "../constants/anorms.h"
|
|
||||||
};
|
|
||||||
|
|
||||||
/* precalculated dot products for quantized angles */
|
/* precalculated dot products for quantized angles */
|
||||||
static float r_avertexnormal_dots[SHADEDOT_QUANT][256] = {
|
static float r_avertexnormal_dots[SHADEDOT_QUANT][256] = {
|
||||||
#include "../constants/anormtab.h"
|
#include "../constants/anormtab.h"
|
||||||
|
@ -71,38 +67,6 @@ GL3_ShutdownMeshes(void)
|
||||||
da_free(shadowModels);
|
da_free(shadowModels);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
LerpVerts(qboolean powerUpEffect, int nverts, dtrivertx_t *v, dtrivertx_t *ov,
|
|
||||||
dtrivertx_t *verts, float *lerp, float move[3],
|
|
||||||
float frontv[3], float backv[3])
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (powerUpEffect)
|
|
||||||
{
|
|
||||||
for (i = 0; i < nverts; i++, v++, ov++, lerp += 4)
|
|
||||||
{
|
|
||||||
float *normal = r_avertexnormals[verts[i].lightnormalindex];
|
|
||||||
|
|
||||||
lerp[0] = move[0] + ov->v[0] * backv[0] + v->v[0] * frontv[0] +
|
|
||||||
normal[0] * POWERSUIT_SCALE;
|
|
||||||
lerp[1] = move[1] + ov->v[1] * backv[1] + v->v[1] * frontv[1] +
|
|
||||||
normal[1] * POWERSUIT_SCALE;
|
|
||||||
lerp[2] = move[2] + ov->v[2] * backv[2] + v->v[2] * frontv[2] +
|
|
||||||
normal[2] * POWERSUIT_SCALE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (i = 0; i < nverts; i++, v++, ov++, lerp += 4)
|
|
||||||
{
|
|
||||||
lerp[0] = move[0] + ov->v[0] * backv[0] + v->v[0] * frontv[0];
|
|
||||||
lerp[1] = move[1] + ov->v[1] * backv[1] + v->v[1] * frontv[1];
|
|
||||||
lerp[2] = move[2] + ov->v[2] * backv[2] + v->v[2] * frontv[2];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
DrawAliasFrameLerpCommands(dmdl_t *paliashdr, entity_t* entity, vec3_t shadelight,
|
DrawAliasFrameLerpCommands(dmdl_t *paliashdr, entity_t* entity, vec3_t shadelight,
|
||||||
int *order, int *order_end, float* shadedots, float alpha, qboolean colorOnly,
|
int *order, int *order_end, float* shadedots, float alpha, qboolean colorOnly,
|
||||||
|
@ -329,7 +293,7 @@ DrawAliasFrameLerp(dmdl_t *paliashdr, entity_t* entity, vec3_t shadelight)
|
||||||
|
|
||||||
lerp = s_lerped[0];
|
lerp = s_lerped[0];
|
||||||
|
|
||||||
LerpVerts(colorOnly, paliashdr->num_xyz, v, ov, verts, lerp, move, frontv, backv);
|
R_LerpVerts(colorOnly, paliashdr->num_xyz, v, ov, verts, lerp, move, frontv, backv);
|
||||||
|
|
||||||
YQ2_STATIC_ASSERT(sizeof(gl3_alias_vtx_t) == 9*sizeof(GLfloat), "invalid gl3_alias_vtx_t size");
|
YQ2_STATIC_ASSERT(sizeof(gl3_alias_vtx_t) == 9*sizeof(GLfloat), "invalid gl3_alias_vtx_t size");
|
||||||
|
|
||||||
|
@ -516,7 +480,7 @@ DrawAliasShadow(gl3_shadowinfo_t* shadowInfo)
|
||||||
|
|
||||||
// false: don't extrude vertices for powerup - this means the powerup shell
|
// false: don't extrude vertices for powerup - this means the powerup shell
|
||||||
// is not seen in the shadow, only the underlying model..
|
// is not seen in the shadow, only the underlying model..
|
||||||
LerpVerts(false, paliashdr->num_xyz, v, ov, verts, s_lerped[0], move, frontv, backv);
|
R_LerpVerts(false, paliashdr->num_xyz, v, ov, verts, s_lerped[0], move, frontv, backv);
|
||||||
}
|
}
|
||||||
|
|
||||||
lheight = entity->origin[2] - shadowInfo->lightspot[2];
|
lheight = entity->origin[2] - shadowInfo->lightspot[2];
|
||||||
|
|
|
@ -32,10 +32,6 @@
|
||||||
#define NUMVERTEXNORMALS 162
|
#define NUMVERTEXNORMALS 162
|
||||||
#define SHADEDOT_QUANT 16
|
#define SHADEDOT_QUANT 16
|
||||||
|
|
||||||
static float r_avertexnormals[NUMVERTEXNORMALS][3] = {
|
|
||||||
#include "../constants/anorms.h"
|
|
||||||
};
|
|
||||||
|
|
||||||
/* precalculated dot products for quantized angles */
|
/* precalculated dot products for quantized angles */
|
||||||
static float r_avertexnormal_dots[SHADEDOT_QUANT][256] = {
|
static float r_avertexnormal_dots[SHADEDOT_QUANT][256] = {
|
||||||
#include "../constants/anormtab.h"
|
#include "../constants/anormtab.h"
|
||||||
|
@ -71,38 +67,6 @@ GL4_ShutdownMeshes(void)
|
||||||
da_free(shadowModels);
|
da_free(shadowModels);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
LerpVerts(qboolean powerUpEffect, int nverts, dtrivertx_t *v, dtrivertx_t *ov,
|
|
||||||
dtrivertx_t *verts, float *lerp, float move[3],
|
|
||||||
float frontv[3], float backv[3])
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (powerUpEffect)
|
|
||||||
{
|
|
||||||
for (i = 0; i < nverts; i++, v++, ov++, lerp += 4)
|
|
||||||
{
|
|
||||||
float *normal = r_avertexnormals[verts[i].lightnormalindex];
|
|
||||||
|
|
||||||
lerp[0] = move[0] + ov->v[0] * backv[0] + v->v[0] * frontv[0] +
|
|
||||||
normal[0] * POWERSUIT_SCALE;
|
|
||||||
lerp[1] = move[1] + ov->v[1] * backv[1] + v->v[1] * frontv[1] +
|
|
||||||
normal[1] * POWERSUIT_SCALE;
|
|
||||||
lerp[2] = move[2] + ov->v[2] * backv[2] + v->v[2] * frontv[2] +
|
|
||||||
normal[2] * POWERSUIT_SCALE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (i = 0; i < nverts; i++, v++, ov++, lerp += 4)
|
|
||||||
{
|
|
||||||
lerp[0] = move[0] + ov->v[0] * backv[0] + v->v[0] * frontv[0];
|
|
||||||
lerp[1] = move[1] + ov->v[1] * backv[1] + v->v[1] * frontv[1];
|
|
||||||
lerp[2] = move[2] + ov->v[2] * backv[2] + v->v[2] * frontv[2];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interpolates between two frames and origins
|
* Interpolates between two frames and origins
|
||||||
*/
|
*/
|
||||||
|
@ -186,7 +150,7 @@ DrawAliasFrameLerp(dmdl_t *paliashdr, entity_t* entity, vec3_t shadelight)
|
||||||
|
|
||||||
lerp = s_lerped[0];
|
lerp = s_lerped[0];
|
||||||
|
|
||||||
LerpVerts(colorOnly, paliashdr->num_xyz, v, ov, verts, lerp, move, frontv, backv);
|
R_LerpVerts(colorOnly, paliashdr->num_xyz, v, ov, verts, lerp, move, frontv, backv);
|
||||||
|
|
||||||
YQ2_STATIC_ASSERT(sizeof(gl4_alias_vtx_t) == 9*sizeof(GLfloat), "invalid gl4_alias_vtx_t size");
|
YQ2_STATIC_ASSERT(sizeof(gl4_alias_vtx_t) == 9*sizeof(GLfloat), "invalid gl4_alias_vtx_t size");
|
||||||
|
|
||||||
|
@ -377,7 +341,7 @@ DrawAliasShadow(gl4_shadowinfo_t* shadowInfo)
|
||||||
|
|
||||||
// false: don't extrude vertices for powerup - this means the powerup shell
|
// false: don't extrude vertices for powerup - this means the powerup shell
|
||||||
// is not seen in the shadow, only the underlying model..
|
// is not seen in the shadow, only the underlying model..
|
||||||
LerpVerts(false, paliashdr->num_xyz, v, ov, verts, s_lerped[0], move, frontv, backv);
|
R_LerpVerts(false, paliashdr->num_xyz, v, ov, verts, s_lerped[0], move, frontv, backv);
|
||||||
}
|
}
|
||||||
|
|
||||||
lheight = entity->origin[2] - shadowInfo->lightspot[2];
|
lheight = entity->origin[2] - shadowInfo->lightspot[2];
|
||||||
|
|
|
@ -376,6 +376,11 @@ extern void R_SetFrustum(vec3_t vup, vec3_t vpn, vec3_t vright, vec3_t r_origin,
|
||||||
extern void R_SubdivideSurface(int *surfedges, mvertex_t *vertexes, medge_t *edges,
|
extern void R_SubdivideSurface(int *surfedges, mvertex_t *vertexes, medge_t *edges,
|
||||||
msurface_t *fa);
|
msurface_t *fa);
|
||||||
|
|
||||||
|
/* Mesh logic */
|
||||||
|
extern void R_LerpVerts(qboolean powerUpEffect, int nverts, dtrivertx_t *v, dtrivertx_t *ov,
|
||||||
|
dtrivertx_t *verts, float *lerp, const float move[3],
|
||||||
|
const float frontv[3], const float backv[3]);
|
||||||
|
|
||||||
/* Lights logic */
|
/* Lights logic */
|
||||||
extern bspxlightgrid_t *Mod_LoadBSPXLightGrid(const bspx_header_t *bspx_header, const byte *mod_base);
|
extern bspxlightgrid_t *Mod_LoadBSPXLightGrid(const bspx_header_t *bspx_header, const byte *mod_base);
|
||||||
extern void R_LightPoint(const bspxlightgrid_t *grid, const entity_t *currententity, refdef_t *refdef, const msurface_t *surfaces,
|
extern void R_LightPoint(const bspxlightgrid_t *grid, const entity_t *currententity, refdef_t *refdef, const msurface_t *surfaces,
|
||||||
|
|
|
@ -30,10 +30,6 @@
|
||||||
#define NUMVERTEXNORMALS 162
|
#define NUMVERTEXNORMALS 162
|
||||||
#define SHADEDOT_QUANT 16
|
#define SHADEDOT_QUANT 16
|
||||||
|
|
||||||
static float r_avertexnormals[NUMVERTEXNORMALS][3] = {
|
|
||||||
#include "../constants/anorms.h"
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef float vec4_t[4];
|
typedef float vec4_t[4];
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@ -218,42 +214,6 @@ void Mesh_Free (void)
|
||||||
drawInfo[1] = NULL;
|
drawInfo[1] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
R_LerpVerts(entity_t *currententity, int nverts, dtrivertx_t *v, dtrivertx_t *ov,
|
|
||||||
dtrivertx_t *verts, float *lerp, const float move[3],
|
|
||||||
const float frontv[3], const float backv[3])
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (currententity->flags &
|
|
||||||
(RF_SHELL_RED | RF_SHELL_GREEN |
|
|
||||||
RF_SHELL_BLUE | RF_SHELL_DOUBLE |
|
|
||||||
RF_SHELL_HALF_DAM))
|
|
||||||
{
|
|
||||||
for (i = 0; i < nverts; i++, v++, ov++, lerp += 4)
|
|
||||||
{
|
|
||||||
float *normal = r_avertexnormals[verts[i].lightnormalindex];
|
|
||||||
|
|
||||||
lerp[0] = move[0] + ov->v[0] * backv[0] + v->v[0] * frontv[0] +
|
|
||||||
normal[0] * POWERSUIT_SCALE;
|
|
||||||
lerp[1] = move[1] + ov->v[1] * backv[1] + v->v[1] * frontv[1] +
|
|
||||||
normal[1] * POWERSUIT_SCALE;
|
|
||||||
lerp[2] = move[2] + ov->v[2] * backv[2] + v->v[2] * frontv[2] +
|
|
||||||
normal[2] * POWERSUIT_SCALE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (i = 0; i < nverts; i++, v++, ov++, lerp += 4)
|
|
||||||
{
|
|
||||||
lerp[0] = move[0] + ov->v[0] * backv[0] + v->v[0] * frontv[0];
|
|
||||||
lerp[1] = move[1] + ov->v[1] * backv[1] + v->v[1] * frontv[1];
|
|
||||||
lerp[2] = move[2] + ov->v[2] * backv[2] + v->v[2] * frontv[2];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
Vk_DrawAliasFrameLerpCommands (entity_t *currententity, int *order, int *order_end,
|
Vk_DrawAliasFrameLerpCommands (entity_t *currententity, int *order, int *order_end,
|
||||||
float alpha, image_t *skin, float *modelMatrix, int leftHandOffset, int translucentIdx,
|
float alpha, image_t *skin, float *modelMatrix, int leftHandOffset, int translucentIdx,
|
||||||
|
@ -468,6 +428,9 @@ Vk_DrawAliasFrameLerp(entity_t *currententity, dmdl_t *paliashdr, float backlerp
|
||||||
float *lerp;
|
float *lerp;
|
||||||
int num_mesh_nodes;
|
int num_mesh_nodes;
|
||||||
short *mesh_nodes;
|
short *mesh_nodes;
|
||||||
|
qboolean colorOnly = 0 != (currententity->flags &
|
||||||
|
(RF_SHELL_RED | RF_SHELL_GREEN | RF_SHELL_BLUE | RF_SHELL_DOUBLE |
|
||||||
|
RF_SHELL_HALF_DAM));
|
||||||
|
|
||||||
frame = (daliasframe_t *)((byte *)paliashdr + paliashdr->ofs_frames
|
frame = (daliasframe_t *)((byte *)paliashdr + paliashdr->ofs_frames
|
||||||
+ currententity->frame * paliashdr->framesize);
|
+ currententity->frame * paliashdr->framesize);
|
||||||
|
@ -518,7 +481,7 @@ Vk_DrawAliasFrameLerp(entity_t *currententity, dmdl_t *paliashdr, float backlerp
|
||||||
|
|
||||||
lerp = s_lerped[0];
|
lerp = s_lerped[0];
|
||||||
|
|
||||||
R_LerpVerts(currententity, paliashdr->num_xyz, v, ov, verts, lerp, move, frontv, backv);
|
R_LerpVerts(colorOnly, paliashdr->num_xyz, v, ov, verts, lerp, move, frontv, backv);
|
||||||
|
|
||||||
num_mesh_nodes = (paliashdr->ofs_skins - sizeof(dmdl_t)) / sizeof(short) / 2;
|
num_mesh_nodes = (paliashdr->ofs_skins - sizeof(dmdl_t)) / sizeof(short) / 2;
|
||||||
mesh_nodes = (short *)((char*)paliashdr + sizeof(dmdl_t));
|
mesh_nodes = (short *)((char*)paliashdr + sizeof(dmdl_t));
|
||||||
|
|
Loading…
Reference in a new issue