home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 113 / EnigmaAmiga113CD.iso / software / sviluppo / quakeworld_src / client / r_local.h.orig < prev    next >
Encoding:
Text File  |  2000-06-17  |  8.4 KB  |  317 lines

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