diff --git a/code/renderergl2/tr_backend.c b/code/renderergl2/tr_backend.c index 82a353de..5c349dee 100644 --- a/code/renderergl2/tr_backend.c +++ b/code/renderergl2/tr_backend.c @@ -712,9 +712,6 @@ void RB_SetGL2D (void) { // set time for 2D shaders backEnd.refdef.time = ri.Milliseconds(); backEnd.refdef.floatTime = backEnd.refdef.time * 0.001f; - - // reset color scaling - backEnd.refdef.colorScale = 1.0f; } diff --git a/code/renderergl2/tr_bsp.c b/code/renderergl2/tr_bsp.c index 8b923c3d..8f56de8e 100644 --- a/code/renderergl2/tr_bsp.c +++ b/code/renderergl2/tr_bsp.c @@ -105,11 +105,7 @@ static void R_ColorShiftLightingBytes( byte in[4], byte out[4] ) { int shift, r, g, b; // shift the color data based on overbright range -#if defined(USE_OVERBRIGHT) shift = r_mapOverBrightBits->integer - tr.overbrightBits; -#else - shift = 0; -#endif // shift the data based on overbright range r = in[0] << shift; @@ -144,9 +140,7 @@ static void R_ColorShiftLightingFloats(float in[4], float out[4], float scale ) { float r, g, b; -#if defined(USE_OVERBRIGHT) scale *= 1 << (r_mapOverBrightBits->integer - tr.overbrightBits); -#endif r = in[0] * scale; g = in[1] * scale; @@ -2686,11 +2680,7 @@ void R_LoadLightGrid( lump_t *l ) { if (hdrLightGrid) { -#if defined(USE_OVERBRIGHT) float lightScale = 1 << (r_mapOverBrightBits->integer - tr.overbrightBits); -#else - float lightScale = 1.0f; -#endif //ri.Printf(PRINT_ALL, "found!\n"); @@ -3165,7 +3155,6 @@ void RE_LoadWorldMap( const char *name ) { } // set default map light scale - tr.mapLightScale = 1.0f; tr.sunShadowScale = 0.5f; // set default sun direction to be used if it isn't diff --git a/code/renderergl2/tr_image.c b/code/renderergl2/tr_image.c index 95989b93..3e8099a9 100644 --- a/code/renderergl2/tr_image.c +++ b/code/renderergl2/tr_image.c @@ -2845,11 +2845,7 @@ void R_SetColorMappings( void ) { int inf; // setup the overbright lighting -#if defined(USE_OVERBRIGHT) tr.overbrightBits = r_overBrightBits->integer; -#else - tr.overbrightBits = 0; -#endif // allow 2 overbright bits if ( tr.overbrightBits > 2 ) { diff --git a/code/renderergl2/tr_init.c b/code/renderergl2/tr_init.c index 88090393..30803e2b 100644 --- a/code/renderergl2/tr_init.c +++ b/code/renderergl2/tr_init.c @@ -155,7 +155,6 @@ cvar_t *r_imageUpsampleMaxSize; cvar_t *r_imageUpsampleType; cvar_t *r_genNormalMaps; cvar_t *r_forceSun; -cvar_t *r_forceSunMapLightScale; cvar_t *r_forceSunLightScale; cvar_t *r_forceSunAmbientScale; cvar_t *r_sunlightMode; @@ -1245,7 +1244,6 @@ void R_Register( void ) r_genNormalMaps = ri.Cvar_Get( "r_genNormalMaps", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_forceSun = ri.Cvar_Get( "r_forceSun", "0", CVAR_CHEAT ); - r_forceSunMapLightScale = ri.Cvar_Get( "r_forceSunMapLightScale", "1.0", CVAR_CHEAT ); r_forceSunLightScale = ri.Cvar_Get( "r_forceSunLightScale", "1.0", CVAR_CHEAT ); r_forceSunAmbientScale = ri.Cvar_Get( "r_forceSunAmbientScale", "0.5", CVAR_CHEAT ); r_drawSunRays = ri.Cvar_Get( "r_drawSunRays", "0", CVAR_ARCHIVE | CVAR_LATCH ); diff --git a/code/renderergl2/tr_local.h b/code/renderergl2/tr_local.h index a2707cbc..09e70d26 100644 --- a/code/renderergl2/tr_local.h +++ b/code/renderergl2/tr_local.h @@ -56,7 +56,6 @@ typedef unsigned int glIndex_t; #define PSHADOW_MAP_SIZE 512 #define USE_VERT_TANGENT_SPACE -#define USE_OVERBRIGHT typedef struct cubemap_s { char name[MAX_QPATH]; @@ -761,7 +760,6 @@ typedef struct { float sunDir[4]; float sunCol[4]; float sunAmbCol[4]; - float colorScale; float autoExposureMinMax[2]; float toneMinAvgMaxLinear[3]; @@ -1608,7 +1606,6 @@ typedef struct { int viewCluster; - float mapLightScale; float sunShadowScale; qboolean sunShadows; @@ -1801,7 +1798,6 @@ extern cvar_t *r_imageUpsampleMaxSize; extern cvar_t *r_imageUpsampleType; extern cvar_t *r_genNormalMaps; extern cvar_t *r_forceSun; -extern cvar_t *r_forceSunMapLightScale; extern cvar_t *r_forceSunLightScale; extern cvar_t *r_forceSunAmbientScale; extern cvar_t *r_sunlightMode; diff --git a/code/renderergl2/tr_main.c b/code/renderergl2/tr_main.c index 35760797..ddbbf905 100644 --- a/code/renderergl2/tr_main.c +++ b/code/renderergl2/tr_main.c @@ -2551,7 +2551,6 @@ void R_RenderCubemapSide( int cubemapIndex, int cubemapSide, qboolean subscene ) { refdef_t refdef; viewParms_t parms; - float oldColorScale = tr.refdef.colorScale; memset( &refdef, 0, sizeof( refdef ) ); refdef.rdflags = 0; @@ -2629,7 +2628,6 @@ void R_RenderCubemapSide( int cubemapIndex, int cubemapSide, qboolean subscene ) R_LightForPoint(tr.refdef.vieworg, ambient, directed, lightDir); scale = directed[0] + directed[1] + directed[2] + ambient[0] + ambient[1] + ambient[2] + 1.0f; - tr.refdef.colorScale = 1.0f; //766.0f / scale; // only print message for first side if (scale < 1.0001f && cubemapSide == 0) { @@ -2670,12 +2668,6 @@ void R_RenderCubemapSide( int cubemapIndex, int cubemapSide, qboolean subscene ) R_RenderView(&parms); - if (subscene) - { - tr.refdef.colorScale = oldColorScale; - } - else - { + if (!subscene) RE_EndScene(); - } } diff --git a/code/renderergl2/tr_scene.c b/code/renderergl2/tr_scene.c index 410f81e4..2d039e7c 100644 --- a/code/renderergl2/tr_scene.c +++ b/code/renderergl2/tr_scene.c @@ -329,18 +329,12 @@ void RE_BeginScene(const refdef_t *fd) VectorCopy(tr.sunDirection, tr.refdef.sunDir); if ( (tr.refdef.rdflags & RDF_NOWORLDMODEL) || !(r_depthPrepass->value) ){ - tr.refdef.colorScale = 1.0f; VectorSet(tr.refdef.sunCol, 0, 0, 0); VectorSet(tr.refdef.sunAmbCol, 0, 0, 0); } else { -#if defined(USE_OVERBRIGHT) - float scale = (1 << (r_mapOverBrightBits->integer - tr.overbrightBits)) / 255.0f; -#else float scale = (1 << r_mapOverBrightBits->integer) / 255.0f; -#endif - tr.refdef.colorScale = r_forceSun->integer ? r_forceSunMapLightScale->value : tr.mapLightScale; if (r_forceSun->integer) VectorScale(tr.sunLight, scale * r_forceSunLightScale->value, tr.refdef.sunCol); diff --git a/code/renderergl2/tr_shade.c b/code/renderergl2/tr_shade.c index 1cfc42d8..705f5d03 100644 --- a/code/renderergl2/tr_shade.c +++ b/code/renderergl2/tr_shade.c @@ -446,18 +446,16 @@ static void ComputeShaderColors( shaderStage_t *pStage, vec4_t baseColor, vec4_t || ((blend & GLS_SRCBLEND_BITS) == GLS_SRCBLEND_ONE_MINUS_DST_COLOR) || ((blend & GLS_DSTBLEND_BITS) == GLS_DSTBLEND_SRC_COLOR) || ((blend & GLS_DSTBLEND_BITS) == GLS_DSTBLEND_ONE_MINUS_SRC_COLOR); - qboolean isWorldDraw = !(backEnd.refdef.rdflags & RDF_NOWORLDMODEL); - float scale = 1.0f; -#if defined(USE_OVERBRIGHT) - float exactLight = 1.0f; -#else - float exactLight = (isBlend || !isWorldDraw) ? 1.0f : (float)(1 << r_mapOverBrightBits->integer); -#endif + qboolean is2DDraw = backEnd.currentEntity == &backEnd.entity2D; + + float overbright = (isBlend || is2DDraw) ? 1.0f : (float)(1 << tr.overbrightBits); + + fog_t *fog; baseColor[0] = baseColor[1] = - baseColor[2] = exactLight; + baseColor[2] = baseColor[3] = 1.0f; vertColor[0] = @@ -470,11 +468,6 @@ static void ComputeShaderColors( shaderStage_t *pStage, vec4_t baseColor, vec4_t // switch ( pStage->rgbGen ) { - case CGEN_IDENTITY_LIGHTING: - baseColor[0] = - baseColor[1] = - baseColor[2] = tr.identityLight; - break; case CGEN_EXACT_VERTEX: case CGEN_EXACT_VERTEX_LIT: baseColor[0] = @@ -484,7 +477,7 @@ static void ComputeShaderColors( shaderStage_t *pStage, vec4_t baseColor, vec4_t vertColor[0] = vertColor[1] = - vertColor[2] = exactLight; + vertColor[2] = overbright; vertColor[3] = 1.0f; break; case CGEN_CONST: @@ -494,47 +487,33 @@ static void ComputeShaderColors( shaderStage_t *pStage, vec4_t baseColor, vec4_t baseColor[3] = pStage->constantColor[3] / 255.0f; break; case CGEN_VERTEX: - baseColor[0] = + case CGEN_VERTEX_LIT: + baseColor[0] = baseColor[1] = baseColor[2] = baseColor[3] = 0.0f; vertColor[0] = vertColor[1] = - vertColor[2] = tr.identityLight; + vertColor[2] = vertColor[3] = 1.0f; break; - case CGEN_VERTEX_LIT: - baseColor[0] = - baseColor[1] = - baseColor[2] = - baseColor[3] = 0.0f; - - vertColor[0] = - vertColor[1] = - vertColor[2] = - vertColor[3] = tr.identityLight; - break; case CGEN_ONE_MINUS_VERTEX: baseColor[0] = baseColor[1] = - baseColor[2] = tr.identityLight; + baseColor[2] = 1.0f; vertColor[0] = vertColor[1] = - vertColor[2] = -tr.identityLight; + vertColor[2] = -1.0f; break; case CGEN_FOG: - { - fog_t *fog; + fog = tr.world->fogs + tess.fogNum; - fog = tr.world->fogs + tess.fogNum; - - baseColor[0] = ((unsigned char *)(&fog->colorInt))[0] / 255.0f; - baseColor[1] = ((unsigned char *)(&fog->colorInt))[1] / 255.0f; - baseColor[2] = ((unsigned char *)(&fog->colorInt))[2] / 255.0f; - baseColor[3] = ((unsigned char *)(&fog->colorInt))[3] / 255.0f; - } + baseColor[0] = ((unsigned char *)(&fog->colorInt))[0] / 255.0f; + baseColor[1] = ((unsigned char *)(&fog->colorInt))[1] / 255.0f; + baseColor[2] = ((unsigned char *)(&fog->colorInt))[2] / 255.0f; + baseColor[3] = ((unsigned char *)(&fog->colorInt))[3] / 255.0f; break; case CGEN_WAVEFORM: baseColor[0] = @@ -561,6 +540,11 @@ static void ComputeShaderColors( shaderStage_t *pStage, vec4_t baseColor, vec4_t break; case CGEN_IDENTITY: case CGEN_LIGHTING_DIFFUSE: + baseColor[0] = + baseColor[1] = + baseColor[2] = overbright; + break; + case CGEN_IDENTITY_LIGHTING: case CGEN_BAD: break; } @@ -611,18 +595,6 @@ static void ComputeShaderColors( shaderStage_t *pStage, vec4_t baseColor, vec4_t break; } - if (tr.overbrightBits && !isBlend) - scale *= 1 << tr.overbrightBits; - - if ((backEnd.refdef.colorScale != 1.0f) && !isBlend && isWorldDraw) - scale *= backEnd.refdef.colorScale; - - if (scale != 1.0f) - { - VectorScale(baseColor, scale, baseColor); - VectorScale(vertColor, scale, vertColor); - } - // FIXME: find some way to implement this. #if 0 // if in greyscale rendering mode turn all color values into greyscale. diff --git a/code/renderergl2/tr_shader.c b/code/renderergl2/tr_shader.c index 0ef90211..4da8a0bc 100644 --- a/code/renderergl2/tr_shader.c +++ b/code/renderergl2/tr_shader.c @@ -1826,11 +1826,13 @@ static qboolean ParseShader( char **text ) if (isGL2Sun) { - token = COM_ParseExt( text, qfalse ); - tr.mapLightScale = atof(token); - token = COM_ParseExt( text, qfalse ); tr.sunShadowScale = atof(token); + + // parse twice, since older shaders may include mapLightScale before sunShadowScale + token = COM_ParseExt( text, qfalse ); + if (token[0]) + tr.sunShadowScale = atof(token); } SkipRestOfLine( text ); diff --git a/code/renderergl2/tr_sky.c b/code/renderergl2/tr_sky.c index cc6b9cd8..3b4e860d 100644 --- a/code/renderergl2/tr_sky.c +++ b/code/renderergl2/tr_sky.c @@ -448,7 +448,7 @@ static void DrawSkySide( struct image_s *image, const int mins[2], const int max color[0] = color[1] = - color[2] = backEnd.refdef.colorScale; + color[2] = color[3] = 1.0f; GLSL_SetUniformVec4(sp, UNIFORM_BASECOLOR, color); diff --git a/opengl2-readme.md b/opengl2-readme.md index bbddc36c..857a4600 100644 --- a/opengl2-readme.md +++ b/opengl2-readme.md @@ -264,10 +264,6 @@ Cvars for the sunlight and cascaded shadow maps: 1 - Do. 2 - Sunrise, sunset. -* `r_forceSunMapLightScale` - Cheat. Scale map brightness by this factor - when r_forceSun 1. - 1.0 - Default - * `r_forceSunLightScale` - Cheat. Scale sun brightness by this factor when r_forceSun 1. 1.0 - Default @@ -506,7 +502,7 @@ and is the equivalent for 'exactVertex'. This adds a new keyword to sky materials, q3gl2_sun. The syntax is: - q3gl2_sun + q3gl2_sun Note the first six parameters are the same as in q3map_sun or q3map_sunExt, and the last two indicate scaling factors for the map brightness and an ambient @@ -527,7 +523,7 @@ There are currently two ways to use this in your own (and other people's) maps. surfaceparm nolightmap surfaceparm sky q3map_sunExt 240 238 200 100 195 35 3 16 - q3gl2_sun 240 238 200 50 195 35 1.0 0.2 + q3gl2_sun 240 238 200 50 195 35 0.2 q3map_skylight 50 16 q3map_lightimage $whiteimage @@ -550,7 +546,7 @@ There are currently two ways to use this in your own (and other people's) maps. surfaceparm noimpact surfaceparm nolightmap surfaceparm sky - q3gl2_sun 240 238 200 50 195 35 0.5 0.2 + q3gl2_sun 240 238 200 50 195 35 0.2 q3map_skylight 50 16 q3map_lightimage $whiteimage