From 458bde069b012bb743dee70a72837fcf193943c1 Mon Sep 17 00:00:00 2001 From: div0 Date: Sat, 17 Oct 2009 17:41:40 +0000 Subject: [PATCH] shadowmapping menu option git-svn-id: svn://svn.icculus.org/nexuiz/trunk@8148 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/defaultNexuiz.cfg | 2 -- data/effects-high.cfg | 1 + data/effects-low.cfg | 1 + data/effects-med.cfg | 1 + data/effects-normal.cfg | 1 + data/effects-omg.cfg | 1 + data/effects-ultimate.cfg | 1 + data/effects-ultra.cfg | 1 + data/qcsrc/common/util.qh | 4 ++++ data/qcsrc/menu/menu.qh | 1 - .../menu/nexuiz/dialog_settings_effects.c | 17 +++++++++++++++-- data/qcsrc/menu/nexuiz/util.qc | 19 ++++++++++++++++++- data/qcsrc/menu/nexuiz/util.qh | 1 + data/qcsrc/server/defs.qh | 2 -- 14 files changed, 45 insertions(+), 8 deletions(-) diff --git a/data/defaultNexuiz.cfg b/data/defaultNexuiz.cfg index 9b4260c40..6239765fb 100644 --- a/data/defaultNexuiz.cfg +++ b/data/defaultNexuiz.cfg @@ -1658,8 +1658,6 @@ set sv_weaponstats_killfile "" "when set to a file name, per-weapon kill stats g seta cl_noantilag 0 "turn this on if you believe antilag is bad" -r_shadow_shadowmapping 1 - set sv_pitch_min -35 "minimum aiming angle for shooting direction display of the gun" set sv_pitch_max 35 "maximum aiming angle for shooting direction display of the gun" set sv_pitch_fixyaw 1 "workaround to fix the aiming direction on stupidly made player models, FIXME fix the models and set this to 0" diff --git a/data/effects-high.cfg b/data/effects-high.cfg index 5e9639299..0acf1c9df 100644 --- a/data/effects-high.cfg +++ b/data/effects-high.cfg @@ -21,6 +21,7 @@ r_shadow_realtime_dlight 1 r_shadow_realtime_dlight_shadows 0 r_shadow_realtime_world 0 r_shadow_realtime_world_shadows 0 +r_shadow_shadowmapping 0 r_shadow_usenormalmap 1 r_showsurfaces 0 r_subdivisions_tolerance 3 diff --git a/data/effects-low.cfg b/data/effects-low.cfg index 1ad66fcbe..528075241 100644 --- a/data/effects-low.cfg +++ b/data/effects-low.cfg @@ -21,6 +21,7 @@ r_shadow_realtime_dlight 0 r_shadow_realtime_dlight_shadows 0 r_shadow_realtime_world 0 r_shadow_realtime_world_shadows 0 +r_shadow_shadowmapping 0 r_shadow_usenormalmap 0 r_showsurfaces 0 r_subdivisions_tolerance 8 diff --git a/data/effects-med.cfg b/data/effects-med.cfg index e184dbb40..70aaef999 100644 --- a/data/effects-med.cfg +++ b/data/effects-med.cfg @@ -21,6 +21,7 @@ r_shadow_realtime_dlight 1 r_shadow_realtime_dlight_shadows 0 r_shadow_realtime_world 0 r_shadow_realtime_world_shadows 0 +r_shadow_shadowmapping 0 r_shadow_usenormalmap 0 r_showsurfaces 0 r_subdivisions_tolerance 4 diff --git a/data/effects-normal.cfg b/data/effects-normal.cfg index 7ce61bf65..19dd4c2a5 100644 --- a/data/effects-normal.cfg +++ b/data/effects-normal.cfg @@ -21,6 +21,7 @@ r_shadow_realtime_dlight 1 r_shadow_realtime_dlight_shadows 0 r_shadow_realtime_world 0 r_shadow_realtime_world_shadows 0 +r_shadow_shadowmapping 0 r_shadow_usenormalmap 1 r_showsurfaces 0 r_subdivisions_tolerance 3 diff --git a/data/effects-omg.cfg b/data/effects-omg.cfg index 4bac93de2..d599b286d 100644 --- a/data/effects-omg.cfg +++ b/data/effects-omg.cfg @@ -21,6 +21,7 @@ r_shadow_realtime_dlight 0 r_shadow_realtime_dlight_shadows 0 r_shadow_realtime_world 0 r_shadow_realtime_world_shadows 0 +r_shadow_shadowmapping 0 r_shadow_usenormalmap 0 r_showsurfaces 3 r_subdivisions_tolerance 16 diff --git a/data/effects-ultimate.cfg b/data/effects-ultimate.cfg index e8ed260be..f6d576110 100644 --- a/data/effects-ultimate.cfg +++ b/data/effects-ultimate.cfg @@ -21,6 +21,7 @@ r_shadow_realtime_dlight 1 r_shadow_realtime_dlight_shadows 1 r_shadow_realtime_world 1 r_shadow_realtime_world_shadows 1 +r_shadow_shadowmapping 1 r_shadow_usenormalmap 1 r_showsurfaces 0 r_subdivisions_tolerance 1 diff --git a/data/effects-ultra.cfg b/data/effects-ultra.cfg index e476d1d52..68e4beeb7 100644 --- a/data/effects-ultra.cfg +++ b/data/effects-ultra.cfg @@ -21,6 +21,7 @@ r_shadow_realtime_dlight 1 r_shadow_realtime_dlight_shadows 1 r_shadow_realtime_world 1 r_shadow_realtime_world_shadows 1 +r_shadow_shadowmapping 1 r_shadow_usenormalmap 1 r_showsurfaces 0 r_subdivisions_tolerance 2 diff --git a/data/qcsrc/common/util.qh b/data/qcsrc/common/util.qh index 9ef83cddc..80a766fa4 100644 --- a/data/qcsrc/common/util.qh +++ b/data/qcsrc/common/util.qh @@ -194,3 +194,7 @@ float ReadInt24_t(); void WriteInt24_t(float dest, float val); #endif #endif + +// the NULL function +const var void func_null(void); +const var string string_null; diff --git a/data/qcsrc/menu/menu.qh b/data/qcsrc/menu/menu.qh index 47d092b2f..8cee5fdd8 100644 --- a/data/qcsrc/menu/menu.qh +++ b/data/qcsrc/menu/menu.qh @@ -5,7 +5,6 @@ // constants -const string string_null; const vector eX = '1 0 0'; const vector eY = '0 1 0'; const vector eZ = '0 0 1'; diff --git a/data/qcsrc/menu/nexuiz/dialog_settings_effects.c b/data/qcsrc/menu/nexuiz/dialog_settings_effects.c index 2867bef88..afac52451 100644 --- a/data/qcsrc/menu/nexuiz/dialog_settings_effects.c +++ b/data/qcsrc/menu/nexuiz/dialog_settings_effects.c @@ -18,6 +18,17 @@ entity makeNexuizEffectsSettingsTab() return me; } +float someShadowCvarIsEnabled(entity box) +{ + if(cvar("r_shadow_realtime_dlight")) + if(cvar("r_shadow_realtime_dlight_shadows")) + return TRUE; + if(cvar("r_shadow_realtime_world")) + if(cvar("r_shadow_realtime_world_shadows")) + return TRUE; + return FALSE; +} + void fillNexuizEffectsSettingsTab(entity me) { entity e; @@ -138,8 +149,10 @@ void fillNexuizEffectsSettingsTab(entity me) setDependent(e, "r_shadow_realtime_world", 1, 1); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2.8, e = makeNexuizCheckBox(0, "r_shadow_usenormalmap", "Use normal maps")); + me.TD(me, 1, 1.8, e = makeNexuizCheckBox(0, "r_shadow_usenormalmap", "Use normal maps")); setDependentOR(e, "r_shadow_realtime_dlight", 1, 1, "r_shadow_realtime_world", 1, 1); + me.TD(me, 1, 1, e = makeNexuizCheckBox(0, "r_shadow_shadowmapping", "Soft shadows")); + setDependentWeird(e, someShadowCvarIsEnabled); me.TR(me); me.TD(me, 1, 1, e = makeNexuizCheckBox(0, "r_coronas", "Coronas")); me.TR(me); @@ -158,6 +171,6 @@ void fillNexuizEffectsSettingsTab(entity me) setDependent(e, "r_motionblur", 0, 1); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, makeNexuizCommandButton("Apply immediately", '0 0 0', "vid_conwidth $menu_vid_conwidth; vid_conheight $menu_vid_conheight; vid_restart", COMMANDBUTTON_APPLY)); + me.TD(me, 1, me.columns, makeNexuizCommandButton("Apply immediately", '0 0 0', "vid_restart", COMMANDBUTTON_APPLY)); } #endif diff --git a/data/qcsrc/menu/nexuiz/util.qc b/data/qcsrc/menu/nexuiz/util.qc index 7ee4e8255..74a44f1c4 100644 --- a/data/qcsrc/menu/nexuiz/util.qc +++ b/data/qcsrc/menu/nexuiz/util.qc @@ -103,11 +103,16 @@ void makeCallback(entity e, entity cbent, void(entity, entity) cbfunc) .float op_setDependent; .string cvarString_setDependent; .string cvarValue_setDependent; +.float(entity) func_setDependent; void setDependent_Check(entity e) { float f; string s; - if(e.cvarString_setDependent) + if(e.func_setDependent) + { + e.disabled = !(e.func_setDependent(e)); + } + else if(e.cvarString_setDependent) { s = cvar_string(e.cvarString_setDependent); e.disabled = (cvar_string(e.cvarString_setDependent) == e.cvarValue_setDependent); @@ -153,6 +158,7 @@ void setDependent(entity e, string theCvarName, float theCvarMin, float theCvarM e.cvarMax_setDependent = theCvarMax; e.cvar2_setDependent = string_null; e.cvar3_setDependent = string_null; + e.func_setDependent = func_null; e.draw = setDependent_Draw; setDependent_Check(e); } @@ -164,6 +170,7 @@ void setDependentStringNotEqual(entity e, string theCvarName, string theCvarValu e.cvar_setDependent = string_null; e.cvar2_setDependent = string_null; e.cvar3_setDependent = string_null; + e.func_setDependent = func_null; e.draw = setDependent_Draw; setDependent_Check(e); } @@ -178,6 +185,7 @@ void setDependentAND(entity e, string theCvarName, float theCvarMin, float theCv e.cvar2Max_setDependent = theCvar2Max; e.cvar3_setDependent = string_null; e.op_setDependent = 0; + e.func_setDependent = func_null; e.draw = setDependent_Draw; setDependent_Check(e); } @@ -192,6 +200,7 @@ void setDependentOR(entity e, string theCvarName, float theCvarMin, float theCva e.cvar2Max_setDependent = theCvar2Max; e.cvar3_setDependent = string_null; e.op_setDependent = 1; + e.func_setDependent = func_null; e.draw = setDependent_Draw; setDependent_Check(e); } @@ -208,6 +217,14 @@ void setDependentAND3(entity e, string theCvarName, float theCvarMin, float theC e.cvar3Min_setDependent = theCvar3Min; e.cvar3Max_setDependent = theCvar3Max; e.op_setDependent = 0; + e.func_setDependent = func_null; + e.draw = setDependent_Draw; + setDependent_Check(e); +} +void setDependentWeird(entity e, float(entity) func) +{ + e.draw_setDependent = e.draw; + e.func_setDependent = func; e.draw = setDependent_Draw; setDependent_Check(e); } diff --git a/data/qcsrc/menu/nexuiz/util.qh b/data/qcsrc/menu/nexuiz/util.qh index f34f8d581..55d994115 100644 --- a/data/qcsrc/menu/nexuiz/util.qh +++ b/data/qcsrc/menu/nexuiz/util.qh @@ -10,6 +10,7 @@ void setDependentAND(entity e, string theCvarName, float theCvarMin, float theCv void setDependentOR(entity e, string theCvarName, float theCvarMin, float theCvarMax, string theCvar2Name, float theCvar2Min, float theCvar2Max); void setDependentAND3(entity e, string theCvarName, float theCvarMin, float theCvarMax, string theCvar2Name, float theCvar2Min, float theCvar2Max, string theCvar3Name, float theCvar3Min, float theCvar3Max); void setDependentStringNotEqual(entity e, string theCvarName, string theCvarValue); +void setDependentWeird(entity e, float(entity) func); float tooltipdb; void loadTooltips(); diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index d81c607e8..59b60a6bf 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -47,8 +47,6 @@ float sv_gentle; float sv_foginterval; entity activator; -string string_null; -const var void(void) func_null; float player_count; float currentbots; -- 2.39.2