- Complete RetroFX filter (downscale+palette). - Additional palettes, extending to the full range of 64. - Localization support (just English for now). - Better slider input (shift for 10x increments, alt for 5x increments) - Use nosave cvars for performance and so they don't end up in savegames. - A lot of cleanup.
281 lines
12 KiB
Text
281 lines
12 KiB
Text
version "3.3"
|
|
|
|
// keyboard input snaps to increment
|
|
// holding shift increments by ten steps
|
|
Class OptionMenuItemMFXSlider : OptionMenuItemSlider
|
|
{
|
|
bool bShift, bAlt;
|
|
|
|
override bool MenuEvent ( int mkey, bool fromcontroller )
|
|
{
|
|
double value = GetSliderValue();
|
|
double step = bShift?(mStep*10):bAlt?(mStep*5):mStep;
|
|
if ( mkey == Menu.MKEY_Left ) value -= step;
|
|
else if ( mkey == Menu.MKEY_Right ) value += step;
|
|
else return OptionMenuItem.MenuEvent(mkey,fromcontroller);
|
|
if ( value ~== 0 ) value = 0; // This is to prevent formatting anomalies with very small values
|
|
value = round(value/step)*step; // truncate to step
|
|
SetSliderValue(clamp(value,mMin,mMax));
|
|
Menu.MenuSound("menu/change");
|
|
return true;
|
|
}
|
|
}
|
|
|
|
// passes shift presses to MFXSliders
|
|
Class MFXOptionMenu : OptionMenu
|
|
{
|
|
override void Init( Menu parent, OptionMenuDescriptor desc )
|
|
{
|
|
Super.init(parent,desc);
|
|
DontDim = true;
|
|
DontBlur = true;
|
|
}
|
|
|
|
override bool OnUIEvent( UIEvent ev )
|
|
{
|
|
for ( int i=0; i<mDesc.mItems.size(); i++ )
|
|
{
|
|
if ( !(mDesc.mItems[i] is 'OptionMenuItemMFXSlider') )
|
|
continue;
|
|
OptionMenuItemMFXSlider(mDesc.mItems[i]).bShift = ev.IsShift;
|
|
OptionMenuItemMFXSlider(mDesc.mItems[i]).bAlt = ev.IsAlt;
|
|
}
|
|
return Super.OnUIEvent(ev);
|
|
}
|
|
}
|
|
|
|
Class MariFXHandler : StaticEventHandler
|
|
{
|
|
override void RenderOverlay( RenderEvent e )
|
|
{
|
|
PlayerInfo p = players[consoleplayer];
|
|
// LUMA SHARPEN
|
|
Shader.SetEnabled(p,"mfx_lumasharp",mfx_lsharpenable);
|
|
Shader.SetUniform1f(p,"mfx_lumasharp","sharpradius",mfx_lsharpradius);
|
|
Shader.SetUniform1f(p,"mfx_lumasharp","sharpclamp",mfx_lsharpclamp);
|
|
Shader.SetUniform1f(p,"mfx_lumasharp","sharpblend",mfx_lsharpblend);
|
|
// FILM GRAIN
|
|
Shader.SetEnabled(p,"mfx_grain",mfx_ne);
|
|
Shader.SetUniform1f(p,"mfx_grain","ni",mfx_ni);
|
|
Shader.SetUniform1f(p,"mfx_grain","ns",mfx_ns);
|
|
Shader.SetUniform1f(p,"mfx_grain","np",mfx_np);
|
|
Shader.SetUniform1f(p,"mfx_grain","bnp",mfx_bnp);
|
|
Shader.SetUniform1i(p,"mfx_grain","nb",mfx_nb);
|
|
Shader.SetUniform1f(p,"mfx_grain","Timer",(gametic+e.fractic)/35.);
|
|
// SCREEN DIRT
|
|
Shader.SetEnabled(p,"mfx_dirt",mfx_dirtenable);
|
|
Shader.SetUniform1f(p,"mfx_dirt","dirtmc",mfx_dirtmc);
|
|
Shader.SetUniform1f(p,"mfx_dirt","dirtcfactor",mfx_dirtcfactor);
|
|
// COLOR GRADING
|
|
Shader.SetEnabled(p,"mfx_grading",mfx_gradeenable);
|
|
Shader.SetUniform3f(p,"mfx_grading","grademul",(mfx_grademul_r,mfx_grademul_g,mfx_grademul_b));
|
|
Shader.SetUniform3f(p,"mfx_grading","gradepow",(mfx_gradepow_r,mfx_gradepow_g,mfx_gradepow_b));
|
|
Shader.SetUniform3f(p,"mfx_grading","gradecol",(mfx_gradecol_r,mfx_gradecol_g,mfx_gradecol_b));
|
|
Shader.SetUniform1f(p,"mfx_grading","gradecolfact",mfx_gradecolfact);
|
|
Shader.SetUniform1f(p,"mfx_grading","gradesatmul",mfx_gradesatmul);
|
|
Shader.SetUniform1f(p,"mfx_grading","gradesatpow",mfx_gradesatpow);
|
|
Shader.SetUniform1f(p,"mfx_grading","gradevalmul",mfx_gradevalmul);
|
|
Shader.SetUniform1f(p,"mfx_grading","gradevalpow",mfx_gradevalpow);
|
|
// COLOR MATRIX
|
|
Shader.SetEnabled(p,"mfx_colormatrix",mfx_cmatenable);
|
|
Shader.SetUniform3f(p,"mfx_colormatrix","redrow",(mfx_cmat_rr,mfx_cmat_rg,mfx_cmat_rb));
|
|
Shader.SetUniform3f(p,"mfx_colormatrix","greenrow",(mfx_cmat_gr,mfx_cmat_gg,mfx_cmat_gb));
|
|
Shader.SetUniform3f(p,"mfx_colormatrix","bluerow",(mfx_cmat_br,mfx_cmat_bg,mfx_cmat_bb));
|
|
// HUE-SATURATION
|
|
Shader.SetEnabled(p,"mfx_huesaturation",mfx_hsenable);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hsover",mfx_hsover);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hshue_a",mfx_hshue_a);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hssat_a",mfx_hssat_a);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hsval_a",mfx_hsval_a);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hshue_r",mfx_hshue_r);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hssat_r",mfx_hssat_r);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hsval_r",mfx_hsval_r);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hshue_y",mfx_hshue_y);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hssat_y",mfx_hssat_y);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hsval_y",mfx_hsval_y);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hshue_g",mfx_hshue_g);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hssat_g",mfx_hssat_g);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hsval_g",mfx_hsval_g);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hshue_c",mfx_hshue_c);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hssat_c",mfx_hssat_c);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hsval_c",mfx_hsval_c);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hshue_b",mfx_hshue_b);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hssat_b",mfx_hssat_b);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hsval_b",mfx_hsval_b);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hshue_m",mfx_hshue_m);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hssat_m",mfx_hssat_m);
|
|
Shader.SetUniform1f(p,"mfx_huesaturation","hsval_m",mfx_hsval_m);
|
|
// BLURSHARPSHIFT
|
|
Shader.SetEnabled(p,"mfx_bss_blur",mfx_bssblurenable);
|
|
Shader.SetUniform1f(p,"mfx_bss_blur","bssblurradius",mfx_bssblurradius);
|
|
Shader.SetEnabled(p,"mfx_bss_sharp",mfx_bsssharpenable);
|
|
Shader.SetUniform1f(p,"mfx_bss_sharp","bsssharpradius",mfx_bsssharpradius);
|
|
Shader.SetUniform1f(p,"mfx_bss_sharp","bsssharpamount",mfx_bsssharpamount);
|
|
Shader.SetEnabled(p,"mfx_bss_shift",mfx_bssshiftenable);
|
|
Shader.SetUniform1f(p,"mfx_bss_shift","bssshiftradius",mfx_bssshiftradius);
|
|
// VIGNETTE / BORDER BLUR
|
|
Shader.SetEnabled(p,"mfx_borderblur",mfx_bblurenable);
|
|
Shader.SetUniform1f(p,"mfx_borderblur","vigpow",mfx_vigpow);
|
|
Shader.SetUniform1f(p,"mfx_borderblur","vigmul",mfx_vigmul);
|
|
Shader.SetUniform1f(p,"mfx_borderblur","vigbump",mfx_vigbump);
|
|
Shader.SetUniform1i(p,"mfx_borderblur","vigshape",mfx_vigshape);
|
|
Shader.SetUniform1f(p,"mfx_borderblur","bblurpow",mfx_bblurpow);
|
|
Shader.SetUniform1f(p,"mfx_borderblur","bblurmul",mfx_bblurmul);
|
|
Shader.SetUniform1f(p,"mfx_borderblur","bblurbump",mfx_bblurbump);
|
|
Shader.SetUniform1f(p,"mfx_borderblur","bblurradius",mfx_bblurradius);
|
|
Shader.SetEnabled(p,"mfx_vignette",mfx_vigenable);
|
|
Shader.SetUniform3f(p,"mfx_vignette","vigcolor",(mfx_vigcolor_r,mfx_vigcolor_g,mfx_vigcolor_b));
|
|
Shader.SetUniform1f(p,"mfx_vignette","vigpow",mfx_vigpow);
|
|
Shader.SetUniform1f(p,"mfx_vignette","vigmul",mfx_vigmul);
|
|
Shader.SetUniform1f(p,"mfx_vignette","vigbump",mfx_vigbump);
|
|
Shader.SetUniform1i(p,"mfx_vignette","vigshape",mfx_vigshape);
|
|
Shader.SetUniform1i(p,"mfx_vignette","vigmode",mfx_vigmode);
|
|
// RETRO FX
|
|
Vector2 rresl = (Screen.GetWidth(),Screen.GetHeight());
|
|
Vector2 bresl = rresl;
|
|
switch ( mfx_retroscalemode )
|
|
{
|
|
case 0:
|
|
bresl = (CleanWidth,CleanHeight);
|
|
break;
|
|
case 1:
|
|
bresl = (CleanWidth_1,CleanHeight_1);
|
|
break;
|
|
case 2:
|
|
bresl = (max(1,rresl.x*mfx_bscl_x),max(1,rresl.y*mfx_bscl_y));
|
|
break;
|
|
case 3:
|
|
bresl = (clamp(mfx_bres_x,1,rresl.x),clamp(mfx_bres_y,1,rresl.y));
|
|
break;
|
|
}
|
|
Shader.SetEnabled(p,"mfx_retrofx",mfx_retroenable);
|
|
Shader.SetUniform2f(p,"mfx_retrofx","bresl",bresl);
|
|
Shader.SetEnabled(p,"mfx_palette",mfx_palenable);
|
|
Shader.SetUniform2f(p,"mfx_palette","sfact",mfx_retroenable?bresl:rresl);
|
|
Shader.SetUniform1f(p,"mfx_palette","palsat",mfx_palsat);
|
|
Shader.SetUniform1f(p,"mfx_palette","palpow",mfx_palpow);
|
|
Shader.SetUniform1i(p,"mfx_palette","palnum",mfx_palnum);
|
|
Shader.SetUniform1f(p,"mfx_palette","paldither",mfx_paldither);
|
|
}
|
|
override void ConsoleProcess( ConsoleEvent e )
|
|
{
|
|
PlayerInfo p = players[consoleplayer];
|
|
if ( e.Name ~== "resetmfxvars" )
|
|
{
|
|
switch( e.args[0] )
|
|
{
|
|
case 0:
|
|
CVar.FindCVar('mfx_ne').ResetToDefault();
|
|
CVar.FindCVar('mfx_ni').ResetToDefault();
|
|
CVar.FindCVar('mfx_ns').ResetToDefault();
|
|
CVar.FindCVar('mfx_np').ResetToDefault();
|
|
CVar.FindCVar('mfx_bnp').ResetToDefault();
|
|
CVar.FindCVar('mfx_nb').ResetToDefault();
|
|
break;
|
|
case 1:
|
|
CVar.FindCVar('mfx_dirtenable').ResetToDefault();
|
|
CVar.FindCVar('mfx_dirtmc').ResetToDefault();
|
|
CVar.FindCVar('mfx_dirtcfactor').ResetToDefault();
|
|
break;
|
|
case 2:
|
|
CVar.FindCVar('mfx_gradeenable').ResetToDefault();
|
|
CVar.FindCVar('mfx_grademul_r').ResetToDefault();
|
|
CVar.FindCVar('mfx_grademul_g').ResetToDefault();
|
|
CVar.FindCVar('mfx_grademul_b').ResetToDefault();
|
|
CVar.FindCVar('mfx_gradepow_r').ResetToDefault();
|
|
CVar.FindCVar('mfx_gradepow_g').ResetToDefault();
|
|
CVar.FindCVar('mfx_gradepow_b').ResetToDefault();
|
|
CVar.FindCVar('mfx_gradecol_r').ResetToDefault();
|
|
CVar.FindCVar('mfx_gradecol_g').ResetToDefault();
|
|
CVar.FindCVar('mfx_gradecol_b').ResetToDefault();
|
|
CVar.FindCVar('mfx_gradecolfact').ResetToDefault();
|
|
CVar.FindCVar('mfx_gradesatmul').ResetToDefault();
|
|
CVar.FindCVar('mfx_gradesatpow').ResetToDefault();
|
|
CVar.FindCVar('mfx_gradevalmul').ResetToDefault();
|
|
CVar.FindCVar('mfx_gradevalpow').ResetToDefault();
|
|
break;
|
|
case 3:
|
|
CVar.FindCVar('mfx_cmatenable').ResetToDefault();
|
|
CVar.FindCVar('mfx_cmat_rr').ResetToDefault();
|
|
CVar.FindCVar('mfx_cmat_rg').ResetToDefault();
|
|
CVar.FindCVar('mfx_cmat_rb').ResetToDefault();
|
|
CVar.FindCVar('mfx_cmat_gr').ResetToDefault();
|
|
CVar.FindCVar('mfx_cmat_gg').ResetToDefault();
|
|
CVar.FindCVar('mfx_cmat_gb').ResetToDefault();
|
|
CVar.FindCVar('mfx_cmat_br').ResetToDefault();
|
|
CVar.FindCVar('mfx_cmat_bg').ResetToDefault();
|
|
CVar.FindCVar('mfx_cmat_bb').ResetToDefault();
|
|
break;
|
|
case 4:
|
|
CVar.FindCVar('mfx_hsenable').ResetToDefault();
|
|
CVar.FindCVar('mfx_hsover').ResetToDefault();
|
|
CVar.FindCVar('mfx_hshue_a').ResetToDefault();
|
|
CVar.FindCVar('mfx_hssat_a').ResetToDefault();
|
|
CVar.FindCVar('mfx_hsval_a').ResetToDefault();
|
|
CVar.FindCVar('mfx_hshue_r').ResetToDefault();
|
|
CVar.FindCVar('mfx_hssat_r').ResetToDefault();
|
|
CVar.FindCVar('mfx_hsval_r').ResetToDefault();
|
|
CVar.FindCVar('mfx_hshue_y').ResetToDefault();
|
|
CVar.FindCVar('mfx_hssat_y').ResetToDefault();
|
|
CVar.FindCVar('mfx_hsval_y').ResetToDefault();
|
|
CVar.FindCVar('mfx_hshue_g').ResetToDefault();
|
|
CVar.FindCVar('mfx_hssat_g').ResetToDefault();
|
|
CVar.FindCVar('mfx_hsval_g').ResetToDefault();
|
|
CVar.FindCVar('mfx_hshue_c').ResetToDefault();
|
|
CVar.FindCVar('mfx_hssat_c').ResetToDefault();
|
|
CVar.FindCVar('mfx_hsval_c').ResetToDefault();
|
|
CVar.FindCVar('mfx_hshue_b').ResetToDefault();
|
|
CVar.FindCVar('mfx_hssat_b').ResetToDefault();
|
|
CVar.FindCVar('mfx_hsval_b').ResetToDefault();
|
|
CVar.FindCVar('mfx_hshue_m').ResetToDefault();
|
|
CVar.FindCVar('mfx_hssat_m').ResetToDefault();
|
|
CVar.FindCVar('mfx_hsval_m').ResetToDefault();
|
|
break;
|
|
case 5:
|
|
CVar.FindCVar('mfx_bssblurenable').ResetToDefault();
|
|
CVar.FindCVar('mfx_bssblurradius').ResetToDefault();
|
|
CVar.FindCVar('mfx_bsssharpenable').ResetToDefault();
|
|
CVar.FindCVar('mfx_bsssharpradius').ResetToDefault();
|
|
CVar.FindCVar('mfx_bsssharpamount').ResetToDefault();
|
|
CVar.FindCVar('mfx_bssshiftenable').ResetToDefault();
|
|
CVar.FindCVar('mfx_bssshiftradius').ResetToDefault();
|
|
break;
|
|
case 6:
|
|
CVar.FindCVar('mfx_bblurenable').ResetToDefault();
|
|
CVar.FindCVar('mfx_bblurpow').ResetToDefault();
|
|
CVar.FindCVar('mfx_bblurmul').ResetToDefault();
|
|
CVar.FindCVar('mfx_bblurbump').ResetToDefault();
|
|
CVar.FindCVar('mfx_bblurradius').ResetToDefault();
|
|
CVar.FindCVar('mfx_vigenable').ResetToDefault();
|
|
CVar.FindCVar('mfx_vigcolor_r').ResetToDefault();
|
|
CVar.FindCVar('mfx_vigcolor_g').ResetToDefault();
|
|
CVar.FindCVar('mfx_vigcolor_b').ResetToDefault();
|
|
CVar.FindCVar('mfx_vigpow').ResetToDefault();
|
|
CVar.FindCVar('mfx_vigmul').ResetToDefault();
|
|
CVar.FindCVar('mfx_vigbump').ResetToDefault();
|
|
CVar.FindCVar('mfx_vigshape').ResetToDefault();
|
|
CVar.FindCVar('mfx_vigmode').ResetToDefault();
|
|
break;
|
|
case 7:
|
|
CVar.FindCVar('mfx_retroenable').ResetToDefault();
|
|
CVar.FindCVar('mfx_retroscalemode').ResetToDefault();
|
|
CVar.FindCVar('mfx_bres_x').ResetToDefault();
|
|
CVar.FindCVar('mfx_bres_y').ResetToDefault();
|
|
CVar.FindCVar('mfx_bscl_x').ResetToDefault();
|
|
CVar.FindCVar('mfx_bscl_y').ResetToDefault();
|
|
CVar.FindCVar('mfx_palenable').ResetToDefault();
|
|
CVar.FindCVar('mfx_palnum').ResetToDefault();
|
|
CVar.FindCVar('mfx_palsat').ResetToDefault();
|
|
CVar.FindCVar('mfx_palpow').ResetToDefault();
|
|
CVar.FindCVar('mfx_paldither').ResetToDefault();
|
|
break;
|
|
case 8:
|
|
CVar.FindCVar('mfx_lsharpenable').ResetToDefault();
|
|
CVar.FindCVar('mfx_lsharpradius').ResetToDefault();
|
|
CVar.FindCVar('mfx_lsharpclamp').ResetToDefault();
|
|
CVar.FindCVar('mfx_lsharpblend').ResetToDefault();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|