2013-02-16 21:46:09 +00:00
|
|
|
/*
|
|
|
|
===========================================================================
|
|
|
|
Copyright (C) 1999-2005 Id Software, Inc.
|
|
|
|
|
|
|
|
This file is part of Quake III Arena source code.
|
|
|
|
|
|
|
|
Quake III Arena source code 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.
|
|
|
|
|
|
|
|
Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software
|
|
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
===========================================================================
|
|
|
|
*/
|
2013-02-16 20:58:04 +00:00
|
|
|
#ifndef TR_COMMON_H
|
|
|
|
#define TR_COMMON_H
|
|
|
|
|
|
|
|
#include "../qcommon/q_shared.h"
|
|
|
|
#include "../renderercommon/tr_public.h"
|
|
|
|
#include "qgl.h"
|
|
|
|
|
2013-03-12 19:41:52 +00:00
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
IMGTYPE_COLORALPHA, // for color, lightmap, diffuse, and specular
|
|
|
|
IMGTYPE_NORMAL,
|
|
|
|
IMGTYPE_NORMALHEIGHT,
|
|
|
|
IMGTYPE_DELUXE, // normals are swizzled, deluxe are not
|
|
|
|
} imgType_t;
|
|
|
|
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
IMGFLAG_NONE = 0x0000,
|
|
|
|
IMGFLAG_MIPMAP = 0x0001,
|
|
|
|
IMGFLAG_PICMIP = 0x0002,
|
|
|
|
IMGFLAG_CUBEMAP = 0x0004,
|
|
|
|
IMGFLAG_NO_COMPRESSION = 0x0010,
|
|
|
|
IMGFLAG_NOLIGHTSCALE = 0x0020,
|
|
|
|
IMGFLAG_CLAMPTOEDGE = 0x0040,
|
2017-07-30 20:39:32 +00:00
|
|
|
IMGFLAG_GENNORMALMAP = 0x0080,
|
2013-03-12 19:41:52 +00:00
|
|
|
} imgFlags_t;
|
|
|
|
|
|
|
|
typedef struct image_s {
|
|
|
|
char imgName[MAX_QPATH]; // game path, including extension
|
|
|
|
int width, height; // source image
|
|
|
|
int uploadWidth, uploadHeight; // after power of two and picmip but not including clamp to MAX_TEXTURE_SIZE
|
|
|
|
GLuint texnum; // gl texture binding
|
|
|
|
|
|
|
|
int frameUsed; // for texture usage in frame statistics
|
|
|
|
|
|
|
|
int internalFormat;
|
|
|
|
int TMU; // only needed for voodoo2
|
|
|
|
|
|
|
|
imgType_t type;
|
|
|
|
imgFlags_t flags;
|
|
|
|
|
|
|
|
struct image_s* next;
|
|
|
|
} image_t;
|
|
|
|
|
|
|
|
// any change in the LIGHTMAP_* defines here MUST be reflected in
|
|
|
|
// R_FindShader() in tr_bsp.c
|
|
|
|
#define LIGHTMAP_2D -4 // shader is for 2D rendering
|
|
|
|
#define LIGHTMAP_BY_VERTEX -3 // pre-lit triangle models
|
|
|
|
#define LIGHTMAP_WHITEIMAGE -2
|
|
|
|
#define LIGHTMAP_NONE -1
|
|
|
|
|
2013-02-16 20:58:04 +00:00
|
|
|
extern refimport_t ri;
|
|
|
|
extern glconfig_t glConfig; // outside of TR since it shouldn't be cleared during ref re-init
|
|
|
|
|
|
|
|
// These variables should live inside glConfig but can't because of
|
|
|
|
// compatibility issues to the original ID vms. If you release a stand-alone
|
|
|
|
// game and your mod uses tr_types.h from this build you can safely move them
|
|
|
|
// to the glconfig_t struct.
|
|
|
|
extern qboolean textureFilterAnisotropic;
|
|
|
|
extern int maxAnisotropy;
|
|
|
|
extern float displayAspect;
|
|
|
|
|
|
|
|
//
|
|
|
|
// cvars
|
|
|
|
//
|
|
|
|
extern cvar_t *r_stencilbits; // number of desired stencil bits
|
|
|
|
extern cvar_t *r_depthbits; // number of desired depth bits
|
|
|
|
extern cvar_t *r_colorbits; // number of desired color bits, only relevant for fullscreen
|
|
|
|
extern cvar_t *r_texturebits; // number of desired texture bits
|
|
|
|
extern cvar_t *r_ext_multisample;
|
|
|
|
// 0 = use framebuffer depth
|
|
|
|
// 16 = use 16-bit textures
|
|
|
|
// 32 = use 32-bit textures
|
|
|
|
// all else = error
|
|
|
|
|
|
|
|
extern cvar_t *r_mode; // video mode
|
|
|
|
extern cvar_t *r_noborder;
|
|
|
|
extern cvar_t *r_fullscreen;
|
|
|
|
extern cvar_t *r_ignorehwgamma; // overrides hardware gamma capabilities
|
|
|
|
extern cvar_t *r_drawBuffer;
|
|
|
|
extern cvar_t *r_swapInterval;
|
|
|
|
|
|
|
|
extern cvar_t *r_allowExtensions; // global enable/disable of OpenGL extensions
|
|
|
|
extern cvar_t *r_ext_compressed_textures; // these control use of specific extensions
|
|
|
|
extern cvar_t *r_ext_multitexture;
|
|
|
|
extern cvar_t *r_ext_compiled_vertex_array;
|
|
|
|
extern cvar_t *r_ext_texture_env_add;
|
|
|
|
|
|
|
|
extern cvar_t *r_ext_texture_filter_anisotropic;
|
|
|
|
extern cvar_t *r_ext_max_anisotropy;
|
|
|
|
|
|
|
|
extern cvar_t *r_stereoEnabled;
|
|
|
|
|
2013-03-12 19:41:52 +00:00
|
|
|
extern cvar_t *r_saveFontData;
|
|
|
|
|
2013-02-16 20:58:04 +00:00
|
|
|
qboolean R_GetModeInfo( int *width, int *height, float *windowAspect, int mode );
|
|
|
|
|
2017-08-03 04:29:46 +00:00
|
|
|
float R_NoiseGet4f( float x, float y, float z, double t );
|
2013-02-27 21:35:02 +00:00
|
|
|
void R_NoiseInit( void );
|
2013-02-16 20:58:04 +00:00
|
|
|
|
2013-03-12 19:41:52 +00:00
|
|
|
image_t *R_FindImageFile( const char *name, imgType_t type, imgFlags_t flags );
|
|
|
|
image_t *R_CreateImage( const char *name, byte *pic, int width, int height, imgType_t type, imgFlags_t flags, int internalFormat );
|
|
|
|
|
2013-03-12 17:52:02 +00:00
|
|
|
void R_IssuePendingRenderCommands( void );
|
2013-03-12 19:41:52 +00:00
|
|
|
qhandle_t RE_RegisterShaderLightMap( const char *name, int lightmapIndex );
|
|
|
|
qhandle_t RE_RegisterShader( const char *name );
|
2013-03-12 17:52:02 +00:00
|
|
|
qhandle_t RE_RegisterShaderNoMip( const char *name );
|
2013-03-12 19:41:52 +00:00
|
|
|
qhandle_t RE_RegisterShaderFromImage(const char *name, int lightmapIndex, image_t *image, qboolean mipRawImage);
|
|
|
|
|
|
|
|
// font stuff
|
|
|
|
void R_InitFreeType( void );
|
|
|
|
void R_DoneFreeType( void );
|
|
|
|
void RE_RegisterFont(const char *fontName, int pointSize, fontInfo_t *font);
|
2013-03-12 17:52:02 +00:00
|
|
|
|
2015-06-12 19:22:37 +00:00
|
|
|
/*
|
|
|
|
=============================================================
|
|
|
|
|
|
|
|
IMAGE LOADERS
|
|
|
|
|
|
|
|
=============================================================
|
|
|
|
*/
|
|
|
|
|
|
|
|
void R_LoadBMP( const char *name, byte **pic, int *width, int *height );
|
|
|
|
void R_LoadJPG( const char *name, byte **pic, int *width, int *height );
|
|
|
|
void R_LoadPCX( const char *name, byte **pic, int *width, int *height );
|
|
|
|
void R_LoadPNG( const char *name, byte **pic, int *width, int *height );
|
|
|
|
void R_LoadTGA( const char *name, byte **pic, int *width, int *height );
|
|
|
|
|
2013-02-16 20:58:04 +00:00
|
|
|
/*
|
|
|
|
====================================================================
|
|
|
|
|
|
|
|
IMPLEMENTATION SPECIFIC FUNCTIONS
|
|
|
|
|
|
|
|
====================================================================
|
|
|
|
*/
|
|
|
|
|
2018-07-21 04:40:21 +00:00
|
|
|
void GLimp_Init( qboolean fixedFunction );
|
2013-02-16 20:58:04 +00:00
|
|
|
void GLimp_Shutdown( void );
|
|
|
|
void GLimp_EndFrame( void );
|
|
|
|
|
|
|
|
void GLimp_LogComment( char *comment );
|
|
|
|
void GLimp_Minimize(void);
|
|
|
|
|
|
|
|
void GLimp_SetGamma( unsigned char red[256],
|
|
|
|
unsigned char green[256],
|
|
|
|
unsigned char blue[256] );
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|