mirror of
https://git.code.sf.net/p/quake/quakeforge-old
synced 2024-11-30 07:31:06 +00:00
c3f5581b0a
Unchained, Ultimate, Ultra, Up Yours, Underworld, Underground, Unified, Unity, etc. You know the drill. This takes care of the "standalone" problem with the wrong name, and the recent snafu with multiple developers working on the same files simultaneously...expect me (and probably others) to start locking dirs when updates are taking place. And yes, this update is really as large as it looks. Software only at the moment, but I will have the makefile updated to build the GL builds as well.
316 lines
No EOL
8.2 KiB
C
316 lines
No EOL
8.2 KiB
C
/*
|
|
Copyright (C) 1996-1997 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.
|
|
|
|
*/
|
|
// r_local.h -- private refresh defs
|
|
|
|
#ifndef GLQUAKE
|
|
#include "r_shared.h"
|
|
|
|
#define ALIAS_BASE_SIZE_RATIO (1.0 / 11.0)
|
|
// normalizing factor so player model works out to about
|
|
// 1 pixel per triangle
|
|
|
|
#define BMODEL_FULLY_CLIPPED 0x10 // value returned by R_BmodelCheckBBox ()
|
|
// if bbox is trivially rejected
|
|
|
|
//===========================================================================
|
|
// viewmodel lighting
|
|
|
|
typedef struct {
|
|
int ambientlight;
|
|
int shadelight;
|
|
float *plightvec;
|
|
} alight_t;
|
|
|
|
//===========================================================================
|
|
// clipped bmodel edges
|
|
|
|
typedef struct bedge_s
|
|
{
|
|
mvertex_t *v[2];
|
|
struct bedge_s *pnext;
|
|
} bedge_t;
|
|
|
|
typedef struct {
|
|
float fv[3]; // viewspace x, y
|
|
} auxvert_t;
|
|
|
|
//===========================================================================
|
|
|
|
extern cvar_t r_draworder;
|
|
extern cvar_t r_speeds;
|
|
extern cvar_t r_timegraph;
|
|
extern cvar_t r_graphheight;
|
|
extern cvar_t r_clearcolor;
|
|
extern cvar_t r_waterwarp;
|
|
extern cvar_t r_fullbright;
|
|
extern cvar_t r_drawentities;
|
|
extern cvar_t r_aliasstats;
|
|
extern cvar_t r_dspeeds;
|
|
extern cvar_t r_drawflat;
|
|
extern cvar_t r_ambient;
|
|
extern cvar_t r_reportsurfout;
|
|
extern cvar_t r_maxsurfs;
|
|
extern cvar_t r_numsurfs;
|
|
extern cvar_t r_reportedgeout;
|
|
extern cvar_t r_maxedges;
|
|
extern cvar_t r_numedges;
|
|
|
|
#define XCENTERING (1.0 / 2.0)
|
|
#define YCENTERING (1.0 / 2.0)
|
|
|
|
#define CLIP_EPSILON 0.001
|
|
|
|
#define BACKFACE_EPSILON 0.01
|
|
|
|
//===========================================================================
|
|
|
|
#define DIST_NOT_SET 98765
|
|
|
|
// !!! if this is changed, it must be changed in asm_draw.h too !!!
|
|
typedef struct clipplane_s
|
|
{
|
|
vec3_t normal;
|
|
float dist;
|
|
struct clipplane_s *next;
|
|
byte leftedge;
|
|
byte rightedge;
|
|
byte reserved[2];
|
|
} clipplane_t;
|
|
|
|
extern clipplane_t view_clipplanes[4];
|
|
|
|
//=============================================================================
|
|
|
|
void R_RenderWorld (void);
|
|
|
|
//=============================================================================
|
|
|
|
extern mplane_t screenedge[4];
|
|
|
|
extern vec3_t r_origin;
|
|
|
|
extern vec3_t r_entorigin;
|
|
|
|
extern float screenAspect;
|
|
extern float verticalFieldOfView;
|
|
extern float xOrigin, yOrigin;
|
|
|
|
extern int r_visframecount;
|
|
|
|
//=============================================================================
|
|
|
|
extern int vstartscan;
|
|
|
|
|
|
void R_ClearPolyList (void);
|
|
void R_DrawPolyList (void);
|
|
|
|
//
|
|
// current entity info
|
|
//
|
|
extern qboolean insubmodel;
|
|
extern vec3_t r_worldmodelorg;
|
|
|
|
|
|
void R_DrawSprite (void);
|
|
void R_RenderFace (msurface_t *fa, int clipflags);
|
|
void R_RenderPoly (msurface_t *fa, int clipflags);
|
|
void R_RenderBmodelFace (bedge_t *pedges, msurface_t *psurf);
|
|
void R_TransformPlane (mplane_t *p, float *normal, float *dist);
|
|
void R_TransformFrustum (void);
|
|
void R_SetSkyFrame (void);
|
|
void R_DrawSurfaceBlock16 (void);
|
|
void R_DrawSurfaceBlock8 (void);
|
|
texture_t *R_TextureAnimation (texture_t *base);
|
|
|
|
#if id386
|
|
|
|
void R_DrawSurfaceBlock8_mip0 (void);
|
|
void R_DrawSurfaceBlock8_mip1 (void);
|
|
void R_DrawSurfaceBlock8_mip2 (void);
|
|
void R_DrawSurfaceBlock8_mip3 (void);
|
|
|
|
#endif
|
|
|
|
void R_GenSkyTile (void *pdest);
|
|
void R_GenSkyTile16 (void *pdest);
|
|
void R_Surf8Patch (void);
|
|
void R_Surf16Patch (void);
|
|
void R_DrawSubmodelPolygons (model_t *pmodel, int clipflags);
|
|
void R_DrawSolidClippedSubmodelPolygons (model_t *pmodel);
|
|
|
|
void R_AddPolygonEdges (emitpoint_t *pverts, int numverts, int miplevel);
|
|
surf_t *R_GetSurf (void);
|
|
void R_AliasDrawModel (alight_t *plighting);
|
|
void R_BeginEdgeFrame (void);
|
|
void R_ScanEdges (void);
|
|
void D_DrawSurfaces (void);
|
|
void R_InsertNewEdges (edge_t *edgestoadd, edge_t *edgelist);
|
|
void R_StepActiveU (edge_t *pedge);
|
|
void R_RemoveEdges (edge_t *pedge);
|
|
|
|
extern void R_Surf8Start (void);
|
|
extern void R_Surf8End (void);
|
|
extern void R_Surf16Start (void);
|
|
extern void R_Surf16End (void);
|
|
extern void R_EdgeCodeStart (void);
|
|
extern void R_EdgeCodeEnd (void);
|
|
|
|
extern void R_RotateBmodel (void);
|
|
|
|
extern int c_faceclip;
|
|
extern int r_polycount;
|
|
extern int r_wholepolycount;
|
|
|
|
extern model_t *cl_worldmodel;
|
|
|
|
extern int *pfrustum_indexes[4];
|
|
|
|
// !!! if this is changed, it must be changed in asm_draw.h too !!!
|
|
#define NEAR_CLIP 0.01
|
|
|
|
extern int ubasestep, errorterm, erroradjustup, erroradjustdown;
|
|
extern int vstartscan;
|
|
|
|
extern fixed16_t sadjust, tadjust;
|
|
extern fixed16_t bbextents, bbextentt;
|
|
|
|
#define MAXBVERTINDEXES 1000 // new clipped vertices when clipping bmodels
|
|
// to the world BSP
|
|
extern mvertex_t *r_ptverts, *r_ptvertsmax;
|
|
|
|
extern vec3_t sbaseaxis[3], tbaseaxis[3];
|
|
extern float entity_rotation[3][3];
|
|
|
|
extern int reinit_surfcache;
|
|
|
|
extern int r_currentkey;
|
|
extern int r_currentbkey;
|
|
|
|
typedef struct btofpoly_s {
|
|
int clipflags;
|
|
msurface_t *psurf;
|
|
} btofpoly_t;
|
|
|
|
#define MAX_BTOFPOLYS 5000 // FIXME: tune this
|
|
|
|
extern int numbtofpolys;
|
|
extern btofpoly_t *pbtofpolys;
|
|
|
|
void R_InitTurb (void);
|
|
void R_ZDrawSubmodelPolys (model_t *clmodel);
|
|
|
|
//=========================================================
|
|
// Alias models
|
|
//=========================================================
|
|
|
|
#define MAXALIASVERTS 2000 // TODO: tune this
|
|
#define ALIAS_Z_CLIP_PLANE 5
|
|
|
|
extern int numverts;
|
|
extern int a_skinwidth;
|
|
extern mtriangle_t *ptriangles;
|
|
extern int numtriangles;
|
|
extern aliashdr_t *paliashdr;
|
|
extern mdl_t *pmdl;
|
|
extern float leftclip, topclip, rightclip, bottomclip;
|
|
extern int r_acliptype;
|
|
extern finalvert_t *pfinalverts;
|
|
extern auxvert_t *pauxverts;
|
|
|
|
qboolean R_AliasCheckBBox (void);
|
|
|
|
//=========================================================
|
|
// turbulence stuff
|
|
|
|
#define AMP 8*0x10000
|
|
#define AMP2 3
|
|
#define SPEED 20
|
|
|
|
//=========================================================
|
|
// particle stuff
|
|
|
|
void R_DrawParticles (void);
|
|
void R_InitParticles (void);
|
|
void R_ClearParticles (void);
|
|
void R_ReadPointFile_f (void);
|
|
void R_SurfacePatch (void);
|
|
|
|
extern int r_amodels_drawn;
|
|
extern edge_t *auxedges;
|
|
extern int r_numallocatededges;
|
|
extern edge_t *r_edges, *edge_p, *edge_max;
|
|
|
|
extern edge_t *newedges[MAXHEIGHT];
|
|
extern edge_t *removeedges[MAXHEIGHT];
|
|
|
|
extern int screenwidth;
|
|
|
|
// FIXME: make stack vars when debugging done
|
|
extern edge_t edge_head;
|
|
extern edge_t edge_tail;
|
|
extern edge_t edge_aftertail;
|
|
extern int r_bmodelactive;
|
|
extern vrect_t *pconupdate;
|
|
|
|
extern float aliasxscale, aliasyscale, aliasxcenter, aliasycenter;
|
|
extern float r_aliastransition, r_resfudge;
|
|
|
|
extern int r_outofsurfaces;
|
|
extern int r_outofedges;
|
|
|
|
extern mvertex_t *r_pcurrentvertbase;
|
|
extern int r_maxvalidedgeoffset;
|
|
|
|
void R_AliasClipTriangle (mtriangle_t *ptri);
|
|
|
|
extern float r_time1;
|
|
extern float dp_time1, dp_time2, db_time1, db_time2, rw_time1, rw_time2;
|
|
extern float se_time1, se_time2, de_time1, de_time2, dv_time1, dv_time2;
|
|
extern int r_frustum_indexes[4*6];
|
|
extern int r_maxsurfsseen, r_maxedgesseen, r_cnumsurfs;
|
|
extern qboolean r_surfsonstack;
|
|
extern cshift_t cshift_water;
|
|
extern qboolean r_dowarpold, r_viewchanged;
|
|
|
|
extern mleaf_t *r_viewleaf, *r_oldviewleaf;
|
|
|
|
extern vec3_t r_emins, r_emaxs;
|
|
extern mnode_t *r_pefragtopnode;
|
|
extern int r_clipflags;
|
|
extern int r_dlightframecount;
|
|
extern qboolean r_fov_greater_than_90;
|
|
|
|
void R_StoreEfrags (efrag_t **ppefrag);
|
|
void R_TimeRefresh_f (void);
|
|
void R_TimeGraph (void);
|
|
void R_PrintAliasStats (void);
|
|
void R_PrintTimes (void);
|
|
void R_PrintDSpeeds (void);
|
|
void R_AnimateLight (void);
|
|
int R_LightPoint (vec3_t p);
|
|
void R_SetupFrame (void);
|
|
void R_cshift_f (void);
|
|
void R_EmitEdge (mvertex_t *pv0, mvertex_t *pv1);
|
|
void R_ClipEdge (mvertex_t *pv0, mvertex_t *pv1, clipplane_t *clip);
|
|
void R_SplitEntityOnNode2 (mnode_t *node);
|
|
void R_MarkLights (dlight_t *light, int bit, mnode_t *node);
|
|
|
|
#endif |