[iortcw] 467/497: All: Rend2: Add option in code for alternate overbright method

Simon McVittie smcv at debian.org
Fri Sep 8 10:37:55 UTC 2017


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

smcv pushed a commit to annotated tag 1.42d
in repository iortcw.

commit d210625caf3036a894fb7ea4ac9da925fe659e2b
Author: MAN-AT-ARMS <M4N4T4RMS at gmail.com>
Date:   Thu Dec 10 11:20:19 2015 -0500

    All: Rend2: Add option in code for alternate overbright method
---
 MP/code/rend2/tr_bsp.c   | 11 ++++++++++-
 MP/code/rend2/tr_image.c |  4 ++++
 MP/code/rend2/tr_local.h |  2 +-
 MP/code/rend2/tr_scene.c |  4 ++++
 MP/code/rend2/tr_shade.c | 23 ++++++++++++++++-------
 SP/code/rend2/tr_bsp.c   | 10 ++++++++++
 SP/code/rend2/tr_image.c |  4 ++++
 SP/code/rend2/tr_local.h |  2 +-
 SP/code/rend2/tr_scene.c |  4 ++++
 SP/code/rend2/tr_shade.c | 23 ++++++++++++++++-------
 10 files changed, 70 insertions(+), 17 deletions(-)

diff --git a/MP/code/rend2/tr_bsp.c b/MP/code/rend2/tr_bsp.c
index 399f2fc..cd4a1b2 100644
--- a/MP/code/rend2/tr_bsp.c
+++ b/MP/code/rend2/tr_bsp.c
@@ -107,7 +107,11 @@ 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;
@@ -141,7 +145,9 @@ static void R_ColorShiftLightingFloats(float in[4], float out[4], float scale )
 {
 	float	r, g, b;
 
+#if defined(USE_OVERBRIGHT)
 	scale *= pow(2.0f, r_mapOverBrightBits->integer - tr.overbrightBits);
+#endif
 
 	r = in[0] * scale;
 	g = in[1] * scale;
@@ -3105,8 +3111,11 @@ void R_LoadLightGrid( lump_t *l ) {
 
 		if (hdrLightGrid)
 		{
+#if defined(USE_OVERBRIGHT)
 			float lightScale = pow(2, r_mapOverBrightBits->integer - tr.overbrightBits);
-
+#else
+			float lightScale = 1.0f;
+#endif
 			//ri.Printf(PRINT_ALL, "found!\n");
 
 			if (size != sizeof(float) * 6 * numGridPoints)
diff --git a/MP/code/rend2/tr_image.c b/MP/code/rend2/tr_image.c
index b6644ce..1dacfff 100644
--- a/MP/code/rend2/tr_image.c
+++ b/MP/code/rend2/tr_image.c
@@ -3029,7 +3029,11 @@ 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/MP/code/rend2/tr_local.h b/MP/code/rend2/tr_local.h
index a3958db..8d46e50 100644
--- a/MP/code/rend2/tr_local.h
+++ b/MP/code/rend2/tr_local.h
@@ -65,7 +65,7 @@ typedef unsigned int glIndex_t;
 #define CUBE_MAP_SIZE      (1 << CUBE_MAP_MIPS)
  
 #define USE_VERT_TANGENT_SPACE
-
+#define USE_OVERBRIGHT
 
 // a trRefEntity_t has all the information passed in by
 // the client game, as well as some locally derived info
diff --git a/MP/code/rend2/tr_scene.c b/MP/code/rend2/tr_scene.c
index 68cd57c..c2b96f1 100644
--- a/MP/code/rend2/tr_scene.c
+++ b/MP/code/rend2/tr_scene.c
@@ -465,7 +465,11 @@ void RE_BeginScene(const refdef_t *fd)
 		}
 		else
 		{
+#if defined(USE_OVERBRIGHT)
 			float scale = pow(2, r_mapOverBrightBits->integer - tr.overbrightBits - 8);
+#else
+			float scale = (1 << r_mapOverBrightBits->integer) / 255.0f;
+#endif
 			if (r_forceSun->integer)
 			{
 				VectorScale(tr.sunLight, scale * r_forceSunLightScale->value,   tr.refdef.sunCol);
diff --git a/MP/code/rend2/tr_shade.c b/MP/code/rend2/tr_shade.c
index b5d6709..abd214e 100644
--- a/MP/code/rend2/tr_shade.c
+++ b/MP/code/rend2/tr_shade.c
@@ -479,9 +479,22 @@ static void ProjectDlightTexture( void ) {
 
 static void ComputeShaderColors( shaderStage_t *pStage, vec4_t baseColor, vec4_t vertColor, int blend )
 {
+	qboolean isBlend = ((blend & GLS_SRCBLEND_BITS) == GLS_SRCBLEND_DST_COLOR)
+		|| ((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);
+
+#if defined(USE_OVERBRIGHT)
+	float exactLight = 1.0f;
+#else
+	float exactLight = (isBlend || !isWorldDraw) ? 1.0f : (float)(1 << r_mapOverBrightBits->integer);
+#endif
+
 	baseColor[0] = 
 	baseColor[1] =
-	baseColor[2] =
+	baseColor[2] = exactLight;
 	baseColor[3] = 1.0f;
 
 	vertColor[0] =
@@ -508,7 +521,7 @@ static void ComputeShaderColors( shaderStage_t *pStage, vec4_t baseColor, vec4_t
 
 			vertColor[0] =
 			vertColor[1] =
-			vertColor[2] = 
+			vertColor[2] = exactLight;
 			vertColor[3] = 1.0f;
 			break;
 		case CGEN_CONST:
@@ -644,11 +657,7 @@ static void ComputeShaderColors( shaderStage_t *pStage, vec4_t baseColor, vec4_t
 	}
 
 	// multiply color by overbrightbits if this isn't a blend
-	if (tr.overbrightBits 
-	 && !((blend & GLS_SRCBLEND_BITS) == GLS_SRCBLEND_DST_COLOR)
-	 && !((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))
+	if (tr.overbrightBits && !isBlend)
 	{
 		float scale = 1 << tr.overbrightBits;
 
diff --git a/SP/code/rend2/tr_bsp.c b/SP/code/rend2/tr_bsp.c
index e899aa8..c8c2c2c 100644
--- a/SP/code/rend2/tr_bsp.c
+++ b/SP/code/rend2/tr_bsp.c
@@ -107,7 +107,11 @@ 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;
@@ -141,7 +145,9 @@ static void R_ColorShiftLightingFloats(float in[4], float out[4], float scale )
 {
 	float	r, g, b;
 
+#if defined(USE_OVERBRIGHT)
 	scale *= pow(2.0f, r_mapOverBrightBits->integer - tr.overbrightBits);
+#endif
 
 	r = in[0] * scale;
 	g = in[1] * scale;
@@ -3093,7 +3099,11 @@ void R_LoadLightGrid( lump_t *l ) {
 
 		if (hdrLightGrid)
 		{
+#if defined(USE_OVERBRIGHT)
 			float lightScale = pow(2, r_mapOverBrightBits->integer - tr.overbrightBits);
+#else
+			float lightScale = 1.0f;
+#endif
 
 			//ri.Printf(PRINT_ALL, "found!\n");
 
diff --git a/SP/code/rend2/tr_image.c b/SP/code/rend2/tr_image.c
index 33cfe02..a17ac5f 100644
--- a/SP/code/rend2/tr_image.c
+++ b/SP/code/rend2/tr_image.c
@@ -3046,7 +3046,11 @@ 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/SP/code/rend2/tr_local.h b/SP/code/rend2/tr_local.h
index 6696609..29048cc 100644
--- a/SP/code/rend2/tr_local.h
+++ b/SP/code/rend2/tr_local.h
@@ -65,7 +65,7 @@ typedef unsigned int glIndex_t;
 #define CUBE_MAP_SIZE      (1 << CUBE_MAP_MIPS)
  
 #define USE_VERT_TANGENT_SPACE
-
+#define USE_OVERBRIGHT
 
 // a trRefEntity_t has all the information passed in by
 // the client game, as well as some locally derived info
diff --git a/SP/code/rend2/tr_scene.c b/SP/code/rend2/tr_scene.c
index 72ac184..2a21068 100644
--- a/SP/code/rend2/tr_scene.c
+++ b/SP/code/rend2/tr_scene.c
@@ -478,7 +478,11 @@ void RE_BeginScene(const refdef_t *fd)
 		}
 		else
 		{
+#if defined(USE_OVERBRIGHT)
 			float scale = pow(2, r_mapOverBrightBits->integer - tr.overbrightBits - 8);
+#else
+			float scale = (1 << r_mapOverBrightBits->integer) / 255.0f;
+#endif
 			if (r_forceSun->integer)
 			{
 				VectorScale(tr.sunLight, scale * r_forceSunLightScale->value,   tr.refdef.sunCol);
diff --git a/SP/code/rend2/tr_shade.c b/SP/code/rend2/tr_shade.c
index 8976b43..6476445 100644
--- a/SP/code/rend2/tr_shade.c
+++ b/SP/code/rend2/tr_shade.c
@@ -473,9 +473,22 @@ static void ProjectDlightTexture( void ) {
 
 static void ComputeShaderColors( shaderStage_t *pStage, vec4_t baseColor, vec4_t vertColor, int blend )
 {
+	qboolean isBlend = ((blend & GLS_SRCBLEND_BITS) == GLS_SRCBLEND_DST_COLOR)
+		|| ((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);
+
+#if defined(USE_OVERBRIGHT)
+	float exactLight = 1.0f;
+#else
+	float exactLight = (isBlend || !isWorldDraw) ? 1.0f : (float)(1 << r_mapOverBrightBits->integer);
+#endif
+
 	baseColor[0] = 
 	baseColor[1] =
-	baseColor[2] =
+	baseColor[2] = exactLight;
 	baseColor[3] = 1.0f;
 
 	vertColor[0] =
@@ -502,7 +515,7 @@ static void ComputeShaderColors( shaderStage_t *pStage, vec4_t baseColor, vec4_t
 
 			vertColor[0] =
 			vertColor[1] =
-			vertColor[2] = 
+			vertColor[2] = exactLight;
 			vertColor[3] = 1.0f;
 			break;
 		case CGEN_CONST:
@@ -638,11 +651,7 @@ static void ComputeShaderColors( shaderStage_t *pStage, vec4_t baseColor, vec4_t
 	}
 
 	// multiply color by overbrightbits if this isn't a blend
-	if (tr.overbrightBits 
-	 && !((blend & GLS_SRCBLEND_BITS) == GLS_SRCBLEND_DST_COLOR)
-	 && !((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))
+	if (tr.overbrightBits && !isBlend)
 	{
 		float scale = 1 << tr.overbrightBits;
 

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



More information about the Pkg-games-commits mailing list