[iortcw] 257/497: All: Rend2: Some culling fixes

Simon McVittie smcv at debian.org
Fri Sep 8 10:37:03 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 c5285014cf4123e5f8eef1e4a15be7ce5db21a88
Author: M4N4T4RMS at gmail.com <M4N4T4RMS at gmail.com@e65d2741-a53d-b2dc-ae96-bb75fa5e4c4a>
Date:   Sat Nov 29 10:24:38 2014 +0000

    All: Rend2: Some culling fixes
---
 MP/code/rend2/tr_backend.c |  2 +-
 MP/code/rend2/tr_init.c    |  2 ++
 MP/code/rend2/tr_shade.c   | 15 ++++++++++++++-
 SP/code/rend2/tr_backend.c |  2 +-
 SP/code/rend2/tr_init.c    |  2 ++
 SP/code/rend2/tr_shade.c   | 15 ++++++++++++++-
 6 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/MP/code/rend2/tr_backend.c b/MP/code/rend2/tr_backend.c
index 8543e00..e372f12 100644
--- a/MP/code/rend2/tr_backend.c
+++ b/MP/code/rend2/tr_backend.c
@@ -135,7 +135,7 @@ void GL_Cull( int cullType ) {
 	{
 		qboolean cullFront;
 
-		if ( glState.faceCulling == CT_TWO_SIDED )
+		if ( glState.faceCulling == CT_TWO_SIDED || glState.faceCulling == -1 )
 		{
 			qglEnable( GL_CULL_FACE );
 		}
diff --git a/MP/code/rend2/tr_init.c b/MP/code/rend2/tr_init.c
index a3bf09e..0fd6310 100644
--- a/MP/code/rend2/tr_init.c
+++ b/MP/code/rend2/tr_init.c
@@ -1020,6 +1020,8 @@ void GL_SetDefaultState( void ) {
 	//
 	glState.glStateBits = GLS_DEPTHTEST_DISABLE | GLS_DEPTHMASK_TRUE;
 	glState.storedGlState = 0;
+	glState.faceCulling = CT_TWO_SIDED;
+	glState.faceCullFront = CT_FRONT_SIDED;
 
 	glState.currentProgram = 0;
 	qglUseProgramObjectARB(0);
diff --git a/MP/code/rend2/tr_shade.c b/MP/code/rend2/tr_shade.c
index bd64b84..e643b63 100644
--- a/MP/code/rend2/tr_shade.c
+++ b/MP/code/rend2/tr_shade.c
@@ -1289,7 +1289,20 @@ static void RB_IterateStagesGeneric( shaderCommands_t *input )
 			GLSL_SetUniformFloat(sp, UNIFORM_FOGEYET, eyeT);
 		}
 
-		GL_State( pStage->stateBits );
+		{
+			unsigned int stateBits = pStage->stateBits;
+			
+			if (tess.shader->sort == SS_OPAQUE && r_depthPrepass->integer && !backEnd.depthFill && !(backEnd.refdef.rdflags & RDF_NOWORLDMODEL))
+			{
+				if (!(stateBits & GLS_DEPTHMASK_TRUE) && !(stateBits & GLS_DEPTHTEST_DISABLE) && (stateBits & GLS_DEPTHFUNC_BITS) != GLS_DEPTHFUNC_GREATER)
+				{
+					stateBits &= ~GLS_DEPTHFUNC_BITS;
+					stateBits |= GLS_DEPTHMASK_TRUE | GLS_DEPTHFUNC_EQUAL;
+				}
+			}
+ 
+			GL_State( stateBits );
+		}
 
 		{
 			vec4_t baseColor;
diff --git a/SP/code/rend2/tr_backend.c b/SP/code/rend2/tr_backend.c
index b6086d2..f804171 100644
--- a/SP/code/rend2/tr_backend.c
+++ b/SP/code/rend2/tr_backend.c
@@ -135,7 +135,7 @@ void GL_Cull( int cullType ) {
 	{
 		qboolean cullFront;
 
-		if ( glState.faceCulling == CT_TWO_SIDED )
+		if ( glState.faceCulling == CT_TWO_SIDED || glState.faceCulling == -1 )
 		{
 			qglEnable( GL_CULL_FACE );
 		}
diff --git a/SP/code/rend2/tr_init.c b/SP/code/rend2/tr_init.c
index 0e99183..86b1995 100644
--- a/SP/code/rend2/tr_init.c
+++ b/SP/code/rend2/tr_init.c
@@ -1025,6 +1025,8 @@ void GL_SetDefaultState( void ) {
 	//
 	glState.glStateBits = GLS_DEPTHTEST_DISABLE | GLS_DEPTHMASK_TRUE;
 	glState.storedGlState = 0;
+	glState.faceCulling = CT_TWO_SIDED;
+	glState.faceCullFront = CT_FRONT_SIDED;
 
 	glState.currentProgram = 0;
 	qglUseProgramObjectARB(0);
diff --git a/SP/code/rend2/tr_shade.c b/SP/code/rend2/tr_shade.c
index cd4cafb..8aa0071 100644
--- a/SP/code/rend2/tr_shade.c
+++ b/SP/code/rend2/tr_shade.c
@@ -1283,7 +1283,20 @@ static void RB_IterateStagesGeneric( shaderCommands_t *input )
 			GLSL_SetUniformFloat(sp, UNIFORM_FOGEYET, eyeT);
 		}
 
-		GL_State( pStage->stateBits );
+		{
+			unsigned int stateBits = pStage->stateBits;
+			
+			if (tess.shader->sort == SS_OPAQUE && r_depthPrepass->integer && !backEnd.depthFill && !(backEnd.refdef.rdflags & RDF_NOWORLDMODEL))
+			{
+				if (!(stateBits & GLS_DEPTHMASK_TRUE) && !(stateBits & GLS_DEPTHTEST_DISABLE) && (stateBits & GLS_DEPTHFUNC_BITS) != GLS_DEPTHFUNC_GREATER)
+				{
+					stateBits &= ~GLS_DEPTHFUNC_BITS;
+					stateBits |= GLS_DEPTHMASK_TRUE | GLS_DEPTHFUNC_EQUAL;
+				}
+			}
+ 
+			GL_State( stateBits );
+		}
 
 		{
 			vec4_t baseColor;

-- 
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