[ioquake3] 44/59: OpenGL2: Remove map color scaling and r_forceSunMapLightScale.

Simon McVittie smcv at debian.org
Wed Sep 21 19:57:09 UTC 2016


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch debian/master
in repository ioquake3.

commit 4faf1008a058e589ea97a182d5590ac737420ca2
Author: SmileTheory <SmileTheory at gmail.com>
Date:   Wed Sep 14 02:59:54 2016 -0700

    OpenGL2: Remove map color scaling and r_forceSunMapLightScale.
    
    Also simplify overbright code in ComputeShaderColors().
---
 code/renderergl2/tr_backend.c |  3 --
 code/renderergl2/tr_bsp.c     | 11 -------
 code/renderergl2/tr_image.c   |  4 ---
 code/renderergl2/tr_init.c    |  2 --
 code/renderergl2/tr_local.h   |  4 ---
 code/renderergl2/tr_main.c    | 10 +-----
 code/renderergl2/tr_scene.c   |  6 ----
 code/renderergl2/tr_shade.c   | 72 +++++++++++++------------------------------
 code/renderergl2/tr_shader.c  |  6 ++--
 code/renderergl2/tr_sky.c     |  2 +-
 opengl2-readme.md             | 10 ++----
 11 files changed, 31 insertions(+), 99 deletions(-)

diff --git a/code/renderergl2/tr_backend.c b/code/renderergl2/tr_backend.c
index 82a353d..5c349de 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 8b923c3..8f56de8 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 95989b9..3e8099a 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 8809039..30803e2 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 a2707cb..09e70d2 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 3576079..ddbbf90 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 410f81e..2d039e7 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 1cfc42d..705f5d0 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 0ef9021..4da8a0b 100644
--- a/code/renderergl2/tr_shader.c
+++ b/code/renderergl2/tr_shader.c
@@ -1827,10 +1827,12 @@ static qboolean ParseShader( char **text )
 			if (isGL2Sun)
 			{
 				token = COM_ParseExt( text, qfalse );
-				tr.mapLightScale = atof(token);
+				tr.sunShadowScale = atof(token);
 
+				// parse twice, since older shaders may include mapLightScale before sunShadowScale
 				token = COM_ParseExt( text, qfalse );
-				tr.sunShadowScale = atof(token);
+				if (token[0])
+					tr.sunShadowScale = atof(token);
 			}
 
 			SkipRestOfLine( text );
diff --git a/code/renderergl2/tr_sky.c b/code/renderergl2/tr_sky.c
index cc6b9cd..3b4e860 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 bbddc36..857a460 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 <red> <green> <blue> <intensity> <degrees> <elevation> <mapLightScale> <ambientLightScale>
+    q3gl2_sun <red> <green> <blue> <intensity> <degrees> <elevation> <shadowScale>
   
 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
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/ioquake3.git



More information about the Pkg-games-commits mailing list