Merge branch 'master' into sdl2

This commit is contained in:
Tim Angus 2013-09-16 22:34:51 +01:00
commit 76e49b668e
31 changed files with 1353 additions and 568 deletions

View file

@ -59,6 +59,8 @@ typedef unsigned int glIndex_t;
#define MAX_CALC_PSHADOWS 64
#define MAX_DRAWN_PSHADOWS 16 // do not increase past 32, because bit flags are used on surfaces
#define PSHADOW_MAP_SIZE 512
#define CUBE_MAP_MIPS 7
#define CUBE_MAP_SIZE (1 << CUBE_MAP_MIPS)
#define USE_VERT_TANGENT_SPACE
@ -368,7 +370,8 @@ enum
TB_SHADOWMAP2 = 3,
TB_SPECULARMAP = 4,
TB_SHADOWMAP = 5,
NUM_TEXTURE_BUNDLES = 6
TB_CUBEMAP = 6,
NUM_TEXTURE_BUNDLES = 7
};
typedef enum
@ -698,13 +701,12 @@ enum
LIGHTDEF_LIGHTTYPE_MASK = 0x0003,
LIGHTDEF_ENTITY = 0x0004,
LIGHTDEF_USE_TCGEN_AND_TCMOD = 0x0008,
LIGHTDEF_USE_NORMALMAP = 0x0010,
LIGHTDEF_USE_SPECULARMAP = 0x0020,
LIGHTDEF_USE_DELUXEMAP = 0x0040,
LIGHTDEF_USE_PARALLAXMAP = 0x0080,
LIGHTDEF_USE_SHADOWMAP = 0x0100,
LIGHTDEF_ALL = 0x01FF,
LIGHTDEF_COUNT = 0x0200
LIGHTDEF_USE_DELUXEMAP = 0x0010,
LIGHTDEF_USE_PARALLAXMAP = 0x0020,
LIGHTDEF_USE_SHADOWMAP = 0x0040,
LIGHTDEF_USE_CUBEMAP = 0x0080,
LIGHTDEF_ALL = 0x00FF,
LIGHTDEF_COUNT = 0x0100
};
enum
@ -728,6 +730,7 @@ typedef enum
UNIFORM_TEXTUREMAP,
UNIFORM_LEVELSMAP,
UNIFORM_CUBEMAP,
UNIFORM_SCREENIMAGEMAP,
UNIFORM_SCREENDEPTHMAP,
@ -896,12 +899,14 @@ typedef struct {
typedef enum {
VPF_NONE = 0x00,
VPF_SHADOWMAP = 0x01,
VPF_DEPTHSHADOW = 0x02,
VPF_DEPTHCLAMP = 0x04,
VPF_ORTHOGRAPHIC = 0x08,
VPF_USESUNLIGHT = 0x10,
VPF_FARPLANEFRUSTUM = 0x20
VPF_NOVIEWMODEL = 0x01,
VPF_SHADOWMAP = 0x02,
VPF_DEPTHSHADOW = 0x04,
VPF_DEPTHCLAMP = 0x08,
VPF_ORTHOGRAPHIC = 0x10,
VPF_USESUNLIGHT = 0x20,
VPF_FARPLANEFRUSTUM = 0x40,
VPF_NOCUBEMAPS = 0x80
} viewParmFlags_t;
typedef struct {
@ -916,6 +921,8 @@ typedef struct {
cplane_t portalPlane; // clip anything behind this if mirroring
int viewportX, viewportY, viewportWidth, viewportHeight;
FBO_t *targetFbo;
int targetFboLayer;
int targetFboCubemapIndex;
float fovX, fovY;
float projectionMatrix[16];
cplane_t frustum[5];
@ -958,7 +965,8 @@ typedef enum {
} surfaceType_t;
typedef struct drawSurf_s {
unsigned sort; // bit combination for fast compares
unsigned int sort; // bit combination for fast compares
int cubemapIndex;
surfaceType_t *surface; // any of surface*_t
} drawSurf_t;
@ -1170,6 +1178,7 @@ typedef struct srfVBOMesh_s
struct shader_s *shader; // FIXME move this to somewhere else
int fogIndex;
int cubemapIndex;
// dynamic lighting information
int dlightBits;
@ -1271,6 +1280,7 @@ typedef struct msurface_s {
//int viewCount; // if == tr.viewCount, already added
struct shader_s *shader;
int fogIndex;
int cubemapIndex;
cullinfo_t cullinfo;
surfaceType_t *data; // any of srf*_t
@ -1600,9 +1610,12 @@ typedef struct {
qboolean framebufferMultisample;
qboolean framebufferBlit;
qboolean texture_srgb;
qboolean textureSrgb;
qboolean framebufferSrgb;
qboolean textureSrgbDecode;
qboolean depthClamp;
qboolean seamlessCubeMap;
} glRefConfig_t;
@ -1695,6 +1708,7 @@ typedef struct {
image_t *fogImage;
image_t *dlightImage; // inverse-quare highlight for projective adding
image_t *flareImage;
image_t *greyImage; // full of 0x80
image_t *whiteImage; // full of 0xff
image_t *identityLightImage; // full of tr.identityLightByte
@ -1715,6 +1729,7 @@ typedef struct {
image_t *screenShadowImage;
image_t *screenSsaoImage;
image_t *hdrDepthImage;
image_t *renderCubeImage;
image_t *textureDepthImage;
@ -1732,6 +1747,7 @@ typedef struct {
FBO_t *screenShadowFbo;
FBO_t *screenSsaoFbo;
FBO_t *hdrDepthFbo;
FBO_t *renderCubeFbo;
shader_t *defaultShader;
shader_t *shadowShader;
@ -1749,6 +1765,10 @@ typedef struct {
int fatLightmapSize;
int fatLightmapStep;
int numCubemaps;
vec3_t *cubemapOrigins;
image_t **cubemaps;
trRefEntity_t *currentEntity;
trRefEntity_t worldEntity; // point currentEntity at this when rendering world
int currentEntityNum;
@ -1772,6 +1792,7 @@ typedef struct {
shaderProgram_t shadowmaskShader;
shaderProgram_t ssaoShader;
shaderProgram_t depthBlurShader[2];
shaderProgram_t testcubeShader;
// -----------------------------------------
@ -1962,7 +1983,11 @@ extern cvar_t *r_normalMapping;
extern cvar_t *r_specularMapping;
extern cvar_t *r_deluxeMapping;
extern cvar_t *r_parallaxMapping;
extern cvar_t *r_normalAmbient;
extern cvar_t *r_cubeMapping;
extern cvar_t *r_deluxeSpecular;
extern cvar_t *r_specularIsMetallic;
extern cvar_t *r_baseSpecular;
extern cvar_t *r_baseGloss;
extern cvar_t *r_dlightMode;
extern cvar_t *r_pshadowDist;
extern cvar_t *r_recalcMD3Normals;
@ -2009,6 +2034,7 @@ void R_RenderView( viewParms_t *parms );
void R_RenderDlightCubemaps(const refdef_t *fd);
void R_RenderPshadowMaps(const refdef_t *fd);
void R_RenderSunShadowMaps(const refdef_t *fd, int level);
void R_RenderCubemapSide( int cubemapIndex, int cubemapSide, qboolean subscene );
void R_AddMD3Surfaces( trRefEntity_t *e );
void R_AddNullModelSurfaces( trRefEntity_t *e );
@ -2022,7 +2048,7 @@ void R_DecomposeSort( unsigned sort, int *entityNum, shader_t **shader,
int *fogNum, int *dlightMap, int *pshadowMap );
void R_AddDrawSurf( surfaceType_t *surface, shader_t *shader,
int fogIndex, int dlightMap, int pshadowMap );
int fogIndex, int dlightMap, int pshadowMap, int cubemap );
void R_CalcTangentSpace(vec3_t tangent, vec3_t bitangent, vec3_t normal,
const vec3_t v0, const vec3_t v1, const vec3_t v2, const vec2_t t0, const vec2_t t1, const vec2_t t2);
@ -2048,7 +2074,6 @@ void R_RotateForEntity( const trRefEntity_t *ent, const viewParms_t *viewParms,
** GL wrapper/helper functions
*/
void GL_Bind( image_t *image );
void GL_BindCubemap( image_t *image );
void GL_BindToTMU( image_t *image, int tmu );
void GL_SetDefaultState (void);
void GL_SelectTexture( int unit );
@ -2199,6 +2224,7 @@ typedef struct shaderCommands_s
shader_t *shader;
float shaderTime;
int fogNum;
int cubemapIndex;
int dlightBits; // or together of all vertexDlightBits
int pshadowBits;
@ -2224,7 +2250,7 @@ typedef struct shaderCommands_s
extern shaderCommands_t tess;
void RB_BeginSurface(shader_t *shader, int fogNum );
void RB_BeginSurface(shader_t *shader, int fogNum, int cubemapIndex );
void RB_EndSurface(void);
void RB_CheckOverflow( int verts, int indexes );
#define RB_CHECKOVERFLOW(v,i) if (tess.numVertexes + (v) >= SHADER_MAX_VERTEXES || tess.numIndexes + (i) >= SHADER_MAX_INDEXES ) {RB_CheckOverflow(v,i);}
@ -2284,6 +2310,7 @@ void R_SetupEntityLighting( const trRefdef_t *refdef, trRefEntity_t *ent );
void R_TransformDlights( int count, dlight_t *dl, orientationr_t *or );
int R_LightForPoint( vec3_t point, vec3_t ambientLight, vec3_t directedLight, vec3_t lightDir );
int R_LightDirForPoint( vec3_t point, vec3_t lightDir, vec3_t normal, world_t *world );
int R_CubemapForPoint( vec3_t point );
/*
@ -2406,7 +2433,9 @@ void RE_AddRefEntityToScene( const refEntity_t *ent );
void RE_AddPolyToScene( qhandle_t hShader , int numVerts, const polyVert_t *verts, int num );
void RE_AddLightToScene( const vec3_t org, float intensity, float r, float g, float b );
void RE_AddAdditiveLightToScene( const vec3_t org, float intensity, float r, float g, float b );
void RE_BeginScene( const refdef_t *fd );
void RE_RenderScene( const refdef_t *fd );
void RE_EndScene( void );
/*
=============================================================