Skip to content

Commit

Permalink
allow omitting "material" for globalshader in gldefs
Browse files Browse the repository at this point in the history
  • Loading branch information
RicardoLuis0 authored and nashmuhandes committed Jan 8, 2025
1 parent fee7fed commit 1845de1
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions src/r_data/gldefs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,7 @@ static const char *CoreKeywords[]=
"material",
"lightsizefactor",
"colorization",
"globalshader",
nullptr
};

Expand All @@ -376,6 +377,7 @@ enum
TAG_MATERIAL,
TAG_LIGHTSIZEFACTOR,
TAG_COLORIZATION,
TAG_GLOBALSHADER,
};

//==========================================================================
Expand Down Expand Up @@ -1397,7 +1399,7 @@ class GLDefsParser
//
//==========================================================================

void ParseMaterial()
void ParseMaterial(bool is_globalshader = false)
{
ETextureType type = ETextureType::Any;
bool disable_fullbright = false;
Expand All @@ -1409,7 +1411,6 @@ class GLDefsParser
bool hasUniforms = false;
TMap<FString, UserUniformValue> Uniforms;

bool is_globalshader = false;
TArray<int> globaltargets;
FString str_globaltargets;

Expand All @@ -1426,12 +1427,13 @@ class GLDefsParser
FGameTexture* tex = nullptr;

sc.MustGetString();
if(sc.Compare("globalshader"))
if(is_globalshader || sc.Compare("globalshader"))
{
is_globalshader = true;
usershader.shaderFlags |= SFlag_Global; // make sure global usershader objects aren't reused for material shaders

sc.MustGetString();
if(!is_globalshader) sc.MustGetString();

is_globalshader = true;

if (sc.Compare("all"))
{
Expand Down Expand Up @@ -2654,7 +2656,10 @@ class GLDefsParser
ParseBrightmap();
break;
case TAG_MATERIAL:
ParseMaterial();
ParseMaterial(false);
break;
case TAG_GLOBALSHADER:
ParseMaterial(true);
break;
case TAG_HARDWARESHADER:
ParseHardwareShader();
Expand Down

0 comments on commit 1845de1

Please sign in to comment.