summaryrefslogtreecommitdiff
path: root/src/renderer
diff options
context:
space:
mode:
authorTim Angus <tim@ngus.net>2009-10-03 15:17:16 +0000
committerTim Angus <tim@ngus.net>2013-01-03 00:16:38 +0000
commit6d2ffb4c637a49983bc6ce22b68ccec0ed09e0f4 (patch)
treeff15343e4a2ae5a2512c1c21e05a3821a46f10da /src/renderer
parente9e52d0b7ec9bae071534df7581126d69d3e9bf8 (diff)
* Merge ioq3-r1637
Diffstat (limited to 'src/renderer')
-rw-r--r--src/renderer/tr_init.c13
-rw-r--r--src/renderer/tr_local.h1
-rw-r--r--src/renderer/tr_main.c6
-rw-r--r--src/renderer/tr_noise.c2
-rw-r--r--src/renderer/tr_scene.c8
-rw-r--r--src/renderer/tr_surface.c30
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 ) {
}