Shader is deprecated in 4.8, use PPShader instead.

This commit is contained in:
Mari the Deer 2022-04-07 15:42:24 +02:00
commit 550de239b0
4 changed files with 76 additions and 77 deletions

View file

@ -2,21 +2,21 @@
extend Class SWWMHandler
{
static clearscope void ClearAllShaders( PlayerInfo p, bool noscope = false )
static clearscope void ClearAllShaders( bool noscope = false )
{
Shader.SetEnabled(p,"WaterWarp",false);
Shader.SetEnabled(p,"LavaWarp",false);
Shader.SetEnabled(p,"SlimeWarp",false);
Shader.SetEnabled(p,"ZoomBlur",false);
if ( !noscope ) Shader.SetEnabled(p,"SilverScope",false);
Shader.SetEnabled(p,"BarrierShader",false);
Shader.SetEnabled(p,"GhostShader",false);
Shader.SetEnabled(p,"InvinciShader",false);
Shader.SetEnabled(p,"RagekitShader",false);
Shader.SetEnabled(p,"DevastationShader",false);
Shader.SetEnabled(p,"DivineShader",false);
Shader.SetEnabled(p,"Glitch",false);
Shader.SetEnabled(p,"Grain",false);
PPShader.SetEnabled("WaterWarp",false);
PPShader.SetEnabled("LavaWarp",false);
PPShader.SetEnabled("SlimeWarp",false);
PPShader.SetEnabled("ZoomBlur",false);
if ( !noscope ) PPShader.SetEnabled("SilverScope",false);
PPShader.SetEnabled("BarrierShader",false);
PPShader.SetEnabled("GhostShader",false);
PPShader.SetEnabled("InvinciShader",false);
PPShader.SetEnabled("RagekitShader",false);
PPShader.SetEnabled("DevastationShader",false);
PPShader.SetEnabled("DivineShader",false);
PPShader.SetEnabled("Glitch",false);
PPShader.SetEnabled("Grain",false);
}
private ui void RenderShaders( RenderEvent e )
@ -26,117 +26,116 @@ extend Class SWWMHandler
bool pc = (p.camera == mo);
if ( !mo || !swwm_shaders || !pc )
{
if ( !swwm_shaders ) ClearAllShaders(p,true);
if ( !swwm_shaders ) ClearAllShaders(true);
return;
}
let divi = DivineSpriteEffect(mo.FindInventory("DivineSpriteEffect"));
if ( divi )
{
Shader.SetEnabled(p,"DivineShader",true);
Shader.SetUniform1f(p,"DivineShader","timer",(gametic+e.FracTic)/GameTicRate);
PPShader.SetEnabled("DivineShader",true);
PPShader.SetUniform1f("DivineShader","timer",(gametic+e.FracTic)/GameTicRate);
double str = clamp((divi.AlphInter.GetValue()-1000.)/6000.,0.,1.)**2.;
Shader.SetUniform1f(p,"DivineShader","str",str);
PPShader.SetUniform1f("DivineShader","str",str);
}
else Shader.SetEnabled(p,"DevastationShader",false);
else PPShader.SetEnabled("DevastationShader",false);
let deva = AngeryPower(mo.FindInventory("AngeryPower"));
if ( deva )
{
Shader.SetEnabled(p,"DevastationShader",true);
Shader.SetUniform1f(p,"DevastationShader","timer",(gametic+e.FracTic)/GameTicRate);
PPShader.SetEnabled("DevastationShader",true);
PPShader.SetUniform1f("DevastationShader","timer",(gametic+e.FracTic)/GameTicRate);
double xstrastr = 1.+max(0,deva.lastpulse-(gametic+e.Fractic))/35.;
Shader.SetUniform1f(p,"DevastationShader","xtrastr",xstrastr**2.);
PPShader.SetUniform1f("DevastationShader","xtrastr",xstrastr**2.);
}
else Shader.SetEnabled(p,"DevastationShader",false);
else PPShader.SetEnabled("DevastationShader",false);
let rage = RagekitPower(mo.FindInventory("RagekitPower"));
if ( rage )
{
Shader.SetEnabled(p,"RagekitShader",true);
Shader.SetUniform1f(p,"RagekitShader","timer",(gametic+e.FracTic)/GameTicRate);
PPShader.SetEnabled("RagekitShader",true);
PPShader.SetUniform1f("RagekitShader","timer",(gametic+e.FracTic)/GameTicRate);
double xstrastr = 1.+max(0,rage.lastpulse-(gametic+e.Fractic))/35.;
Shader.SetUniform1f(p,"RagekitShader","xtrastr",xstrastr**2.);
PPShader.SetUniform1f("RagekitShader","xtrastr",xstrastr**2.);
}
else Shader.SetEnabled(p,"RagekitShader",false);
else PPShader.SetEnabled("RagekitShader",false);
let ghost = GhostPower(mo.FindInventory("GhostPower"));
if ( ghost ) Shader.SetEnabled(p,"GhostShader",true);
else Shader.SetEnabled(p,"GhostShader",false);
if ( ghost ) PPShader.SetEnabled("GhostShader",true);
else PPShader.SetEnabled("GhostShader",false);
let sunny = InvinciballPower(mo.FindInventory("InvinciballPower"));
if ( sunny )
{
Shader.SetEnabled(p,"InvinciShader",true);
PPShader.SetEnabled("InvinciShader",true);
double str = max(0,sunny.lastpulse-(gametic+e.Fractic))/35.;
Shader.SetUniform1f(p,"InvinciShader","str",str);
PPShader.SetUniform1f("InvinciShader","str",str);
}
else Shader.SetEnabled(p,"InvinciShader",false);
else PPShader.SetEnabled("InvinciShader",false);
let coat = BarrierPower(mo.FindInventory("BarrierPower"));
if ( coat )
{
Shader.SetEnabled(p,"BarrierShader",true);
Shader.SetUniform1f(p,"BarrierShader","timer",(gametic+e.FracTic)/GameTicRate);
PPShader.SetEnabled("BarrierShader",true);
PPShader.SetUniform1f("BarrierShader","timer",(gametic+e.FracTic)/GameTicRate);
}
else Shader.SetEnabled(p,"BarrierShader",false);
else PPShader.SetEnabled("BarrierShader",false);
if ( !(mo is 'Demolitionist') )
{
Shader.SetEnabled(p,"WaterWarp",false);
Shader.SetEnabled(p,"LavaWarp",false);
Shader.SetEnabled(p,"SlimeWarp",false);
Shader.SetEnabled(p,"Glitch",false);
Shader.SetEnabled(p,"Grain",false);
Shader.SetEnabled(p,"ZoomBlur",false);
PPShader.SetEnabled("WaterWarp",false);
PPShader.SetEnabled("LavaWarp",false);
PPShader.SetEnabled("SlimeWarp",false);
PPShader.SetEnabled("Glitch",false);
PPShader.SetEnabled("Grain",false);
PPShader.SetEnabled("ZoomBlur",false);
return;
}
let demo = Demolitionist(mo);
if ( demo.lastunder == Demolitionist.UNDER_WATER )
{
Shader.SetEnabled(p,"WaterWarp",true);
Shader.SetUniform1f(p,"WaterWarp","timer",(gametic+e.FracTic)/GameTicRate);
Shader.SetUniform1f(p,"WaterWarp","dfact",coat?.25:1.);
Shader.SetUniform3f(p,"WaterWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.));
PPShader.SetEnabled("WaterWarp",true);
PPShader.SetUniform1f("WaterWarp","timer",(gametic+e.FracTic)/GameTicRate);
PPShader.SetUniform1f("WaterWarp","dfact",coat?.25:1.);
PPShader.SetUniform3f("WaterWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.));
}
else Shader.SetEnabled(p,"WaterWarp",false);
else PPShader.SetEnabled("WaterWarp",false);
if ( demo.lastunder == Demolitionist.UNDER_LAVA )
{
Shader.SetEnabled(p,"LavaWarp",true);
Shader.SetUniform1f(p,"LavaWarp","timer",(gametic+e.FracTic)/GameTicRate);
Shader.SetUniform1f(p,"LavaWarp","dfact",coat?.25:1.);
Shader.SetUniform3f(p,"LavaWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.));
PPShader.SetEnabled("LavaWarp",true);
PPShader.SetUniform1f("LavaWarp","timer",(gametic+e.FracTic)/GameTicRate);
PPShader.SetUniform1f("LavaWarp","dfact",coat?.25:1.);
PPShader.SetUniform3f("LavaWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.));
}
else Shader.SetEnabled(p,"LavaWarp",false);
else PPShader.SetEnabled("LavaWarp",false);
if ( demo.lastunder == Demolitionist.UNDER_SLIME )
{
Shader.SetEnabled(p,"SlimeWarp",true);
Shader.SetUniform1f(p,"SlimeWarp","timer",(gametic+e.FracTic)/GameTicRate);
Shader.SetUniform1f(p,"SlimeWarp","dfact",coat?.25:1.);
Shader.SetUniform3f(p,"SlimeWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.));
PPShader.SetEnabled("SlimeWarp",true);
PPShader.SetUniform1f("SlimeWarp","timer",(gametic+e.FracTic)/GameTicRate);
PPShader.SetUniform1f("SlimeWarp","dfact",coat?.25:1.);
PPShader.SetUniform3f("SlimeWarp","lightcol",(demo.undercol.r/255.,demo.undercol.g/255.,demo.undercol.b/255.));
}
else Shader.SetEnabled(p,"SlimeWarp",false);
else PPShader.SetEnabled("SlimeWarp",false);
int lastdmg = (demo.Health>0)?demo.lastdamage:Random[Flicker](60,80);
int lastdmgtic = (demo.Health>0)?demo.lastdamagetic:(gametic+Random[Flicker](30,20));
double noiz = min(lastdmg*.09*max(0,(lastdmgtic-(gametic+e.Fractic))/35.),.5);
Shader.SetEnabled(p,"Glitch",noiz>0);
Shader.SetEnabled(p,"Grain",noiz>0);
PPShader.SetEnabled("Glitch",noiz>0);
PPShader.SetEnabled("Grain",noiz>0);
if ( noiz > 0 )
{
Shader.SetUniform1f(p,"Glitch","Timer",(gametic+e.FracTic)/GameTicRate);
Shader.SetUniform1f(p,"Grain","Timer",(gametic+e.FracTic)/GameTicRate);
Shader.SetUniform1f(p,"Grain","ni",noiz);
PPShader.SetUniform1f("Glitch","Timer",(gametic+e.FracTic)/GameTicRate);
PPShader.SetUniform1f("Grain","Timer",(gametic+e.FracTic)/GameTicRate);
PPShader.SetUniform1f("Grain","ni",noiz);
noiz = min(lastdmg*.08*max(0,(lastdmgtic-(gametic+e.Fractic))/35.),.8);
Shader.SetUniform1f(p,"Glitch","str1",noiz);
PPShader.SetUniform1f("Glitch","str1",noiz);
noiz = min(lastdmg*.03*max(0,(lastdmgtic-(gametic+e.Fractic))/35.),3.5);
Shader.SetUniform1f(p,"Glitch","str2",noiz);
PPShader.SetUniform1f("Glitch","str2",noiz);
}
if ( !demo.InStateSequence(demo.CurState,demo.FindState("Dash")) )
{
Shader.SetEnabled(p,"ZoomBlur",false);
PPShader.SetEnabled("ZoomBlur",false);
return;
}
Shader.SetEnabled(p,"ZoomBlur",true);
PPShader.SetEnabled("ZoomBlur",true);
Vector3 vel = demo.vel+demo.dashdir*demo.dashboost;
double baumpu = max(0.,(demo.bumptic-(gametic+e.Fractic))/35.);
vel += demo.dashdir*baumpu;
double spd = vel.length();
Vector3 worlddir = vel/spd;
Shader.SetUniform1f(p,"ZoomBlur","Fade",clamp((spd-20.)/60.,0.,1.));
PPShader.SetUniform1f("ZoomBlur","Fade",clamp((spd-20.)/60.,0.,1.));
double str = min(spd/40.,15.);
Vector3 x, y, z;
[x, y, z] = swwm_CoordUtil.GetAxes(e.ViewPitch,e.ViewAngle,e.ViewRoll);
@ -148,7 +147,7 @@ extend Class SWWMHandler
centerspot.y = 1.-centerspot.y;
str *= -1;
}
Shader.SetUniform1f(p,"ZoomBlur","Str",str);
Shader.SetUniform2f(p,"ZoomBlur","CenterSpot",centerspot);
PPShader.SetUniform1f("ZoomBlur","Str",str);
PPShader.SetUniform2f("ZoomBlur","CenterSpot",centerspot);
}
}