Skip to content

Commit

Permalink
- lock cvar shader uniforms behind a command line parameter for now
Browse files Browse the repository at this point in the history
  • Loading branch information
madame-rachelle committed Apr 16, 2022
1 parent a071479 commit 761502d
Showing 1 changed file with 40 additions and 31 deletions.
71 changes: 40 additions & 31 deletions source/core/r_data/gldefs.cpp
Expand Up @@ -49,6 +49,7 @@
#include "hw_material.h"
#include "texturemanager.h"
#include "gameconfigfile.h"
#include "m_argv.h"

#if 0
void AddLightDefaults(FLightDefaults *defaults, double attnFactor);
Expand Down Expand Up @@ -1567,46 +1568,54 @@ class GLDefsParser

val.Float = oldval.Float = sc.Float;

if (!cvar)
if (!Args->CheckParm ("-shaderuniformtest"))
{
cvar = C_CreateCVar(cvarname, cvartype, cvarflags);
// these aren't really release-ready, so lock them behind a command-line argument for now.
sc.ScriptMessage("Warning - Use -shaderuniformtest to enable shader uniforms!");
}
else if (cvar && (((cvar->GetFlags()) & CVAR_MOD) == CVAR_MOD))
else
{
// this value may have been previously loaded
oldval.Float = cvar->GetGenericRep(CVAR_Float).Float;
oldextra = (ExtraUniformCVARData*)cvar->GetExtraDataPointer();
}
if (!cvar)
{
cvar = C_CreateCVar(cvarname, cvartype, cvarflags);
}
else if (cvar && (((cvar->GetFlags()) & CVAR_MOD) == CVAR_MOD))
{
// this value may have been previously loaded
oldval.Float = cvar->GetGenericRep(CVAR_Float).Float;
oldextra = (ExtraUniformCVARData*)cvar->GetExtraDataPointer();
}

if (!(cvar->GetFlags() & CVAR_MOD))
{
if (!((cvar->GetFlags() & (CVAR_AUTO | CVAR_UNSETTABLE)) == (CVAR_AUTO | CVAR_UNSETTABLE)))
sc.ScriptError("CVAR '%s' already in use!", cvarname.GetChars());
}
if (!(cvar->GetFlags() & CVAR_MOD))
{
if (!((cvar->GetFlags() & (CVAR_AUTO | CVAR_UNSETTABLE)) == (CVAR_AUTO | CVAR_UNSETTABLE)))
sc.ScriptError("CVAR '%s' already in use!", cvarname.GetChars());
}

// must've picked this up from an autoexec.cfg, handle accordingly
if (cvar && ((cvar->GetFlags() & (CVAR_MOD|CVAR_AUTO|CVAR_UNSETTABLE)) == (CVAR_AUTO | CVAR_UNSETTABLE)))
{
oldval.Float = cvar->GetGenericRep(CVAR_Float).Float;
oldextra = (ExtraUniformCVARData*)cvar->GetExtraDataPointer();
delete cvar;
cvar = C_CreateCVar(cvarname, cvartype, cvarflags);
}
// must've picked this up from an autoexec.cfg, handle accordingly
if (cvar && ((cvar->GetFlags() & (CVAR_MOD|CVAR_AUTO|CVAR_UNSETTABLE)) == (CVAR_AUTO | CVAR_UNSETTABLE)))
{
oldval.Float = cvar->GetGenericRep(CVAR_Float).Float;
oldextra = (ExtraUniformCVARData*)cvar->GetExtraDataPointer();
delete cvar;
cvar = C_CreateCVar(cvarname, cvartype, cvarflags);
}

shaderdesc.Uniforms[uniformName].Values[0] = oldval.Float;
shaderdesc.Uniforms[uniformName].Values[0] = oldval.Float;

cvar->SetGenericRepDefault(val, CVAR_Float);
cvar->SetGenericRepDefault(val, CVAR_Float);

if (val.Float != oldval.Float) // it's not default anymore
cvar->SetGenericRep(oldval.Float, CVAR_Float);
if (val.Float != oldval.Float) // it's not default anymore
cvar->SetGenericRep(oldval.Float, CVAR_Float);

if (callback)
cvar->SetCallback(callback);
ExtraUniformCVARData* extra = new ExtraUniformCVARData;
extra->Shader = shaderdesc.Name.GetChars();
extra->Uniform = uniformName.GetChars();
extra->Next = oldextra;
cvar->SetExtraDataPointer(extra);
if (callback)
cvar->SetCallback(callback);
ExtraUniformCVARData* extra = new ExtraUniformCVARData;
extra->Shader = shaderdesc.Name.GetChars();
extra->Uniform = uniformName.GetChars();
extra->Next = oldextra;
cvar->SetExtraDataPointer(extra);
}
}
}
else if (sc.Compare("texture"))
Expand Down

0 comments on commit 761502d

Please sign in to comment.