Added foliage AFunc

This commit is contained in:
smallmodel 2023-08-27 23:38:43 +02:00
parent 5e8b54be7e
commit 194d53569f
No known key found for this signature in database
GPG key ID: 9F2D623CEDF08512
3 changed files with 48 additions and 14 deletions

View file

@ -402,31 +402,45 @@ void GL_State( unsigned long stateBits )
// //
if ( diff & GLS_ATEST_BITS ) if ( diff & GLS_ATEST_BITS )
{ {
switch ( stateBits & GLS_ATEST_BITS ) switch (stateBits & GLS_ATEST_BITS)
{ {
case 0: case 0:
qglDisable( GL_ALPHA_TEST ); qglDisable(GL_ALPHA_TEST);
break; break;
case GLS_ATEST_GT_0: case GLS_ATEST_GT_0:
qglEnable( GL_ALPHA_TEST ); qglEnable(GL_ALPHA_TEST);
qglAlphaFunc( GL_GREATER, 0.0f ); qglAlphaFunc(GL_GREATER, 0.05f);
break; break;
case GLS_ATEST_LT_80: case GLS_ATEST_LT_80:
qglEnable( GL_ALPHA_TEST ); qglEnable(GL_ALPHA_TEST);
qglAlphaFunc( GL_LESS, 0.5f ); qglAlphaFunc(GL_LESS, 0.5f);
break; break;
case GLS_ATEST_GE_80: case GLS_ATEST_GE_80:
qglEnable( GL_ALPHA_TEST ); qglEnable(GL_ALPHA_TEST);
qglAlphaFunc( GL_GEQUAL, 0.5f ); qglAlphaFunc(GL_GEQUAL, 0.5f);
break;
case GLS_ATEST_LT_FOLIAGE1:
qglEnable(GL_ALPHA_TEST);
qglAlphaFunc(GL_LESS, r_alpha_foliage1->value);
break;
case GLS_ATEST_GE_FOLIAGE1:
qglEnable(GL_ALPHA_TEST);
qglAlphaFunc(GL_GEQUAL, r_alpha_foliage1->value);
break;
case GLS_ATEST_LT_FOLIAGE2:
qglEnable(GL_ALPHA_TEST);
qglAlphaFunc(GL_LESS, r_alpha_foliage2->value);
break;
case GLS_ATEST_GE_FOLIAGE2:
qglEnable(GL_ALPHA_TEST);
qglAlphaFunc(GL_GEQUAL, r_alpha_foliage2->value);
break; break;
default: default:
assert( 0 ); assert(0);
break; break;
} }
} }
if (diff & GLS_CLAMP_EDGE) if (diff & GLS_CLAMP_EDGE)
{ {
float clampValue; float clampValue;
@ -471,7 +485,7 @@ void GL_State( unsigned long stateBits )
qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, clampValue); qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, clampValue);
} }
} }
if (diff & GLS_FOG) if (diff & GLS_FOG)
{ {
if (glState.externalSetState & GLS_FOG) if (glState.externalSetState & GLS_FOG)

View file

@ -1690,8 +1690,12 @@ void GL_Cull( int cullType );
#define GLS_ATEST_GT_0 0x10000000 #define GLS_ATEST_GT_0 0x10000000
#define GLS_ATEST_LT_80 0x20000000 #define GLS_ATEST_LT_80 0x20000000
#define GLS_ATEST_GE_80 0x40000000 #define GLS_ATEST_GE_80 0x30000000
#define GLS_ATEST_BITS 0x70000000 #define GLS_ATEST_LT_FOLIAGE1 0x40000000
#define GLS_ATEST_GE_FOLIAGE1 0x50000000
#define GLS_ATEST_LT_FOLIAGE2 0x60000000
#define GLS_ATEST_GE_FOLIAGE2 0x70000000
#define GLS_ATEST_BITS 0x70000000
#define GLS_DEFAULT GLS_DEPTHMASK_TRUE #define GLS_DEFAULT GLS_DEPTHMASK_TRUE

View file

@ -200,6 +200,22 @@ static unsigned NameToAFunc( const char *funcname )
{ {
return GLS_ATEST_GE_80; return GLS_ATEST_GE_80;
} }
else if ( !Q_stricmp( funcname, "LT_FOLIAGE1" ) )
{
return GLS_ATEST_LT_FOLIAGE1;
}
else if ( !Q_stricmp( funcname, "GE_FOLIAGE1" ) )
{
return GLS_ATEST_GE_FOLIAGE1;
}
else if ( !Q_stricmp( funcname, "LT_FOLIAGE2" ) )
{
return GLS_ATEST_LT_FOLIAGE2;
}
else if ( !Q_stricmp( funcname, "GE_FOLIAGE2" ) )
{
return GLS_ATEST_GE_FOLIAGE2;
}
ri.Printf( PRINT_WARNING, "WARNING: invalid alphaFunc name '%s' in shader '%s'\n", funcname, shader.name ); ri.Printf( PRINT_WARNING, "WARNING: invalid alphaFunc name '%s' in shader '%s'\n", funcname, shader.name );
return 0; return 0;