diff options
author | Tim Angus <tim@ngus.net> | 2009-10-03 15:17:16 +0000 |
---|---|---|
committer | Tim Angus <tim@ngus.net> | 2013-01-03 00:16:38 +0000 |
commit | 6d2ffb4c637a49983bc6ce22b68ccec0ed09e0f4 (patch) | |
tree | ff15343e4a2ae5a2512c1c21e05a3821a46f10da /src/renderer | |
parent | e9e52d0b7ec9bae071534df7581126d69d3e9bf8 (diff) |
* Merge ioq3-r1637
Diffstat (limited to 'src/renderer')
-rw-r--r-- | src/renderer/tr_init.c | 13 | ||||
-rw-r--r-- | src/renderer/tr_local.h | 1 | ||||
-rw-r--r-- | src/renderer/tr_main.c | 6 | ||||
-rw-r--r-- | src/renderer/tr_noise.c | 2 | ||||
-rw-r--r-- | src/renderer/tr_scene.c | 8 | ||||
-rw-r--r-- | src/renderer/tr_surface.c | 30 |
6 files changed, 35 insertions, 25 deletions
diff --git a/src/renderer/tr_init.c b/src/renderer/tr_init.c index f90b8026..ce2b8642 100644 --- a/src/renderer/tr_init.c +++ b/src/renderer/tr_init.c @@ -99,6 +99,7 @@ cvar_t *r_depthbits; cvar_t *r_colorbits; cvar_t *r_primitives; cvar_t *r_texturebits; +cvar_t *r_ext_multisample; cvar_t *r_drawBuffer; cvar_t *r_lightmap; @@ -388,7 +389,7 @@ void RB_TakeScreenshot( int x, int y, int width, int height, char *fileName ) { } // gamma correct - if ( ( tr.overbrightBits > 0 ) && glConfig.deviceSupportsGamma ) { + if ( glConfig.deviceSupportsGamma ) { R_GammaCorrect( buffer + 18, glConfig.vidWidth * glConfig.vidHeight * 3 ); } @@ -410,7 +411,7 @@ void RB_TakeScreenshotJPEG( int x, int y, int width, int height, char *fileName qglReadPixels( x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, buffer ); // gamma correct - if ( ( tr.overbrightBits > 0 ) && glConfig.deviceSupportsGamma ) { + if ( glConfig.deviceSupportsGamma ) { R_GammaCorrect( buffer, glConfig.vidWidth * glConfig.vidHeight * 4 ); } @@ -530,7 +531,7 @@ void R_LevelShot( void ) { float xScale, yScale; int xx, yy; - sprintf( checkname, "levelshots/%s.tga", tr.world->baseName ); + Com_sprintf(checkname, sizeof(checkname), "levelshots/%s.tga", tr.world->baseName); source = ri.Hunk_AllocateTempMemory( glConfig.vidWidth * glConfig.vidHeight * 3 ); @@ -565,7 +566,7 @@ void R_LevelShot( void ) { } // gamma correct - if ( ( tr.overbrightBits > 0 ) && glConfig.deviceSupportsGamma ) { + if ( glConfig.deviceSupportsGamma ) { R_GammaCorrect( buffer + 18, 128 * 128 * 3 ); } @@ -714,7 +715,7 @@ const void *RB_TakeVideoFrameCmd( const void *data ) GL_UNSIGNED_BYTE, cmd->captureBuffer ); // gamma correct - if( ( tr.overbrightBits > 0 ) && glConfig.deviceSupportsGamma ) + if( glConfig.deviceSupportsGamma ) R_GammaCorrect( cmd->captureBuffer, cmd->width * cmd->height * 4 ); if( cmd->motionJpeg ) @@ -913,6 +914,8 @@ void R_Register( void ) r_colorbits = ri.Cvar_Get( "r_colorbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_stencilbits = ri.Cvar_Get( "r_stencilbits", "8", CVAR_ARCHIVE | CVAR_LATCH ); r_depthbits = ri.Cvar_Get( "r_depthbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); + r_ext_multisample = ri.Cvar_Get( "r_ext_multisample", "0", CVAR_ARCHIVE | CVAR_LATCH ); + ri.Cvar_CheckRange( r_ext_multisample, 0, 4, qtrue ); r_overBrightBits = ri.Cvar_Get ("r_overBrightBits", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ignorehwgamma = ri.Cvar_Get( "r_ignorehwgamma", "0", CVAR_ARCHIVE | CVAR_LATCH); r_fullscreen = ri.Cvar_Get( "r_fullscreen", "1", CVAR_ARCHIVE ); diff --git a/src/renderer/tr_local.h b/src/renderer/tr_local.h index ef434718..9f8e44f9 100644 --- a/src/renderer/tr_local.h +++ b/src/renderer/tr_local.h @@ -1002,6 +1002,7 @@ 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 diff --git a/src/renderer/tr_main.c b/src/renderer/tr_main.c index 3d908316..105dfdf2 100644 --- a/src/renderer/tr_main.c +++ b/src/renderer/tr_main.c @@ -457,7 +457,7 @@ void R_SetupFrustum (viewParms_t *dest, float xmin, float xmax, float ymax, floa float oppleg, adjleg, length; int i; - if(stereoSep == 0 && xmin != -xmax) + if(stereoSep == 0 && xmin == -xmax) { // symmetric case can be simplified VectorCopy(dest->or.origin, ofsorigin); @@ -524,9 +524,9 @@ void R_SetupProjection(viewParms_t *dest, float zProj, qboolean computeFrustum) if(stereoSep != 0) { if(dest->stereoFrame == STEREO_LEFT) - stereoSep = zProj / r_stereoSeparation->value; + stereoSep = zProj / stereoSep; else if(dest->stereoFrame == STEREO_RIGHT) - stereoSep = zProj / -r_stereoSeparation->value; + stereoSep = zProj / -stereoSep; else stereoSep = 0; } diff --git a/src/renderer/tr_noise.c b/src/renderer/tr_noise.c index c8eeeed3..3a38d9d8 100644 --- a/src/renderer/tr_noise.c +++ b/src/renderer/tr_noise.c @@ -45,8 +45,6 @@ void R_NoiseInit( void ) { int i; - srand( 1001 ); - for ( i = 0; i < NOISE_SIZE; i++ ) { s_noise_table[i] = ( float ) ( ( ( rand() / ( float ) RAND_MAX ) * 2.0 - 1.0 ) ); diff --git a/src/renderer/tr_scene.c b/src/renderer/tr_scene.c index 22b3842b..e11c0a3d 100644 --- a/src/renderer/tr_scene.c +++ b/src/renderer/tr_scene.c @@ -212,6 +212,14 @@ void RE_AddRefEntityToScene( const refEntity_t *ent ) { if ( r_numentities >= MAX_ENTITIES ) { return; } + if ( Q_isnan(ent->origin[0]) || Q_isnan(ent->origin[1]) || Q_isnan(ent->origin[2]) ) { + static qboolean first_time = qtrue; + if (first_time) { + first_time = qfalse; + Com_Printf(S_COLOR_YELLOW "WARNING: You might have built ioquake3 with a buggy compiler!\n"); + } + return; + } if ( ent->reType < 0 || ent->reType >= RT_MAX_REF_ENTITY_TYPE ) { ri.Error( ERR_DROP, "RE_AddRefEntityToScene: bad reType %i", ent->reType ); } diff --git a/src/renderer/tr_surface.c b/src/renderer/tr_surface.c index 2a291c84..fca9841c 100644 --- a/src/renderer/tr_surface.c +++ b/src/renderer/tr_surface.c @@ -190,7 +190,7 @@ static void RB_SurfaceSprite( void ) { RB_SurfacePolychain ============= */ -void RB_SurfacePolychain( srfPoly_t *p ) { +static void RB_SurfacePolychain( srfPoly_t *p ) { int i; int numv; @@ -224,7 +224,7 @@ void RB_SurfacePolychain( srfPoly_t *p ) { RB_SurfaceTriangles ============= */ -void RB_SurfaceTriangles( srfTriangles_t *srf ) { +static void RB_SurfaceTriangles( srfTriangles_t *srf ) { int i; drawVert_t *dv; float *xyz, *normal, *texCoords; @@ -285,7 +285,7 @@ void RB_SurfaceTriangles( srfTriangles_t *srf ) { RB_SurfaceBeam ============== */ -void RB_SurfaceBeam( void ) +static void RB_SurfaceBeam( void ) { #define NUM_BEAM_SEGS 6 refEntity_t *e; @@ -455,7 +455,7 @@ static void DoRailDiscs( int numSegs, const vec3_t start, const vec3_t dir, cons /* ** RB_SurfaceRailRinges */ -void RB_SurfaceRailRings( void ) { +static void RB_SurfaceRailRings( void ) { refEntity_t *e; int numSegs; int len; @@ -485,7 +485,7 @@ void RB_SurfaceRailRings( void ) { /* ** RB_SurfaceRailCore */ -void RB_SurfaceRailCore( void ) { +static void RB_SurfaceRailCore( void ) { refEntity_t *e; int len; vec3_t right; @@ -515,7 +515,7 @@ void RB_SurfaceRailCore( void ) { /* ** RB_SurfaceLightningBolt */ -void RB_SurfaceLightningBolt( void ) { +static void RB_SurfaceLightningBolt( void ) { refEntity_t *e; int len; vec3_t right; @@ -857,7 +857,7 @@ static void LerpMeshVertexes(md3Surface_t *surf, float backlerp) RB_SurfaceMesh ============= */ -void RB_SurfaceMesh(md3Surface_t *surface) { +static void RB_SurfaceMesh(md3Surface_t *surface) { int j; float backlerp; int *triangles; @@ -904,7 +904,7 @@ void RB_SurfaceMesh(md3Surface_t *surface) { RB_SurfaceFace ============== */ -void RB_SurfaceFace( srfSurfaceFace_t *surf ) { +static void RB_SurfaceFace( srfSurfaceFace_t *surf ) { int i; unsigned *indices, *tessIndexes; float *v; @@ -994,7 +994,7 @@ RB_SurfaceGrid Just copy the grid of points and triangulate ============= */ -void RB_SurfaceGrid( srfGridMesh_t *cv ) { +static void RB_SurfaceGrid( srfGridMesh_t *cv ) { int i, j; float *xyz; float *texCoords; @@ -1161,7 +1161,7 @@ RB_SurfaceAxis Draws x/y/z lines from the origin for orientation debugging =================== */ -void RB_SurfaceAxis( void ) { +static void RB_SurfaceAxis( void ) { GL_Bind( tr.whiteImage ); qglLineWidth( 3 ); qglBegin( GL_LINES ); @@ -1187,7 +1187,7 @@ RB_SurfaceEntity Entities that have a single procedurally generated surface ==================== */ -void RB_SurfaceEntity( surfaceType_t *surfType ) { +static void RB_SurfaceEntity( surfaceType_t *surfType ) { switch( backEnd.currentEntity->e.reType ) { case RT_SPRITE: RB_SurfaceSprite(); @@ -1211,23 +1211,23 @@ void RB_SurfaceEntity( surfaceType_t *surfType ) { return; } -void RB_SurfaceBad( surfaceType_t *surfType ) { +static void RB_SurfaceBad( surfaceType_t *surfType ) { ri.Printf( PRINT_ALL, "Bad surface tesselated.\n" ); } -void RB_SurfaceFlare(srfFlare_t *surf) +static void RB_SurfaceFlare(srfFlare_t *surf) { if (r_flares->integer) RB_AddFlare(surf, tess.fogNum, surf->origin, surf->color, surf->normal); } -void RB_SurfaceDisplayList( srfDisplayList_t *surf ) { +static void RB_SurfaceDisplayList( srfDisplayList_t *surf ) { // all apropriate state must be set in RB_BeginSurface // this isn't implemented yet... qglCallList( surf->listNum ); } -void RB_SurfaceSkip( void *surf ) { +static void RB_SurfaceSkip( void *surf ) { } |