Skip to content

Commit 6476f2d

Browse files
committed
feat: twiddling
Signed-off-by: Michael Pollind <[email protected]>
1 parent 36e9a85 commit 6476f2d

File tree

3 files changed

+25
-20
lines changed

3 files changed

+25
-20
lines changed

source/cgame/cg_pmodels.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1310,6 +1310,9 @@ void CG_AddPModel( centity_t *cent )
13101310
if( !cent->ent.model )
13111311
return;
13121312

1313+
CG_PModel_AddFlag( cent );
1314+
1315+
CG_AddShellEffects( &cent->ent, cent->effects );
13131316

13141317
{
13151318
entity_t shellOutline = cent->ent;
@@ -1322,9 +1325,6 @@ void CG_AddPModel( centity_t *cent )
13221325
CG_AddEntityToScene( &shellOutline );
13231326
}
13241327

1325-
CG_PModel_AddFlag( cent );
1326-
1327-
CG_AddShellEffects( &cent->ent, cent->effects );
13281328

13291329
CG_AddHeadIcon( cent );
13301330

source/ref_gl/r_backend_program.c

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1379,7 +1379,7 @@ static void RB_RenderMeshGLSL_Shadowmap( const shaderpass_t *pass, r_glslfeat_t
13791379
*/
13801380
static void RB_RenderMeshGLSL_OverlayOutline( const shaderpass_t *pass, r_glslfeat_t programFeatures )
13811381
{
1382-
// int faceCull = rb.gl.faceCull;
1382+
int faceCull = rb.gl.faceCull;
13831383
mat4_t texMatrix;
13841384

13851385
if( rb.currentModelType == mod_brush ) {
@@ -1401,7 +1401,6 @@ static void RB_RenderMeshGLSL_OverlayOutline( const shaderpass_t *pass, r_glslfe
14011401

14021402
Matrix4_Identity( texMatrix );
14031403

1404-
//RB_Cull( GL_BACK );
14051404

14061405
RB_UpdateCommonUniforms( program, pass, texMatrix );
14071406

@@ -1422,25 +1421,27 @@ static void RB_RenderMeshGLSL_OverlayOutline( const shaderpass_t *pass, r_glslfe
14221421
RB_SetShaderpassState( pass->flags | GLSTATE_STENCIL_TEST | GLSTATE_DEPTHFUNC_GT | GLSTATE_NO_COLORWRITE );
14231422
RP_UpdateOutlineUniforms( program, 2.0f );
14241423
RB_DrawElementsReal( &rb.drawElements );
1424+
1425+
RB_SetStencilFunc( GL_ALWAYS, 0x0, 0xFF );
1426+
RB_SetStencilOp( GL_REPLACE, GL_REPLACE, GL_REPLACE );
14251427

1426-
RB_SetStencilFunc( GL_ALWAYS, 0x0, 0xFF );
1427-
RB_SetStencilOp( GL_REPLACE, GL_REPLACE, GL_REPLACE );
1428+
RB_SetShaderpassState( pass->flags | GLSTATE_STENCIL_TEST | GLSTATE_NO_DEPTH_TEST | GLSTATE_NO_COLORWRITE );
1429+
RP_UpdateOutlineUniforms( program, 0 );
1430+
RB_DrawElementsReal( &rb.drawElements );
14281431

1429-
RB_SetShaderpassState( pass->flags | GLSTATE_STENCIL_TEST | GLSTATE_NO_DEPTH_TEST | GLSTATE_NO_COLORWRITE );
1430-
RP_UpdateOutlineUniforms( program, 0 );
1431-
RB_DrawElementsReal( &rb.drawElements );
1432+
RB_Cull( GL_BACK );
14321433

1433-
RB_SetStencilOp( GL_KEEP, GL_KEEP, GL_KEEP );
1434-
RB_SetStencilFunc( GL_EQUAL, 1, 0xFF );
1435-
RB_SetStencilMask( 0x00 );
1434+
RB_SetStencilOp( GL_ZERO, GL_ZERO, GL_ZERO );
1435+
RB_SetStencilFunc( GL_EQUAL, 1, 0xFF );
1436+
RB_SetStencilMask( 0xFF );
14361437

1437-
RB_SetShaderpassState( pass->flags | GLSTATE_NO_DEPTH_TEST | GLSTATE_STENCIL_TEST );
1438-
RP_UpdateOutlineUniforms( program, 2.0f );
1439-
RB_DrawElementsReal( &rb.drawElements );
1438+
RB_SetShaderpassState( pass->flags | GLSTATE_DEPTHFUNC_GT | GLSTATE_STENCIL_TEST );
1439+
RP_UpdateOutlineUniforms( program, rb.currentEntity->outlineHeight * r_outlines_scale->value );
1440+
RB_DrawElementsReal( &rb.drawElements );
14401441

1441-
RB_SetShaderpassState( pass->flags );
1442+
//RB_SetShaderpassState( pass->flags );
14421443

1443-
//RB_Cull( faceCull );
1444+
RB_Cull( faceCull );
14441445
}
14451446

14461447
/*
@@ -1472,7 +1473,7 @@ static void RB_RenderMeshGLSL_Outline( const shaderpass_t *pass, r_glslfeat_t pr
14721473
RB_Cull( GL_BACK );
14731474

14741475
// set shaderpass state (blending, depthwrite, etc)
1475-
RB_SetShaderpassState( pass->flags );
1476+
RB_SetShaderpassState( pass->flags);
14761477

14771478
RB_UpdateCommonUniforms( program, pass, texMatrix );
14781479

@@ -1486,6 +1487,10 @@ static void RB_RenderMeshGLSL_Outline( const shaderpass_t *pass, r_glslfeat_t pr
14861487
if( programFeatures & GLSL_SHADER_COMMON_BONE_TRANSFORMS ) {
14871488
RP_UpdateBonesUniforms( program, rb.bonesData.numBones, rb.bonesData.dualQuats );
14881489
}
1490+
1491+
//RB_SetStencilMask( 0xFF );
1492+
//RB_SetStencilOp( GL_ZERO, GL_REPLACE, GL_REPLACE);
1493+
//RB_SetStencilFunc( GL_ALWAYS, 1, 0xFF );
14891494

14901495
RB_DrawElementsReal( &rb.drawElements );
14911496

source/ref_gl/r_mesh.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,6 @@ void *R_AddSurfToDrawList( drawList_t *list, const entity_t *e, const mfog_t *fo
185185
}
186186
if(renderFx & RF_OUTLINE_WRITE_THROUGH) {
187187
shaderSort = SHADER_SORT_DECAL;
188-
dist = -1;
189188
if(portalSurf) {
190189
return false;
191190
}
@@ -218,6 +217,7 @@ void *R_AddSurfToDrawList( drawList_t *list, const entity_t *e, const mfog_t *fo
218217
dist = 0;
219218
}
220219

220+
221221
sortedDrawSurf_t *sds = &list->drawSurfs[list->numDrawSurfs++];
222222
sds->distKey = R_PackDistKey( shaderSort, (int)dist, order );
223223
sds->sortKey = R_PackSortKey( shader->id, fog ? fog - rsh.worldBrushModel->fogs : -1,

0 commit comments

Comments
 (0)