fixed r_fullbright not being used and made it unlatched

removed the superfluous calls to GL_TexEnv for r_lightmap
This commit is contained in:
myT 2017-08-18 18:30:39 +02:00
parent f9fbe4797f
commit 37ef941ac2
5 changed files with 22 additions and 17 deletions

View File

@ -1,6 +1,8 @@
DD Mmm 17 - 1.49
fix: r_fullbright is no longer latched and actually does its job
fix: r_lightmap is now archived and actually does its job
add: r_greyscale to control how monochromatic the final image looks

View File

@ -185,23 +185,35 @@ static qbool GL2_DynLights_MultitextureStage( int stage )
const qbool lightmapOnly = r_lightmap->integer && (pStage->type == ST_LIGHTMAP || pPrevStage->type == ST_LIGHTMAP);
if ( lightmapOnly ) {
const int prevEnv = glState.texEnv[glState.currenttmu];
GL_TexEnv( GL_REPLACE );
if ( pStage->type == ST_LIGHTMAP ) {
R_BindAnimatedImage( &pStage->bundle );
R_ComputeTexCoords( pStage, svarsMT );
qglTexCoordPointer( 2, GL_FLOAT, 0, svarsMT.texcoords );
}
qglDrawElements( GL_TRIANGLES, tess.numIndexes, GL_INDEX_TYPE, tess.indexes );
GL_TexEnv( prevEnv );
return qtrue;
}
if ( r_fullbright->integer ) {
if ( pStage->type == ST_LIGHTMAP ) {
Com_Memset( tess.svars.colors, tr.identityLightByte, tess.numVertexes * 4 );
qglDrawElements( GL_TRIANGLES, tess.numIndexes, GL_INDEX_TYPE, tess.indexes );
return qfalse;
} else if ( pPrevStage->type == ST_LIGHTMAP ) {
Com_Memset( tess.svars.colors, tr.identityLightByte, tess.numVertexes * 4 );
R_BindAnimatedImage( &pStage->bundle );
R_ComputeTexCoords( pStage, svarsMT );
qglTexCoordPointer( 2, GL_FLOAT, 0, svarsMT.texcoords );
qglDrawElements( GL_TRIANGLES, tess.numIndexes, GL_INDEX_TYPE, tess.indexes );
return qfalse;
}
}
GL_SelectTexture( 1 );
qglEnable( GL_TEXTURE_2D );
GL_TexEnv( pStage->mtEnv );
R_BindAnimatedImage( &pStage->bundle );
R_ComputeTexCoords( pStage, svarsMT );
qglEnableClientState( GL_TEXTURE_COORD_ARRAY );
qglTexCoordPointer( 2, GL_FLOAT, 0, svarsMT.texcoords );

View File

@ -498,8 +498,6 @@ static void R_Register()
r_height = ri.Cvar_Get( "r_height", "600", CVAR_ARCHIVE | CVAR_LATCH );
r_customaspect = ri.Cvar_Get( "r_customaspect", "1.333", CVAR_ARCHIVE | CVAR_LATCH );
r_vertexLight = ri.Cvar_Get( "r_vertexLight", "0", CVAR_ARCHIVE | CVAR_LATCH );
r_fullbright = ri.Cvar_Get( "r_fullbright", "0", CVAR_ARCHIVE | CVAR_LATCH );
r_lightmap = ri.Cvar_Get( "r_lightmap", "0", CVAR_ARCHIVE );
r_subdivisions = ri.Cvar_Get( "r_subdivisions", "4", CVAR_ARCHIVE | CVAR_LATCH );
#ifdef USE_R_SMP
r_smp = ri.Cvar_Get( "r_smp", "0", CVAR_ARCHIVE | CVAR_LATCH );
@ -536,6 +534,8 @@ static void R_Register()
#endif
r_gamma = ri.Cvar_Get( "r_gamma", "1", CVAR_ARCHIVE );
r_greyscale = ri.Cvar_Get( "r_greyscale", "0", CVAR_ARCHIVE );
r_lightmap = ri.Cvar_Get( "r_lightmap", "0", CVAR_ARCHIVE );
r_fullbright = ri.Cvar_Get( "r_fullbright", "0", CVAR_ARCHIVE );
r_ambientScale = ri.Cvar_Get( "r_ambientScale", "0.6", CVAR_CHEAT );
r_directedScale = ri.Cvar_Get( "r_directedScale", "1", CVAR_CHEAT );

View File

@ -960,6 +960,8 @@ extern cvar_t *r_displayRefresh; // optional display refresh option
extern cvar_t *r_intensity;
extern cvar_t *r_gamma;
extern cvar_t *r_greyscale;
extern cvar_t *r_lightmap; // render lightmaps only
extern cvar_t *r_fullbright; // avoid lightmap pass
extern cvar_t *r_ext_max_anisotropy;
extern cvar_t *r_msaa;
@ -974,8 +976,6 @@ extern cvar_t *r_finish;
extern cvar_t *r_swapInterval;
extern cvar_t *r_textureMode;
extern cvar_t *r_fullbright; // avoid lightmap pass
extern cvar_t *r_lightmap; // render lightmaps only
extern cvar_t *r_vertexLight; // vertex lighting mode for better performance
extern cvar_t *r_uiFullScreen; // ui is running fullscreen

View File

@ -2009,15 +2009,6 @@ static shader_t* FinishShader()
shader.numStages = stage;
// fix up any stages that we want fullbright
if ( r_fullbright->integer && (shader.lightmapIndex == LIGHTMAP_BY_VERTEX) ) {
for ( int i = 0; i < shader.numStages; ++i ) {
if (stages[i].rgbGen == CGEN_EXACT_VERTEX) {
stages[i].rgbGen = CGEN_IDENTITY;
}
}
}
FindLightingStages();
CollapseStages();