1cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich/* 2cabb5dd768714a7df34469a096b5e1aa815a2c22Jack PalevichCopyright (C) 1996-1997 Id Software, Inc. 3cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 4cabb5dd768714a7df34469a096b5e1aa815a2c22Jack PalevichThis program is free software; you can redistribute it and/or 5cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichmodify it under the terms of the GNU General Public License 6cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichas published by the Free Software Foundation; either version 2 7cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichof the License, or (at your option) any later version. 8cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 9cabb5dd768714a7df34469a096b5e1aa815a2c22Jack PalevichThis program is distributed in the hope that it will be useful, 10cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichbut WITHOUT ANY WARRANTY; without even the implied warranty of 11cabb5dd768714a7df34469a096b5e1aa815a2c22Jack PalevichMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 13cabb5dd768714a7df34469a096b5e1aa815a2c22Jack PalevichSee the GNU General Public License for more details. 14cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 15cabb5dd768714a7df34469a096b5e1aa815a2c22Jack PalevichYou should have received a copy of the GNU General Public License 16cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichalong with this program; if not, write to the Free Software 17cabb5dd768714a7df34469a096b5e1aa815a2c22Jack PalevichFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 19cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich*/ 20cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// disable data conversion warnings 21cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 22cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#ifdef _WIN32 23cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#pragma warning(disable : 4244) // MIPS 24cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#pragma warning(disable : 4136) // X86 25cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#pragma warning(disable : 4051) // ALPHA 26cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#endif 27cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 28cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#ifdef _WIN32 29cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#include <windows.h> 30cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#endif 31cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 32cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#ifdef USE_OPENGLES 33cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 34cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#include <GLES/gl.h> 35cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 36cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#else 37cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 38cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#include <GL/gl.h> 39cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#include <GL/glu.h> 40cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 41cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#endif 42cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 43cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid GL_BeginRendering (int *x, int *y, int *width, int *height); 44cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid GL_EndRendering (void); 45cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 46cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#ifdef USE_OPENGLES 47cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 48cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#else // full OpenGL 49cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 50cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// Function prototypes for the Texture Object Extension routines 51cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichtypedef GLboolean (APIENTRY *ARETEXRESFUNCPTR)(GLsizei, const GLuint *, 52cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich const GLboolean *); 53cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichtypedef void (APIENTRY *BINDTEXFUNCPTR)(GLenum, GLuint); 54cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichtypedef void (APIENTRY *DELTEXFUNCPTR)(GLsizei, const GLuint *); 55cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichtypedef void (APIENTRY *GENTEXFUNCPTR)(GLsizei, GLuint *); 56cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichtypedef GLboolean (APIENTRY *ISTEXFUNCPTR)(GLuint); 57cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichtypedef void (APIENTRY *PRIORTEXFUNCPTR)(GLsizei, const GLuint *, 58cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich const GLclampf *); 59cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichtypedef void (APIENTRY *TEXSUBIMAGEPTR)(int, int, int, int, int, int, int, int, void *); 60cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 61cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern BINDTEXFUNCPTR bindTexFunc; 62cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern DELTEXFUNCPTR delTexFunc; 63cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern TEXSUBIMAGEPTR TexSubImage2DFunc; 64cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 65cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#endif // USE_OPENGLES 66cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 67cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int texture_extension_number; 68cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int texture_mode; 69cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 70cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern float gldepthmin, gldepthmax; 71cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 72cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid GL_Upload32 (unsigned *data, int width, int height, qboolean mipmap, qboolean alpha); 73cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid GL_Upload8 (byte *data, int width, int height, qboolean mipmap, qboolean alpha); 74cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid GL_Upload8_EXT (byte *data, int width, int height, qboolean mipmap, qboolean alpha); 75cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichint GL_LoadTexture (char *identifier, int width, int height, byte *data, qboolean mipmap, qboolean alpha); 76cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichint GL_FindTexture (char *identifier); 77cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 78cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid glTexImage2DHelper( GLenum target, 79cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich GLint level, 80cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich GLint internalformat, 81cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich GLsizei width, 82cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich GLsizei height, 83cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich GLint border, 84cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich GLenum format, 85cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich GLenum type, 86cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich const GLvoid *pixels ); 87cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 88cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichtypedef struct 89cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich{ 90cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich float x, y, z; 91cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich float s, t; 92cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich float r, g, b; 93cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich} glvert_t; 94cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 95cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern glvert_t glv; 96cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 97cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int glx, gly, glwidth, glheight; 98cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 99cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#ifdef _WIN32 100cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern PROC glArrayElementEXT; 101cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern PROC glColorPointerEXT; 102cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern PROC glTexturePointerEXT; 103cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern PROC glVertexPointerEXT; 104cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#endif 105cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 106cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// r_local.h -- private refresh defs 107cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 108cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#define ALIAS_BASE_SIZE_RATIO (1.0 / 11.0) 109cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // normalizing factor so player model works out to about 110cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // 1 pixel per triangle 111cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#define MAX_LBM_HEIGHT 480 112cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 113cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#define TILE_SIZE 128 // size of textures generated by R_GenTiledSurf 114cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 115cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#define SKYSHIFT 7 116cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#define SKYSIZE (1 << SKYSHIFT) 117cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#define SKYMASK (SKYSIZE - 1) 118cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 119cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#define BACKFACE_EPSILON 0.01 120cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 121cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 122cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid R_TimeRefresh_f (void); 123cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid R_ReadPointFile_f (void); 124cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichtexture_t *R_TextureAnimation (texture_t *base); 125cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 126cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichtypedef struct surfcache_s 127cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich{ 128cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich struct surfcache_s *next; 129cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich struct surfcache_s **owner; // NULL is an empty chunk of memory 130cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich int lightadj[MAXLIGHTMAPS]; // checked for strobe flush 131cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich int dlight; 132cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich int size; // including header 133cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich unsigned width; 134cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich unsigned height; // DEBUG only needed for debug 135cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich float mipscale; 136cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich struct texture_s *texture; // checked for animating textures 137cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich byte data[4]; // width*height elements 138cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich} surfcache_t; 139cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 140cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 141cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichtypedef struct 142cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich{ 143cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich pixel_t *surfdat; // destination for generated surface 144cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich int rowbytes; // destination logical width in bytes 145cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich msurface_t *surf; // description for surface to generate 146cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich fixed8_t lightadj[MAXLIGHTMAPS]; 147cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich // adjust for lightmap levels for dynamic lighting 148cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich texture_t *texture; // corrected for animating textures 149cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich int surfmip; // mipmapped ratio of surface texels / world pixels 150cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich int surfwidth; // in mipmapped texels 151cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich int surfheight; // in mipmapped texels 152cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich} drawsurf_t; 153cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 154cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 155cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichtypedef enum { 156cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich pt_static, pt_grav, pt_slowgrav, pt_fire, pt_explode, pt_explode2, pt_blob, pt_blob2 157cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich} ptype_t; 158cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 159cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// !!! if this is changed, it must be changed in d_ifacea.h too !!! 160cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichtypedef struct particle_s 161cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich{ 162cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// driver-usable fields 163cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich vec3_t org; 164cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich float color; 165cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// drivers never touch the following fields 166cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich struct particle_s *next; 167cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich vec3_t vel; 168cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich float ramp; 169cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich float die; 170cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich ptype_t type; 171cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich} particle_t; 172cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 173cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 174cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich//==================================================== 175cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 176cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 177cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern entity_t r_worldentity; 178cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern qboolean r_cache_thrash; // compatability 179cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern vec3_t modelorg, r_entorigin; 180cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern entity_t *currententity; 181cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int r_visframecount; // ??? what difs? 182cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int r_framecount; 183cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern mplane_t frustum[4]; 184cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int c_brush_polys, c_alias_polys; 185cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 186cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 187cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 188cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// view origin 189cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 190cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern vec3_t vup; 191cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern vec3_t vpn; 192cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern vec3_t vright; 193cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern vec3_t r_origin; 194cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 195cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 196cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// screen size info 197cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 198cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern refdef_t r_refdef; 199cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern mleaf_t *r_viewleaf, *r_oldviewleaf; 200cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern texture_t *r_notexture_mip; 201cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int d_lightstylevalue[256]; // 8.8 fraction of base light value 202cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 203cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern qboolean envmap; 204cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int currenttexture; 205cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int cnttextures[2]; 206cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int particletexture; 207cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int netgraphtexture; // netgraph texture 208cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int playertextures; 209cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 210cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int skytexturenum; // index in cl.loadmodel, not gl texture object 211cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 212cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t r_norefresh; 213cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t r_drawentities; 214cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t r_drawworld; 215cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t r_drawviewmodel; 216cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t r_speeds; 217cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t r_waterwarp; 218cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t r_fullbright; 219cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t r_lightmap; 220cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t r_shadows; 221cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t r_mirroralpha; 222cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t r_wateralpha; 223cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t r_dynamic; 224cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t r_novis; 225cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t r_netgraph; 226cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 227cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t gl_clear; 228cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t gl_cull; 229cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t gl_poly; 230cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t gl_texsort; 231cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t gl_smoothmodels; 232cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t gl_affinemodels; 233cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t gl_polyblend; 234cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t gl_keeptjunctions; 235cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t gl_reporttjunctions; 236cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t gl_flashblend; 237cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t gl_nocolors; 238cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t gl_finish; 239cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 240cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int gl_lightmap_format; 241cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int gl_solid_format; 242cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int gl_alpha_format; 243cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 244cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t gl_max_size; 245cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern cvar_t gl_playermip; 246cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 247cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern int mirrortexturenum; // quake texturenum, not gltexturenum 248cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern qboolean mirror; 249cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern mplane_t *mirror_plane; 250cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 251cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern float r_world_matrix[16]; 252cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 253cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern const char *gl_vendor; 254cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern const char *gl_renderer; 255cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern const char *gl_version; 256cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern const char *gl_extensions; 257cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 258cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid R_TranslatePlayerSkin (int playernum); 259cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid GL_Bind (int texnum); 260cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 261cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// Multitexture 262cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#define TEXTURE0_SGIS 0x835E 263cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#define TEXTURE1_SGIS 0x835F 264cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 265cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#ifdef _WIN32 266cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichtypedef void (APIENTRY *lpMTexFUNC) (GLenum, GLfloat, GLfloat); 267cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichtypedef void (APIENTRY *lpSelTexFUNC) (GLenum); 268cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern lpMTexFUNC qglMTexCoord2fSGIS; 269cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern lpSelTexFUNC qglSelectTextureSGIS; 270cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich#endif 271cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 272cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichextern qboolean gl_mtexable; 273cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 274cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid GL_DisableMultitexture(void); 275cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid GL_EnableMultitexture(void); 276cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 277cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 278cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// gl_warp.c 279cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 280cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid GL_SubdivideSurface (msurface_t *fa); 281cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid EmitBothSkyLayers (msurface_t *fa); 282cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid EmitWaterPolys (msurface_t *fa); 283cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid EmitSkyPolys (msurface_t *fa); 284cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid R_DrawSkyChain (msurface_t *s); 285cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 286cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 287cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// gl_draw.c 288cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 289cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichint GL_LoadPicTexture (qpic_t *pic); 290cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid GL_Set2D (void); 291cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 292cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 293cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// gl_rmain.c 294cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 295cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichqboolean R_CullBox (vec3_t mins, vec3_t maxs); 296cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid R_RotateForEntity (entity_t *e); 297cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 298cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 299cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// gl_rlight.c 300cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 301cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid R_MarkLights (dlight_t *light, int bit, mnode_t *node); 302cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid R_AnimateLight (void); 303cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid R_RenderDlights (void); 304cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichint R_LightPoint (vec3_t p); 305cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 306cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 307cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// gl_refrag.c 308cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 309cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid R_StoreEfrags (efrag_t **ppefrag); 310cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 311cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 312cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// gl_mesh.c 313cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 314cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid GL_MakeAliasModelDisplayLists (model_t *m, aliashdr_t *hdr); 315cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 316cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 317cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// gl_rsurf.c 318cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 319cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid R_DrawBrushModel (entity_t *e); 320cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid R_DrawWorld (void); 321cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid GL_BuildLightmaps (void); 322cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 323cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 324cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// gl_ngraph.c 325cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich// 326cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichvoid R_NetGraph (void); 327cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich 328