From b6fb89caaa0e15976a2e529cab41867961ce4bcd Mon Sep 17 00:00:00 2001 From: Artem Kharytoniuk Date: Thu, 18 May 2017 22:35:19 +0300 Subject: [PATCH] Fixed bug with invalid initialization of tr.shadowShader (it was broken in the first commit on april 10). Disable stencil test after we done with shadow volumes rendering. --- src/engine/renderer/tr_shader.c | 15 ++++++--------- src/engine/renderer/tr_shadows.c | 1 + 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/engine/renderer/tr_shader.c b/src/engine/renderer/tr_shader.c index b28b603..c1ecf5d 100644 --- a/src/engine/renderer/tr_shader.c +++ b/src/engine/renderer/tr_shader.c @@ -2892,6 +2892,12 @@ static void CreateInternalShaders( void ) { tr.defaultShader = FinishShader(); + // shadow shader is just a marker + Q_strncpyz( shader.name, "", sizeof( shader.name ) ); + shader.sort = SS_STENCIL_SHADOW; + + tr.shadowShader = FinishShader(); + // cinematic shader Com_Memset( &shader, 0, sizeof( shader ) ); Com_Memset( &stages, 0, sizeof( stages ) ); @@ -2905,15 +2911,6 @@ static void CreateInternalShaders( void ) { stages[0].stateBits = GLS_DEPTHTEST_DISABLE; tr.cinematicShader = FinishShader(); - - // shadow shader is just a marker - Com_Memset( &shader, 0, sizeof( shader ) ); - Com_Memset( &stages, 0, sizeof( stages ) ); - - Q_strncpyz( shader.name, "", sizeof( shader.name ) ); - shader.sort = SS_STENCIL_SHADOW; - - tr.shadowShader = FinishShader(); } static void CreateExternalShaders( void ) { diff --git a/src/engine/renderer/tr_shadows.c b/src/engine/renderer/tr_shadows.c index f720e4e..1281ab6 100644 --- a/src/engine/renderer/tr_shadows.c +++ b/src/engine/renderer/tr_shadows.c @@ -263,6 +263,7 @@ void RB_ShadowTessEnd( void ) { R_Vk_RenderShadowEdges(vk.shadow_volume_pipelines[1][0]); } + qglDisable(GL_STENCIL_TEST); // reenable writing to the color buffer qglColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE );