version "3.3"

Class MariFXHandler : StaticEventHandler
{
			// luma sharpen
	transient ui CVar mfx_lsharpenable, mfx_lsharpradius,
		mfx_lsharpclamp, mfx_lsharpblend,
			// noise
		mfx_ne, mfx_ni, mfx_ns, mfx_np, mfx_bnp, mfx_nb,
			// dirt
		mfx_dirtenable, mfx_dirtcfactor, mfx_dirtmc,
			// grading
		mfx_gradeenable, mfx_grademul_r, mfx_grademul_g,
		mfx_grademul_b, mfx_gradepow_r, mfx_gradepow_g, mfx_gradepow_b,
		mfx_gradecol_r, mfx_gradecol_g, mfx_gradecol_b,
		mfx_gradecolfact, mfx_gradesatmul, mfx_gradesatpow,
		mfx_gradevalmul, mfx_gradevalpow,
			// blursharpshift
		mfx_bssblurenable, mfx_bssblurradius, mfx_bsssharpenable,
		mfx_bsssharpradius, mfx_bsssharpamount, mfx_bssshiftenable,
		mfx_bssshiftradius,
			// vignette
		mfx_vigenable, mfx_bblurenable, mfx_vigpow, mfx_vigmul,
		mfx_vigbump, mfx_vigcolor_r, mfx_vigcolor_g, mfx_vigcolor_b,
		mfx_bblurpow, mfx_bblurmul, mfx_bblurbump, mfx_bblurradius,
		mfx_vigshape, mfx_vigmode,
			// color matrix
		mfx_cmatenable, mfx_cmat_rr, mfx_cmat_rg, mfx_cmat_rb,
		mfx_cmat_gr, mfx_cmat_gg, mfx_cmat_gb, mfx_cmat_br,
		mfx_cmat_bg, mfx_cmat_bb, mfx_cmatnormalize,
			// hue-saturation
		mfx_hsenable, mfx_hsover, mfx_hshue_a, mfx_hssat_a,
		mfx_hsval_a, mfx_hshue_r, mfx_hssat_r, mfx_hsval_r,
		mfx_hshue_y, mfx_hssat_y, mfx_hsval_y, mfx_hshue_g,
		mfx_hssat_g, mfx_hsval_g, mfx_hshue_c, mfx_hssat_c,
		mfx_hsval_c, mfx_hshue_b, mfx_hssat_b, mfx_hsval_b,
		mfx_hshue_m, mfx_hssat_m, mfx_hsval_m,
			// palette
		mfx_palenable, mfx_palnum, mfx_paldither;

	override void RenderOverlay( RenderEvent e )
	{
		PlayerInfo p = players[consoleplayer];
		if ( !mfx_lsharpenable ) mfx_lsharpenable = CVar.FindCVar('mfx_lsharpenable');
		if ( !mfx_lsharpradius ) mfx_lsharpradius = CVar.FindCVar('mfx_lsharpradius');
		if ( !mfx_lsharpclamp ) mfx_lsharpclamp = CVar.FindCVar('mfx_lsharpclamp');
		if ( !mfx_lsharpblend ) mfx_lsharpblend = CVar.FindCVar('mfx_lsharpblend');
		Shader.SetEnabled(p,"mfx_lumasharp",mfx_lsharpenable.GetBool());
		Shader.SetUniform1f(p,"mfx_lumasharp","sharpradius",mfx_lsharpradius.GetFloat());
		Shader.SetUniform1f(p,"mfx_lumasharp","sharpclamp",mfx_lsharpclamp.GetFloat());
		Shader.SetUniform1f(p,"mfx_lumasharp","sharpblend",mfx_lsharpblend.GetFloat());
		if ( !mfx_ne ) mfx_ne = CVar.FindCVar('mfx_ne');
		if ( !mfx_ni ) mfx_ni = CVar.FindCVar('mfx_ni');
		if ( !mfx_ns ) mfx_ns = CVar.FindCVar('mfx_ns');
		if ( !mfx_np ) mfx_np = CVar.FindCVar('mfx_np');
		if ( !mfx_bnp ) mfx_bnp = CVar.FindCVar('mfx_bnp');
		if ( !mfx_nb ) mfx_nb = CVar.FindCVar('mfx_nb');
		Shader.SetEnabled(p,"mfx_grain",mfx_ne.GetBool());
		Shader.SetUniform1f(p,"mfx_grain","ni",mfx_ni.GetFloat());
		Shader.SetUniform1f(p,"mfx_grain","ns",mfx_ns.GetFloat());
		Shader.SetUniform1f(p,"mfx_grain","np",mfx_np.GetFloat());
		Shader.SetUniform1f(p,"mfx_grain","bnp",mfx_bnp.GetFloat());
		Shader.SetUniform1i(p,"mfx_grain","nb",mfx_nb.GetInt());
		Shader.SetUniform1f(p,"mfx_grain","Timer",(gametic+e.fractic)/35.);
		if ( !mfx_dirtenable ) mfx_dirtenable = CVar.FindCVar('mfx_dirtenable');
		if ( !mfx_dirtmc ) mfx_dirtmc = CVar.FindCVar('mfx_dirtmc');
		if ( !mfx_dirtcfactor ) mfx_dirtcfactor = CVar.FindCVar('mfx_dirtcfactor');
		Shader.SetEnabled(p,"mfx_dirt",mfx_dirtenable.GetBool());
		Shader.SetUniform1f(p,"mfx_dirt","dirtmc",mfx_dirtmc.GetFloat());
		Shader.SetUniform1f(p,"mfx_dirt","dirtcfactor",mfx_dirtcfactor.GetFloat());
		if ( !mfx_gradeenable ) mfx_gradeenable = CVar.FindCVar('mfx_gradeenable');
		if ( !mfx_grademul_r ) mfx_grademul_r = CVar.FindCVar('mfx_grademul_r');
		if ( !mfx_grademul_g ) mfx_grademul_g = CVar.FindCVar('mfx_grademul_g');
		if ( !mfx_grademul_b ) mfx_grademul_b = CVar.FindCVar('mfx_grademul_b');
		if ( !mfx_gradepow_r ) mfx_gradepow_r = CVar.FindCVar('mfx_gradepow_r');
		if ( !mfx_gradepow_g ) mfx_gradepow_g = CVar.FindCVar('mfx_gradepow_g');
		if ( !mfx_gradepow_b ) mfx_gradepow_b = CVar.FindCVar('mfx_gradepow_b');
		if ( !mfx_gradecol_r ) mfx_gradecol_r = CVar.FindCVar('mfx_gradecol_r');
		if ( !mfx_gradecol_g ) mfx_gradecol_g = CVar.FindCVar('mfx_gradecol_g');
		if ( !mfx_gradecol_b ) mfx_gradecol_b = CVar.FindCVar('mfx_gradecol_b');
		if ( !mfx_gradecolfact ) mfx_gradecolfact = CVar.FindCVar('mfx_gradecolfact');
		if ( !mfx_gradesatmul ) mfx_gradesatmul = CVar.FindCVar('mfx_gradesatmul');
		if ( !mfx_gradesatpow ) mfx_gradesatpow = CVar.FindCVar('mfx_gradesatpow');
		if ( !mfx_gradevalmul ) mfx_gradevalmul = CVar.FindCVar('mfx_gradevalmul');
		if ( !mfx_gradevalpow ) mfx_gradevalpow = CVar.FindCVar('mfx_gradevalpow');
		Shader.SetEnabled(p,"mfx_grading",mfx_gradeenable.GetBool());
		Shader.SetUniform3f(p,"mfx_grading","grademul",(mfx_grademul_r.GetFloat(),mfx_grademul_g.GetFloat(),mfx_grademul_b.GetFloat()));
		Shader.SetUniform3f(p,"mfx_grading","gradepow",(mfx_gradepow_r.GetFloat(),mfx_gradepow_g.GetFloat(),mfx_gradepow_b.GetFloat()));
		Shader.SetUniform3f(p,"mfx_grading","gradecol",(mfx_gradecol_r.GetFloat(),mfx_gradecol_g.GetFloat(),mfx_gradecol_b.GetFloat()));
		Shader.SetUniform1f(p,"mfx_grading","gradecolfact",mfx_gradecolfact.GetFloat());
		Shader.SetUniform1f(p,"mfx_grading","gradesatmul",mfx_gradesatmul.GetFloat());
		Shader.SetUniform1f(p,"mfx_grading","gradesatpow",mfx_gradesatpow.GetFloat());
		Shader.SetUniform1f(p,"mfx_grading","gradevalmul",mfx_gradevalmul.GetFloat());
		Shader.SetUniform1f(p,"mfx_grading","gradevalpow",mfx_gradevalpow.GetFloat());
		if ( !mfx_cmatenable ) mfx_cmatenable = CVar.FindCVar('mfx_cmatenable');
		if ( !mfx_cmat_rr ) mfx_cmat_rr = CVar.FindCVar('mfx_cmat_rr');
		if ( !mfx_cmat_rg ) mfx_cmat_rg = CVar.FindCVar('mfx_cmat_rg');
		if ( !mfx_cmat_rb ) mfx_cmat_rb = CVar.FindCVar('mfx_cmat_rb');
		if ( !mfx_cmat_gr ) mfx_cmat_gr = CVar.FindCVar('mfx_cmat_gr');
		if ( !mfx_cmat_gg ) mfx_cmat_gg = CVar.FindCVar('mfx_cmat_gg');
		if ( !mfx_cmat_gb ) mfx_cmat_gb = CVar.FindCVar('mfx_cmat_gb');
		if ( !mfx_cmat_br ) mfx_cmat_br = CVar.FindCVar('mfx_cmat_br');
		if ( !mfx_cmat_bg ) mfx_cmat_bg = CVar.FindCVar('mfx_cmat_bg');
		if ( !mfx_cmat_bb ) mfx_cmat_bb = CVar.FindCVar('mfx_cmat_bb');
		Shader.SetEnabled(p,"mfx_colormatrix",mfx_cmatenable.GetBool());
		Shader.SetUniform3f(p,"mfx_colormatrix","redrow",(mfx_cmat_rr.GetFloat(),mfx_cmat_rg.GetFloat(),mfx_cmat_rb.GetFloat()));
		Shader.SetUniform3f(p,"mfx_colormatrix","greenrow",(mfx_cmat_gr.GetFloat(),mfx_cmat_gg.GetFloat(),mfx_cmat_gb.GetFloat()));
		Shader.SetUniform3f(p,"mfx_colormatrix","bluerow",(mfx_cmat_br.GetFloat(),mfx_cmat_bg.GetFloat(),mfx_cmat_bb.GetFloat()));
		if ( !mfx_hsenable ) mfx_hsenable = CVar.FindCVar('mfx_hsenable');
		if ( !mfx_hsover ) mfx_hsover = CVar.FindCVar('mfx_hsover');
		if ( !mfx_hshue_a ) mfx_hshue_a = CVar.FindCVar('mfx_hshue_a');
		if ( !mfx_hssat_a ) mfx_hssat_a = CVar.FindCVar('mfx_hssat_a');
		if ( !mfx_hsval_a ) mfx_hsval_a = CVar.FindCVar('mfx_hsval_a');
		if ( !mfx_hshue_r ) mfx_hshue_r = CVar.FindCVar('mfx_hshue_r');
		if ( !mfx_hssat_r ) mfx_hssat_r = CVar.FindCVar('mfx_hssat_r');
		if ( !mfx_hsval_r ) mfx_hsval_r = CVar.FindCVar('mfx_hsval_r');
		if ( !mfx_hshue_y ) mfx_hshue_y = CVar.FindCVar('mfx_hshue_y');
		if ( !mfx_hssat_y ) mfx_hssat_y = CVar.FindCVar('mfx_hssat_y');
		if ( !mfx_hsval_y ) mfx_hsval_y = CVar.FindCVar('mfx_hsval_y');
		if ( !mfx_hshue_g ) mfx_hshue_g = CVar.FindCVar('mfx_hshue_g');
		if ( !mfx_hssat_g ) mfx_hssat_g = CVar.FindCVar('mfx_hssat_g');
		if ( !mfx_hsval_g ) mfx_hsval_g = CVar.FindCVar('mfx_hsval_g');
		if ( !mfx_hshue_c ) mfx_hshue_c = CVar.FindCVar('mfx_hshue_c');
		if ( !mfx_hssat_c ) mfx_hssat_c = CVar.FindCVar('mfx_hssat_c');
		if ( !mfx_hsval_c ) mfx_hsval_c = CVar.FindCVar('mfx_hsval_c');
		if ( !mfx_hshue_b ) mfx_hshue_b = CVar.FindCVar('mfx_hshue_b');
		if ( !mfx_hssat_b ) mfx_hssat_b = CVar.FindCVar('mfx_hssat_b');
		if ( !mfx_hsval_b ) mfx_hsval_b = CVar.FindCVar('mfx_hsval_b');
		if ( !mfx_hshue_m ) mfx_hshue_m = CVar.FindCVar('mfx_hshue_m');
		if ( !mfx_hssat_m ) mfx_hssat_m = CVar.FindCVar('mfx_hssat_m');
		if ( !mfx_hsval_m ) mfx_hsval_m = CVar.FindCVar('mfx_hsval_m');
		Shader.SetEnabled(p,"mfx_huesaturation",mfx_hsenable.GetBool());
		Shader.SetUniform1f(p,"mfx_huesaturation","hsover",mfx_hsover.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hshue_a",mfx_hshue_a.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hssat_a",mfx_hssat_a.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hsval_a",mfx_hsval_a.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hshue_r",mfx_hshue_r.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hssat_r",mfx_hssat_r.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hsval_r",mfx_hsval_r.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hshue_y",mfx_hshue_y.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hssat_y",mfx_hssat_y.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hsval_y",mfx_hsval_y.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hshue_g",mfx_hshue_g.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hssat_g",mfx_hssat_g.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hsval_g",mfx_hsval_g.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hshue_c",mfx_hshue_c.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hssat_c",mfx_hssat_c.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hsval_c",mfx_hsval_c.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hshue_b",mfx_hshue_b.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hssat_b",mfx_hssat_b.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hsval_b",mfx_hsval_b.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hshue_m",mfx_hshue_m.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hssat_m",mfx_hssat_m.GetFloat());
		Shader.SetUniform1f(p,"mfx_huesaturation","hsval_m",mfx_hsval_m.GetFloat());
		if ( !mfx_bssblurenable ) mfx_bssblurenable = CVar.FindCVar('mfx_bssblurenable');
		if ( !mfx_bssblurradius ) mfx_bssblurradius = CVar.FindCVar('mfx_bssblurradius');
		if ( !mfx_bsssharpenable ) mfx_bsssharpenable = CVar.FindCVar('mfx_bsssharpenable');
		if ( !mfx_bsssharpradius ) mfx_bsssharpradius = CVar.FindCVar('mfx_bsssharpradius');
		if ( !mfx_bsssharpamount ) mfx_bsssharpamount = CVar.FindCVar('mfx_bsssharpamount');
		if ( !mfx_bssshiftenable ) mfx_bssshiftenable = CVar.FindCVar('mfx_bssshiftenable');
		if ( !mfx_bssshiftradius ) mfx_bssshiftradius = CVar.FindCVar('mfx_bssshiftradius');
		Shader.SetEnabled(p,"mfx_bss_blur",mfx_bssblurenable.GetBool());
		Shader.SetUniform1f(p,"mfx_bss_blur","bssblurradius",mfx_bssblurradius.GetFloat());
		Shader.SetEnabled(p,"mfx_bss_sharp",mfx_bsssharpenable.GetBool());
		Shader.SetUniform1f(p,"mfx_bss_sharp","bsssharpradius",mfx_bsssharpradius.GetFloat());
		Shader.SetUniform1f(p,"mfx_bss_sharp","bsssharpamount",mfx_bsssharpamount.GetFloat());
		Shader.SetEnabled(p,"mfx_bss_shift",mfx_bssshiftenable.GetBool());
		Shader.SetUniform1f(p,"mfx_bss_shift","bssshiftradius",mfx_bssshiftradius.GetFloat());
		if ( !mfx_vigenable ) mfx_vigenable = CVar.FindCVar('mfx_vigenable');
		if ( !mfx_vigcolor_r ) mfx_vigcolor_r = CVar.FindCVar('mfx_vigcolor_r');
		if ( !mfx_vigcolor_g ) mfx_vigcolor_g = CVar.FindCVar('mfx_vigcolor_g');
		if ( !mfx_vigcolor_b ) mfx_vigcolor_b = CVar.FindCVar('mfx_vigcolor_b');
		if ( !mfx_vigpow ) mfx_vigpow = CVar.FindCVar('mfx_vigpow');
		if ( !mfx_vigmul ) mfx_vigmul = CVar.FindCVar('mfx_vigmul');
		if ( !mfx_vigbump ) mfx_vigbump = CVar.FindCVar('mfx_vigbump');
		if ( !mfx_bblurenable ) mfx_bblurenable = CVar.FindCVar('mfx_bblurenable');
		if ( !mfx_bblurpow ) mfx_bblurpow = CVar.FindCVar('mfx_bblurpow');
		if ( !mfx_bblurmul ) mfx_bblurmul = CVar.FindCVar('mfx_bblurmul');
		if ( !mfx_bblurbump ) mfx_bblurbump = CVar.FindCVar('mfx_bblurbump');
		if ( !mfx_bblurradius ) mfx_bblurradius = CVar.FindCVar('mfx_bblurradius');
		if ( !mfx_vigshape ) mfx_vigshape = CVar.FindCVar('mfx_vigshape');
		if ( !mfx_vigmode ) mfx_vigmode = CVar.FindCVar('mfx_vigmode');
		Shader.SetEnabled(p,"mfx_borderblur",mfx_bblurenable.GetBool());
		Shader.SetUniform1f(p,"mfx_borderblur","vigpow",mfx_vigpow.GetFloat());
		Shader.SetUniform1f(p,"mfx_borderblur","vigmul",mfx_vigmul.GetFloat());
		Shader.SetUniform1f(p,"mfx_borderblur","vigbump",mfx_vigbump.GetFloat());
		Shader.SetUniform1i(p,"mfx_borderblur","vigshape",mfx_vigshape.GetInt());
		Shader.SetUniform1f(p,"mfx_borderblur","bblurpow",mfx_bblurpow.GetFloat());
		Shader.SetUniform1f(p,"mfx_borderblur","bblurmul",mfx_bblurmul.GetFloat());
		Shader.SetUniform1f(p,"mfx_borderblur","bblurbump",mfx_bblurbump.GetFloat());
		Shader.SetUniform1f(p,"mfx_borderblur","bblurradius",mfx_bblurradius.GetFloat());
		Shader.SetEnabled(p,"mfx_vignette",mfx_vigenable.GetBool());
		Shader.SetUniform3f(p,"mfx_vignette","vigcolor",(mfx_vigcolor_r.GetFloat(),mfx_vigcolor_g.GetFloat(),mfx_vigcolor_b.GetFloat()));
		Shader.SetUniform1f(p,"mfx_vignette","vigpow",mfx_vigpow.GetFloat());
		Shader.SetUniform1f(p,"mfx_vignette","vigmul",mfx_vigmul.GetFloat());
		Shader.SetUniform1f(p,"mfx_vignette","vigbump",mfx_vigbump.GetFloat());
		Shader.SetUniform1i(p,"mfx_vignette","vigshape",mfx_vigshape.GetInt());
		Shader.SetUniform1i(p,"mfx_vignette","vigmode",mfx_vigmode.GetInt());
		if ( !mfx_palenable ) mfx_palenable = CVar.FindCVar('mfx_palenable');
		if ( !mfx_palnum ) mfx_palnum = CVar.FindCVar('mfx_palnum');
		if ( !mfx_paldither ) mfx_paldither = CVar.FindCVar('mfx_paldither');
		Shader.SetEnabled(p,"mfx_palette",mfx_palenable.GetBool());
		Shader.SetUniform1i(p,"mfx_palette","palnum",mfx_palnum.GetInt());
		Shader.SetUniform1f(p,"mfx_palette","paldither",mfx_paldither.GetFloat());
	}
	override void ConsoleProcess( ConsoleEvent e )
	{
		PlayerInfo p = players[consoleplayer];
		if ( e.Name ~== "resetmfxvars" )
		{
			switch( e.args[0] )
			{
			case 0:
				if ( !mfx_ne ) mfx_ne = CVar.FindCVar('mfx_ne');
				if ( !mfx_ni ) mfx_ni = CVar.FindCVar('mfx_ni');
				if ( !mfx_ns ) mfx_ns = CVar.FindCVar('mfx_ns');
				if ( !mfx_np ) mfx_np = CVar.FindCVar('mfx_np');
				if ( !mfx_bnp ) mfx_bnp = CVar.FindCVar('mfx_bnp');
				if ( !mfx_nb ) mfx_nb = CVar.FindCVar('mfx_nb');
				mfx_ne.ResetToDefault();
				mfx_ni.ResetToDefault();
				mfx_ns.ResetToDefault();
				mfx_np.ResetToDefault();
				mfx_bnp.ResetToDefault();
				mfx_nb.ResetToDefault();
				break;
			case 1:
				if ( !mfx_dirtenable ) mfx_dirtenable = CVar.FindCVar('mfx_dirtenable');
				if ( !mfx_dirtmc ) mfx_dirtmc = CVar.FindCVar('mfx_dirtmc');
				if ( !mfx_dirtcfactor ) mfx_dirtcfactor = CVar.FindCVar('mfx_dirtcfactor');
				mfx_dirtenable.ResetToDefault();
				mfx_dirtmc.ResetToDefault();
				mfx_dirtcfactor.ResetToDefault();
				break;
			case 2:
				if ( !mfx_gradeenable ) mfx_gradeenable = CVar.FindCVar('mfx_gradeenable');
				if ( !mfx_grademul_r ) mfx_grademul_r = CVar.FindCVar('mfx_grademul_r');
				if ( !mfx_grademul_g ) mfx_grademul_g = CVar.FindCVar('mfx_grademul_g');
				if ( !mfx_grademul_b ) mfx_grademul_b = CVar.FindCVar('mfx_grademul_b');
				if ( !mfx_gradepow_r ) mfx_gradepow_r = CVar.FindCVar('mfx_gradepow_r');
				if ( !mfx_gradepow_g ) mfx_gradepow_g = CVar.FindCVar('mfx_gradepow_g');
				if ( !mfx_gradepow_b ) mfx_gradepow_b = CVar.FindCVar('mfx_gradepow_b');
				if ( !mfx_gradecol_r ) mfx_gradecol_r = CVar.FindCVar('mfx_gradecol_r');
				if ( !mfx_gradecol_g ) mfx_gradecol_g = CVar.FindCVar('mfx_gradecol_g');
				if ( !mfx_gradecol_b ) mfx_gradecol_b = CVar.FindCVar('mfx_gradecol_b');
				if ( !mfx_gradecolfact ) mfx_gradecolfact = CVar.FindCVar('mfx_gradecolfact');
				if ( !mfx_gradesatmul ) mfx_gradesatmul = CVar.FindCVar('mfx_gradesatmul');
				if ( !mfx_gradesatpow ) mfx_gradesatpow = CVar.FindCVar('mfx_gradesatpow');
				if ( !mfx_gradevalmul ) mfx_gradevalmul = CVar.FindCVar('mfx_gradevalmul');
				if ( !mfx_gradevalpow ) mfx_gradevalpow = CVar.FindCVar('mfx_gradevalpow');
				mfx_gradeenable.ResetToDefault();
				mfx_grademul_r.ResetToDefault();
				mfx_grademul_g.ResetToDefault();
				mfx_grademul_b.ResetToDefault();
				mfx_gradepow_r.ResetToDefault();
				mfx_gradepow_g.ResetToDefault();
				mfx_gradepow_b.ResetToDefault();
				mfx_gradecol_r.ResetToDefault();
				mfx_gradecol_g.ResetToDefault();
				mfx_gradecol_b.ResetToDefault();
				mfx_gradecolfact.ResetToDefault();
				mfx_gradesatmul.ResetToDefault();
				mfx_gradesatpow.ResetToDefault();
				mfx_gradevalmul.ResetToDefault();
				mfx_gradevalpow.ResetToDefault();
				break;
			case 3:
				if ( !mfx_cmatenable ) mfx_cmatenable = CVar.FindCVar('mfx_cmatenable');
				if ( !mfx_cmat_rr ) mfx_cmat_rr = CVar.FindCVar('mfx_cmat_rr');
				if ( !mfx_cmat_rg ) mfx_cmat_rg = CVar.FindCVar('mfx_cmat_rg');
				if ( !mfx_cmat_rb ) mfx_cmat_rb = CVar.FindCVar('mfx_cmat_rb');
				if ( !mfx_cmat_gr ) mfx_cmat_gr = CVar.FindCVar('mfx_cmat_gr');
				if ( !mfx_cmat_gg ) mfx_cmat_gg = CVar.FindCVar('mfx_cmat_gg');
				if ( !mfx_cmat_gb ) mfx_cmat_gb = CVar.FindCVar('mfx_cmat_gb');
				if ( !mfx_cmat_br ) mfx_cmat_br = CVar.FindCVar('mfx_cmat_br');
				if ( !mfx_cmat_bg ) mfx_cmat_bg = CVar.FindCVar('mfx_cmat_bg');
				if ( !mfx_cmat_bb ) mfx_cmat_bb = CVar.FindCVar('mfx_cmat_bb');
				mfx_cmatenable.ResetToDefault();
				mfx_cmat_rr.ResetToDefault();
				mfx_cmat_rg.ResetToDefault();
				mfx_cmat_rb.ResetToDefault();
				mfx_cmat_gr.ResetToDefault();
				mfx_cmat_gg.ResetToDefault();
				mfx_cmat_gb.ResetToDefault();
				mfx_cmat_br.ResetToDefault();
				mfx_cmat_bg.ResetToDefault();
				mfx_cmat_bb.ResetToDefault();
				break;
			case 4:
				if ( !mfx_hsenable ) mfx_hsenable = CVar.FindCVar('mfx_hsenable');
				if ( !mfx_hsover ) mfx_hsover = CVar.FindCVar('mfx_hsover');
				if ( !mfx_hshue_a ) mfx_hshue_a = CVar.FindCVar('mfx_hshue_a');
				if ( !mfx_hssat_a ) mfx_hssat_a = CVar.FindCVar('mfx_hssat_a');
				if ( !mfx_hsval_a ) mfx_hsval_a = CVar.FindCVar('mfx_hsval_a');
				if ( !mfx_hshue_r ) mfx_hshue_r = CVar.FindCVar('mfx_hshue_r');
				if ( !mfx_hssat_r ) mfx_hssat_r = CVar.FindCVar('mfx_hssat_r');
				if ( !mfx_hsval_r ) mfx_hsval_r = CVar.FindCVar('mfx_hsval_r');
				if ( !mfx_hshue_y ) mfx_hshue_y = CVar.FindCVar('mfx_hshue_y');
				if ( !mfx_hssat_y ) mfx_hssat_y = CVar.FindCVar('mfx_hssat_y');
				if ( !mfx_hsval_y ) mfx_hsval_y = CVar.FindCVar('mfx_hsval_y');
				if ( !mfx_hshue_g ) mfx_hshue_g = CVar.FindCVar('mfx_hshue_g');
				if ( !mfx_hssat_g ) mfx_hssat_g = CVar.FindCVar('mfx_hssat_g');
				if ( !mfx_hsval_g ) mfx_hsval_g = CVar.FindCVar('mfx_hsval_g');
				if ( !mfx_hshue_c ) mfx_hshue_c = CVar.FindCVar('mfx_hshue_c');
				if ( !mfx_hssat_c ) mfx_hssat_c = CVar.FindCVar('mfx_hssat_c');
				if ( !mfx_hsval_c ) mfx_hsval_c = CVar.FindCVar('mfx_hsval_c');
				if ( !mfx_hshue_b ) mfx_hshue_b = CVar.FindCVar('mfx_hshue_b');
				if ( !mfx_hssat_b ) mfx_hssat_b = CVar.FindCVar('mfx_hssat_b');
				if ( !mfx_hsval_b ) mfx_hsval_b = CVar.FindCVar('mfx_hsval_b');
				if ( !mfx_hshue_m ) mfx_hshue_m = CVar.FindCVar('mfx_hshue_m');
				if ( !mfx_hssat_m ) mfx_hssat_m = CVar.FindCVar('mfx_hssat_m');
				if ( !mfx_hsval_m ) mfx_hsval_m = CVar.FindCVar('mfx_hsval_m');
				mfx_hsenable.ResetToDefault();
				mfx_hsover.ResetToDefault();
				mfx_hshue_a.ResetToDefault();
				mfx_hssat_a.ResetToDefault();
				mfx_hsval_a.ResetToDefault();
				mfx_hshue_r.ResetToDefault();
				mfx_hssat_r.ResetToDefault();
				mfx_hsval_r.ResetToDefault();
				mfx_hshue_y.ResetToDefault();
				mfx_hssat_y.ResetToDefault();
				mfx_hsval_y.ResetToDefault();
				mfx_hshue_g.ResetToDefault();
				mfx_hssat_g.ResetToDefault();
				mfx_hsval_g.ResetToDefault();
				mfx_hshue_c.ResetToDefault();
				mfx_hssat_c.ResetToDefault();
				mfx_hsval_c.ResetToDefault();
				mfx_hshue_b.ResetToDefault();
				mfx_hssat_b.ResetToDefault();
				mfx_hsval_b.ResetToDefault();
				mfx_hshue_m.ResetToDefault();
				mfx_hssat_m.ResetToDefault();
				mfx_hsval_m.ResetToDefault();
				break;
			case 5:
				if ( !mfx_bssblurenable ) mfx_bssblurenable = CVar.FindCVar('mfx_bssblurenable');
				if ( !mfx_bssblurradius ) mfx_bssblurradius = CVar.FindCVar('mfx_bssblurradius');
				if ( !mfx_bsssharpenable ) mfx_bsssharpenable = CVar.FindCVar('mfx_bsssharpenable');
				if ( !mfx_bsssharpradius ) mfx_bsssharpradius = CVar.FindCVar('mfx_bsssharpradius');
				if ( !mfx_bsssharpamount ) mfx_bsssharpamount = CVar.FindCVar('mfx_bsssharpamount');
				if ( !mfx_bssshiftenable ) mfx_bssshiftenable = CVar.FindCVar('mfx_bssshiftenable');
				if ( !mfx_bssshiftradius ) mfx_bssshiftradius = CVar.FindCVar('mfx_bssshiftradius');
				mfx_bssblurenable.ResetToDefault();
				mfx_bssblurradius.ResetToDefault();
				mfx_bsssharpenable.ResetToDefault();
				mfx_bsssharpradius.ResetToDefault();
				mfx_bsssharpamount.ResetToDefault();
				mfx_bssshiftenable.ResetToDefault();
				mfx_bssshiftradius.ResetToDefault();
				break;
			case 6:
				if ( !mfx_vigenable ) mfx_vigenable = CVar.FindCVar('mfx_vigenable');
				if ( !mfx_vigcolor_r ) mfx_vigcolor_r = CVar.FindCVar('mfx_vigcolor_r');
				if ( !mfx_vigcolor_g ) mfx_vigcolor_g = CVar.FindCVar('mfx_vigcolor_g');
				if ( !mfx_vigcolor_b ) mfx_vigcolor_b = CVar.FindCVar('mfx_vigcolor_b');
				if ( !mfx_vigpow ) mfx_vigpow = CVar.FindCVar('mfx_vigpow');
				if ( !mfx_vigmul ) mfx_vigmul = CVar.FindCVar('mfx_vigmul');
				if ( !mfx_vigbump ) mfx_vigbump = CVar.FindCVar('mfx_vigbump');
				if ( !mfx_vigshape ) mfx_vigshape = CVar.FindCVar('mfx_vigshape');
				if ( !mfx_vigmode ) mfx_vigmode = CVar.FindCVar('mfx_vigmode');
				if ( !mfx_bblurenable ) mfx_bblurenable = CVar.FindCVar('mfx_bblurenable');
				if ( !mfx_bblurpow ) mfx_bblurpow = CVar.FindCVar('mfx_bblurpow');
				if ( !mfx_bblurmul ) mfx_bblurmul = CVar.FindCVar('mfx_bblurmul');
				if ( !mfx_bblurbump ) mfx_bblurbump = CVar.FindCVar('mfx_bblurbump');
				if ( !mfx_bblurradius ) mfx_bblurradius = CVar.FindCVar('mfx_bblurradius');
				mfx_bblurenable.ResetToDefault();
				mfx_bblurpow.ResetToDefault();
				mfx_bblurmul.ResetToDefault();
				mfx_bblurbump.ResetToDefault();
				mfx_bblurradius.ResetToDefault();
				mfx_vigenable.ResetToDefault();
				mfx_vigcolor_r.ResetToDefault();
				mfx_vigcolor_g.ResetToDefault();
				mfx_vigcolor_b.ResetToDefault();
				mfx_vigpow.ResetToDefault();
				mfx_vigmul.ResetToDefault();
				mfx_vigbump.ResetToDefault();
				mfx_vigshape.ResetToDefault();
				mfx_vigmode.ResetToDefault();
				break;
			case 7:
				if ( !mfx_palenable ) mfx_palenable = CVar.FindCVar('mfx_palenable');
				if ( !mfx_palnum ) mfx_palnum = CVar.FindCVar('mfx_palnum');
				if ( !mfx_paldither ) mfx_paldither = CVar.FindCVar('mfx_paldither');
				mfx_palenable.ResetToDefault();
				mfx_palnum.ResetToDefault();
				mfx_paldither.ResetToDefault();
				break;
			case 8:
				if ( !mfx_lsharpenable ) mfx_lsharpenable = CVar.FindCVar('mfx_lsharpenable');
				if ( !mfx_lsharpradius ) mfx_lsharpradius = CVar.FindCVar('mfx_lsharpradius');
				if ( !mfx_lsharpclamp ) mfx_lsharpclamp = CVar.FindCVar('mfx_lsharpclamp');
				if ( !mfx_lsharpblend ) mfx_lsharpblend = CVar.FindCVar('mfx_lsharpblend');
				mfx_lsharpenable.ResetToDefault();
				mfx_lsharpradius.ResetToDefault();
				mfx_lsharpclamp.ResetToDefault();
				mfx_lsharpblend.ResetToDefault();
				break;
			}
		}
	}
}
