|
|
1.1 root 1: // r_local.h -- private refresh defs
2:
1.1.1.2 ! root 3: #ifndef GLQUAKE
1.1 root 4: #include "r_shared.h"
5:
6: #define ALIAS_BASE_SIZE_RATIO (1.0 / 11.0)
7: // normalizing factor so player model works out to about
8: // 1 pixel per triangle
9:
10: #define BMODEL_FULLY_CLIPPED 0x10 // value returned by R_BmodelCheckBBox ()
11: // if bbox is trivially rejected
12:
13: //===========================================================================
14: // viewmodel lighting
15:
16: typedef struct {
17: int ambientlight;
18: int shadelight;
19: float *plightvec;
20: } alight_t;
21:
22: //===========================================================================
23: // clipped bmodel edges
24:
25: typedef struct bedge_s
26: {
27: mvertex_t *v[2];
28: struct bedge_s *pnext;
29: } bedge_t;
30:
31: typedef struct {
32: float fv[3]; // viewspace x, y
33: } auxvert_t;
34:
35: //===========================================================================
36:
37: extern cvar_t r_draworder;
38: extern cvar_t r_speeds;
39: extern cvar_t r_timegraph;
40: extern cvar_t r_graphheight;
41: extern cvar_t r_clearcolor;
42: extern cvar_t r_waterwarp;
43: extern cvar_t r_fullbright;
44: extern cvar_t r_drawentities;
45: extern cvar_t r_aliasstats;
46: extern cvar_t r_dspeeds;
47: extern cvar_t r_drawflat;
48: extern cvar_t r_ambient;
49: extern cvar_t r_reportsurfout;
50: extern cvar_t r_maxsurfs;
51: extern cvar_t r_numsurfs;
52: extern cvar_t r_reportedgeout;
53: extern cvar_t r_maxedges;
54: extern cvar_t r_numedges;
55:
56: #define XCENTERING (1.0 / 2.0)
57: #define YCENTERING (1.0 / 2.0)
58:
59: #define CLIP_EPSILON 0.001
60:
61: #define BACKFACE_EPSILON 0.01
62:
63: //===========================================================================
64:
65: #define DIST_NOT_SET 98765
66:
67: // !!! if this is changed, it must be changed in asm_draw.h too !!!
68: typedef struct clipplane_s
69: {
70: vec3_t normal;
71: float dist;
72: struct clipplane_s *next;
73: byte leftedge;
74: byte rightedge;
75: byte reserved[2];
76: } clipplane_t;
77:
78: extern clipplane_t view_clipplanes[4];
79:
80: //=============================================================================
81:
82: void R_RenderWorld (void);
83:
84: //=============================================================================
85:
86: extern mplane_t screenedge[4];
87:
88: extern vec3_t r_origin;
89:
90: extern vec3_t r_entorigin;
91:
92: extern float screenAspect;
93: extern float verticalFieldOfView;
94: extern float xOrigin, yOrigin;
95:
96: extern int r_visframecount;
97:
98: //=============================================================================
99:
100: extern int vstartscan;
101:
102:
103: void R_ClearPolyList (void);
104: void R_DrawPolyList (void);
105:
106: //
107: // current entity info
108: //
109: extern qboolean insubmodel;
110: extern vec3_t r_worldmodelorg;
111:
112:
113: void R_DrawSprite (void);
114: void R_RenderFace (msurface_t *fa, int clipflags);
115: void R_RenderPoly (msurface_t *fa, int clipflags);
116: void R_RenderBmodelFace (bedge_t *pedges, msurface_t *psurf);
117: void R_TransformPlane (mplane_t *p, float *normal, float *dist);
118: void R_TransformFrustum (void);
119: void R_SetSkyFrame (void);
120: void R_DrawSurfaceBlock16 (void);
121: void R_DrawSurfaceBlock8 (void);
122: texture_t *R_TextureAnimation (texture_t *base);
123:
124: #if id386
125:
126: void R_DrawSurfaceBlock8_mip0 (void);
127: void R_DrawSurfaceBlock8_mip1 (void);
128: void R_DrawSurfaceBlock8_mip2 (void);
129: void R_DrawSurfaceBlock8_mip3 (void);
130:
131: #endif
132:
133: void R_GenSkyTile (void *pdest);
134: void R_GenSkyTile16 (void *pdest);
135: void R_Surf8Patch (void);
136: void R_Surf16Patch (void);
137: void R_DrawSubmodelPolygons (model_t *pmodel, int clipflags);
138: void R_DrawSolidClippedSubmodelPolygons (model_t *pmodel);
139:
140: void R_AddPolygonEdges (emitpoint_t *pverts, int numverts, int miplevel);
141: surf_t *R_GetSurf (void);
142: void R_AliasDrawModel (alight_t *plighting);
143: void R_BeginEdgeFrame (void);
144: void R_ScanEdges (void);
145: void D_DrawSurfaces (void);
146: void R_InsertNewEdges (edge_t *edgestoadd, edge_t *edgelist);
147: void R_StepActiveU (edge_t *pedge);
148: void R_RemoveEdges (edge_t *pedge);
149:
150: extern void R_Surf8Start (void);
151: extern void R_Surf8End (void);
152: extern void R_Surf16Start (void);
153: extern void R_Surf16End (void);
1.1.1.2 ! root 154: extern void R_EdgeCodeStart (void);
! 155: extern void R_EdgeCodeEnd (void);
1.1 root 156:
157: extern void R_RotateBmodel (void);
158:
159: extern int c_faceclip;
160: extern int r_polycount;
161: extern int r_wholepolycount;
162:
163: extern model_t *cl_worldmodel;
164:
165: extern int *pfrustum_indexes[4];
166:
167: // !!! if this is changed, it must be changed in asm_draw.h too !!!
168: #define NEAR_CLIP 0.01
169:
170: extern int ubasestep, errorterm, erroradjustup, erroradjustdown;
171: extern int vstartscan;
172:
173: extern fixed16_t sadjust, tadjust;
174: extern fixed16_t bbextents, bbextentt;
175:
176: #define MAXBVERTINDEXES 1000 // new clipped vertices when clipping bmodels
177: // to the world BSP
178: extern mvertex_t *r_ptverts, *r_ptvertsmax;
179:
180: extern vec3_t sbaseaxis[3], tbaseaxis[3];
181: extern float entity_rotation[3][3];
182:
183: extern int reinit_surfcache;
184:
185: extern int r_currentkey;
186: extern int r_currentbkey;
187:
188: typedef struct btofpoly_s {
189: int clipflags;
190: msurface_t *psurf;
191: } btofpoly_t;
192:
193: #define MAX_BTOFPOLYS 5000 // FIXME: tune this
194:
195: extern int numbtofpolys;
196: extern btofpoly_t *pbtofpolys;
197:
198: void R_InitTurb (void);
199: void R_ZDrawSubmodelPolys (model_t *clmodel);
200:
201: //=========================================================
202: // Alias models
203: //=========================================================
204:
205: #define MAXALIASVERTS 2000 // TODO: tune this
206: #define ALIAS_Z_CLIP_PLANE 5
207:
208: extern int numverts;
209: extern int a_skinwidth;
210: extern mtriangle_t *ptriangles;
211: extern int numtriangles;
212: extern aliashdr_t *paliashdr;
213: extern mdl_t *pmdl;
214: extern float leftclip, topclip, rightclip, bottomclip;
215: extern int r_acliptype;
216: extern finalvert_t *pfinalverts;
217: extern auxvert_t *pauxverts;
218:
219: qboolean R_AliasCheckBBox (void);
220:
221: //=========================================================
222: // turbulence stuff
223:
224: #define AMP 8*0x10000
225: #define AMP2 3
226: #define SPEED 20
227:
228: //=========================================================
229: // particle stuff
230:
231: void R_DrawParticles (void);
232: void R_InitParticles (void);
233: void R_ClearParticles (void);
234: void R_ReadPointFile_f (void);
235: void R_SurfacePatch (void);
236:
237: extern int r_amodels_drawn;
238: extern edge_t *auxedges;
239: extern int r_numallocatededges;
240: extern edge_t *r_edges, *edge_p, *edge_max;
241:
242: extern edge_t *newedges[MAXHEIGHT];
243: extern edge_t *removeedges[MAXHEIGHT];
244:
245: extern int screenwidth;
246:
247: // FIXME: make stack vars when debugging done
248: extern edge_t edge_head;
249: extern edge_t edge_tail;
250: extern edge_t edge_aftertail;
251: extern int r_bmodelactive;
252: extern vrect_t *pconupdate;
253:
254: extern float aliasxscale, aliasyscale, aliasxcenter, aliasycenter;
255: extern float r_aliastransition, r_resfudge;
256:
257: extern int r_outofsurfaces;
258: extern int r_outofedges;
259:
260: extern mvertex_t *r_pcurrentvertbase;
261: extern int r_maxvalidedgeoffset;
262:
263: void R_AliasClipTriangle (mtriangle_t *ptri);
264:
265: extern float r_time1;
266: extern float dp_time1, dp_time2, db_time1, db_time2, rw_time1, rw_time2;
267: extern float se_time1, se_time2, de_time1, de_time2, dv_time1, dv_time2;
268: extern int r_frustum_indexes[4*6];
269: extern int r_maxsurfsseen, r_maxedgesseen, r_cnumsurfs;
270: extern qboolean r_surfsonstack;
271: extern cshift_t cshift_water;
272: extern qboolean r_dowarpold, r_viewchanged;
273:
274: extern mleaf_t *r_viewleaf, *r_oldviewleaf;
275:
276: extern vec3_t r_emins, r_emaxs;
277: extern mnode_t *r_pefragtopnode;
278: extern int r_clipflags;
279: extern int r_dlightframecount;
280: extern qboolean r_fov_greater_than_90;
281:
282: void R_StoreEfrags (efrag_t **ppefrag);
283: void R_TimeRefresh_f (void);
284: void R_TimeGraph (void);
285: void R_PrintAliasStats (void);
286: void R_PrintTimes (void);
287: void R_PrintDSpeeds (void);
288: void R_AnimateLight (void);
289: int R_LightPoint (vec3_t p);
290: void R_SetupFrame (void);
291: void R_cshift_f (void);
292: void R_EmitEdge (mvertex_t *pv0, mvertex_t *pv1);
293: void R_ClipEdge (mvertex_t *pv0, mvertex_t *pv1, clipplane_t *clip);
294: void R_SplitEntityOnNode2 (mnode_t *node);
295: void R_MarkLights (dlight_t *light, int bit, mnode_t *node);
296:
1.1.1.2 ! root 297: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.