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