Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
dialog_settings_video.qc
Go to the documentation of this file.
2
3#include "commandbutton.qh"
4#include "textlabel.qh"
5#include "mixedslider.qh"
6#include "checkbox.qh"
7#include "slider.qh"
9#include "radiobutton.qh"
10
12{
14 me.configureDialog(me);
15 return me;
16}
18{
19 entity e;
20 entity videoApplyButton = makeXonoticCommandButton(_("Apply immediately"), '0 0 0',
21 "vid_width $_menu_vid_width; "
22 "vid_height $_menu_vid_height; "
23 "vid_pixelheight $_menu_vid_pixelheight; "
24 "vid_desktopfullscreen $_menu_vid_desktopfullscreen; "
25 "menu_cmd update_conwidths_before_vid_restart; "
26 "vid_restart; "
27 "menu_cmd sync"
29 videoApplyButton.disableOnClick = true;
30
31 me.TR(me);
32 me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "vid_fullscreen", _("Full screen")));
33 e.applyButton = videoApplyButton;
34 me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "vid_borderless", _("Borderless window")));
35 setDependent(e, "vid_fullscreen", 0, 0);
36 me.TR(me);
37 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Resolution:")));
38 me.TD(me, 1, 2, e = makeXonoticResolutionSlider());
39 e.applyButton = videoApplyButton;
40 me.TR(me);
41 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Font/UI size:")));
42 me.TD(me, 1, 2, e = makeXonoticMixedSlider("menu_vid_scale"));
43 e.addText(e, ZCTX(_("SZ^Unreadable")), -1);
44 e.addText(e, ZCTX(_("SZ^Tiny")), -0.75);
45 e.addText(e, ZCTX(_("SZ^Little")), -0.5);
46 e.addText(e, ZCTX(_("SZ^Small")), -0.25);
47 e.addText(e, ZCTX(_("SZ^Medium")), 0);
48 e.addText(e, ZCTX(_("SZ^Large")), 0.25);
49 e.addText(e, ZCTX(_("SZ^Huge")), 0.5);
50 e.addText(e, ZCTX(_("SZ^Gigantic")), 0.75);
51 e.addText(e, ZCTX(_("SZ^Colossal")), 1);
52 e.configureXonoticMixedSliderValues(e);
53 e.applyButton = videoApplyButton;
54 me.TR(me);
55 me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "r_stereo_redcyan", _("Anaglyph 3D (red-cyan)")));
56 me.TR(me);
57 me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 0, "r_viewfbo", _("High-quality frame buffer")));
58 if (cvar_type("vid_gl20") & CVAR_TYPEFLAG_ENGINE)
59 setDependent(e, "vid_samples", 0, 1);
60
61 me.TR(me);
62 me.TR(me);
63 if (cvar_type("vid_gl20") & CVAR_TYPEFLAG_ENGINE)
64 {
65 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Antialiasing:")));
66 setDependent(e, "r_viewfbo", 0, 0);
67 me.TD(me, 1, 2, e = makeXonoticMixedSlider_T("vid_samples",
68 _("Enable antialiasing, which smooths the edges of 3D geometry. Note that it might decrease performance by quite a lot")));
69 e.formatString = _("%sx");
70 e.addText(e, ZCTX(_("AA^Disabled")), 1);
71 e.addRange(e, 2, 4, 2);
72 e.configureXonoticMixedSliderValues(e);
73 setDependent(e, "r_viewfbo", 0, 0);
74 e.applyButton = videoApplyButton;
75 }
76 else
77 {
78 me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Resolution scaling:")));
79 me.TD(me, 1, 1.8, e = makeXonoticSlider_T(0.5, 2, 0.25, "r_viewscale",
80 _("Screen or window size multiplier, above 1x does antialiasing, below 1x may help slow GPUs")));
81 e.setValueSpace(e, e.valueSpace * (10/9));
82 e.formatString = _("%sx");
83 }
84 me.TR(me);
85 me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Anisotropy:")));
86 me.TD(me, 1, 1.8, e = makeXonoticMixedSlider_T("gl_texture_anisotropy",
87 _("Anisotropic filtering quality")));
88 e.setValueSpace(e, e.valueSpace * (10/9));
89 e.formatString = _("%sx");
90 e.addText(e, ZCTX(_("ANISO^Disabled")), 1);
91 e.addRange(e, 2, 4, 2);
92 e.addRange(e, 8, 16, 8);
93 e.configureXonoticMixedSliderValues(e);
94
95 string df_tooltip = _("Eliminate overdraw by rendering a depth-only version of the scene before the normal rendering starts");
96 me.TR(me);
97 me.TR(me);
98 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Depth first:")));
99 me.TD(me, 1, 2/3, e = makeXonoticRadioButton_T(2, "r_depthfirst", "0", ZCTX(_("DF^Disabled")), df_tooltip));
100 me.TD(me, 1, 2/3, e = makeXonoticRadioButton_T(2, "r_depthfirst", "1", ZCTX(_("DF^World")), df_tooltip));
101 me.TD(me, 1, 2/3, e = makeXonoticRadioButton_T(2, "r_depthfirst", "2", ZCTX(_("DF^All")), df_tooltip));
102
103 me.TR(me);
104 me.TR(me);
105 me.TD(me, 1, 3, e = makeXonoticCheckBox_T(0, "gl_finish", _("Wait for GPU to finish each frame"),
106 _("Make the CPU wait for the GPU to finish each frame, can help with some strange input or video lag on some machines")));
107 me.TR(me);
108 if (cvar_type("vid_gl20") & CVAR_TYPEFLAG_ENGINE)
109 {
110 me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_gl20", _("Use OpenGL 2.0 shaders (GLSL)")));
111 e.applyButton = videoApplyButton;
112 }
113
114 me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
115 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Brightness:")));
116 me.TD(me, 1, 2, e = makeXonoticSlider_T(0.0, 0.5, 0.02, "v_brightness",
117 _("Brightness of black")));
118 me.TR(me);
119 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Contrast:")));
120 me.TD(me, 1, 2, e = makeXonoticSlider_T(1.0, 3.0, 0.05, "v_contrast",
121 _("Brightness of white")));
122 me.TR(me);
123 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Gamma:")));
124 if (cvar_type("vid_gl20") & CVAR_TYPEFLAG_ENGINE)
125 setDependent(e, "vid_gl20", 1, 1);
126 me.TD(me, 1, 2, e = makeXonoticSlider_T(0.5, 2.0, 0.05, "v_gamma",
127 _("Inverse gamma correction value, a brightness effect that does not affect white or black")));
128 if (cvar_type("vid_gl20") & CVAR_TYPEFLAG_ENGINE)
129 setDependent(e, "vid_gl20", 1, 1);
130 me.TR(me);
131 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Contrast boost:")));
132 if (cvar_type("vid_gl20") & CVAR_TYPEFLAG_ENGINE)
133 setDependent(e, "vid_gl20", 1, 1);
134 me.TD(me, 1, 2, e = makeXonoticSlider_T(1.0, 5.0, 0.1, "v_contrastboost",
135 _("By how much to multiply the contrast in dark areas")));
136 if (cvar_type("vid_gl20") & CVAR_TYPEFLAG_ENGINE)
137 setDependent(e, "vid_gl20", 1, 1);
138 me.TR(me);
139 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Saturation:")));
140 if (cvar_type("vid_gl20") & CVAR_TYPEFLAG_ENGINE)
141 setDependent(e, "vid_gl20", 1, 1);
142 me.TD(me, 1, 2, e = makeXonoticSlider_T(0.5, 2.0, 0.05, "r_glsl_saturation",
143 _("Saturation adjustment (0 = grayscale, 1 = normal, 2 = oversaturated), requires GLSL color control")));
144 if (cvar_type("vid_gl20") & CVAR_TYPEFLAG_ENGINE)
145 setDependent(e, "vid_gl20", 1, 1);
146 me.TR(me);
147 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, ZCTX(_("LIT^Ambient:"))));
148 me.TD(me, 1, 2, e = makeXonoticSlider_T(0, 20.0, 0.25, "r_ambient",
149 _("Ambient lighting, if set too high it tends to make light on maps look dull and flat")));
150 me.TR(me);
151 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Intensity:")));
152 me.TD(me, 1, 2, e = makeXonoticSlider_T(0.5, 2.0, 0.05, "r_hdr_scenebrightness",
153 _("Global rendering brightness")));
154
155 me.TR(me);
156 me.TR(me);
157 me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Framerate")));
158 me.TR(me);
159 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Maximum:")));
160 me.TD(me, 1, 2, e = makeXonoticMixedSlider("cl_maxfps"));
161 e.formatString = _("%s fps");
162 e.addRange(e, 128, 256, 128);
163 e.addRange(e, 512, 1024, 512);
164 e.addRange(e, 2048, 2048, 2048);
165 e.addText(e, ZCTX(_("MAXFPS^Unlimited")), 0);
166 e.configureXonoticMixedSliderValues(e);
167 me.TR(me);
168 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Target:")));
169 me.TD(me, 1, 2, e = makeXonoticMixedSlider("cl_minfps"));
170 e.formatString = _("%s fps");
171 e.addText(e, ZCTX(_("TRGT^Disabled")), 0);
172 e.addRange(e, 40, 60, 20);
173 e.addRange(e, 100, 150, 25);
174 e.addRange(e, 200, 250, 50);
175 e.addRange(e, 400, 400, 100);
176 e.configureXonoticMixedSliderValues(e);
177 me.TR(me);
178 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Idle limit:")));
179 me.TD(me, 1, 2, e = makeXonoticMixedSlider("cl_maxidlefps"));
180 e.formatString = _("%s fps");
181 e.addRange(e, 16, 32, 16);
182 e.addRange(e, 64, 128, 64);
183 e.addText(e, ZCTX(_("IDLFPS^Unlimited")), 0);
184 e.configureXonoticMixedSliderValues(e);
185 me.TR(me);
186 me.TD(me, 1, 3, e = makeXonoticCheckBox_T(0, "vid_vsync", _("Vertical Synchronization"),
187 _("Vsync prevents tearing, but increases latency and caps your fps at the screen refresh rate")));
188 me.TR(me);
189 me.TD(me, 1, 3, e = makeXonoticCheckBox_T(0, "showfps", _("Show frames per second"),
190 _("Show your rendered frames per second")));
191
192 me.gotoRC(me, me.rows - 1, 0);
193 me.TD(me, 1, me.columns, videoApplyButton);
194}
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
entity makeXonoticCommandButton(string theText, vector theColor, string theCommand, int theFlags)
#define COMMANDBUTTON_APPLY
float CVAR_TYPEFLAG_ENGINE
entity makeXonoticVideoSettingsTab()
void XonoticVideoSettingsTab_fill(entity me)
#define ZCTX(s)
Definition i18n.qh:68
void setDependent(entity e, string theCvarName, float theCvarMin, float theCvarMax)
Definition util.qc:180
#define NEW(cname,...)
Definition oo.qh:117
entity makeXonoticResolutionSlider()
entity makeXonoticTextLabel(float theAlign, string theText)
Definition textlabel.qc:3
entity makeXonoticHeaderLabel(string theText)
Definition textlabel.qc:9
entity makeXonoticCheckBox_T(float isInverted, string theCvar, string theText, string theTooltip)
Definition checkbox.qc:3
entity makeXonoticCheckBox(float isInverted, string theCvar, string theText)
Definition checkbox.qc:28
entity makeXonoticCheckBoxEx(float theYesValue, float theNoValue, string theCvar, string theText)
Definition checkbox.qc:39
entity makeXonoticMixedSlider(string theCvar)
Definition mixedslider.qc:9
entity makeXonoticMixedSlider_T(string theCvar, string theTooltip)
Definition mixedslider.qc:3
entity makeXonoticRadioButton_T(float theGroup, string theCvar, string theValue, string theText, string theTooltip)
Definition radiobutton.qc:3
entity makeXonoticSlider_T(float theValueMin, float theValueMax, float theValueStep, string theCvar, string theTooltip)
Definition slider.qc:3