]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/menu/xonotic/dialog_settings_video.qc
d8e55cb9da27829f2143cde516c7288627d8ee3c
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / dialog_settings_video.qc
1 #ifndef DIALOG_SETTINGS_VIDEO_H
2 #define DIALOG_SETTINGS_VIDEO_H
3 #include "tab.qc"
4 CLASS(XonoticVideoSettingsTab, XonoticTab)
5         METHOD(XonoticVideoSettingsTab, fill, void(entity));
6         ATTRIB(XonoticVideoSettingsTab, intendedWidth, float, 0.9)
7         ATTRIB(XonoticVideoSettingsTab, rows, float, 15.5)
8         ATTRIB(XonoticVideoSettingsTab, columns, float, 6.2) // added extra .2 for center space
9         ATTRIB(XonoticVideoSettingsTab, name, string, "videosettings")
10 ENDCLASS(XonoticVideoSettingsTab)
11 entity makeXonoticVideoSettingsTab();
12 #endif
13
14 #ifdef IMPLEMENTATION
15 entity makeXonoticVideoSettingsTab()
16 {
17         entity me;
18         me = NEW(XonoticVideoSettingsTab);
19         me.configureDialog(me);
20         return me;
21 }
22 void XonoticVideoSettingsTab_fill(entity me)
23 {
24         entity e;
25         entity videoApplyButton = makeXonoticCommandButton(_("Apply immediately"), '0 0 0',
26                 "vid_width $_menu_vid_width;"
27                 "vid_height $_menu_vid_height;"
28                 "vid_pixelheight $_menu_vid_pixelheight;"
29                 "vid_desktopfullscreen $_menu_vid_desktopfullscreen;"
30                 "menu_cmd update_conwidths_before_vid_restart;"
31                 "vid_restart;"
32                 "menu_cmd sync;"
33                 , COMMANDBUTTON_APPLY);
34         videoApplyButton.disableOnClick = true;
35
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 = makeXonoticTextSlider("menu_vid_scale"));
43                         e.addValue(e, ZCTX(_("SZ^Unreadable")), "-1");
44                         e.addValue(e, ZCTX(_("SZ^Tiny")), "-0.75");
45                         e.addValue(e, ZCTX(_("SZ^Little")), "-0.5");
46                         e.addValue(e, ZCTX(_("SZ^Small")), "-0.25");
47                         e.addValue(e, ZCTX(_("SZ^Medium")), "0");
48                         e.addValue(e, ZCTX(_("SZ^Large")), "0.25");
49                         e.addValue(e, ZCTX(_("SZ^Huge")), "0.5");
50                         e.addValue(e, ZCTX(_("SZ^Gigantic")), "0.75");
51                         e.addValue(e, ZCTX(_("SZ^Colossal")), "1");
52                         e.configureXonoticTextSliderValues(e);
53         me.TR(me);
54                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Color depth:")));
55                 me.TD(me, 1, 2, e = makeXonoticTextSlider_T("vid_bitsperpixel",
56                         _("How many bits per pixel (BPP) to render at, 32 is recommended")));
57                         e.addValue(e, _("16bit"), "16");
58                         e.addValue(e, _("32bit"), "32");
59                         e.configureXonoticTextSliderValues(e);
60                         e.applyButton = videoApplyButton;
61         me.TR(me);
62                 me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "vid_fullscreen", _("Full screen")));
63                         e.applyButton = videoApplyButton;
64                 me.TD(me, 1, 2, e = makeXonoticCheckBox_T(0, "vid_vsync", _("Vertical Synchronization"),
65                         _("Enable vertical synchronization to prevent tearing, will cap your fps to the screen refresh rate (default: disabled)")));
66
67         me.TR(me);
68                 if(cvar("developer"))
69                 {
70                         me.TD(me, 1, 3, e = makeXonoticCheckBox_T(0, "v_flipped", _("Flip view horizontally"),
71                                 _("Poor man's left handed mode (default: off)")));
72                 }
73         me.TR(me);
74                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Anisotropy:")));
75                 me.TD(me, 1, 2, e = makeXonoticTextSlider_T("gl_texture_anisotropy",
76                         _("Anisotropic filtering quality (default: 1x)")));
77                         e.addValue(e, ZCTX(_("ANISO^Disabled")), "1");
78                         e.addValue(e, _("2x"), "2");
79                         e.addValue(e, _("4x"), "4");
80                         e.addValue(e, _("8x"), "8");
81                         e.addValue(e, _("16x"), "16");
82                         e.configureXonoticTextSliderValues(e);
83         me.TR(me);
84                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Antialiasing:")));
85                         setDependent(e, "r_viewfbo", 0, 0);
86                 me.TD(me, 1, 2, e = makeXonoticTextSlider_T("vid_samples",
87                         _("Enable antialiasing, which smooths the edges of 3D geometry. Note that it might decrease performance by quite a lot (default: disabled)")));
88                         e.addValue(e, ZCTX(_("AA^Disabled")), "1");
89                         e.addValue(e, _("2x"), "2");
90                         e.addValue(e, _("4x"), "4");
91                         e.configureXonoticTextSliderValues(e);
92                         setDependent(e, "r_viewfbo", 0, 0);
93         me.TR(me);
94                 me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 0, "r_viewfbo", _("High-quality frame buffer")));
95                         setDependent(e, "vid_samples", 1, 1);
96
97         me.TR(me);
98         me.TR(me);
99                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Depth first:")));
100                 me.TD(me, 1, 2, e = makeXonoticTextSlider_T("r_depthfirst",
101                         _("Eliminate overdraw by rendering a depth-only version of the scene before the normal rendering starts (default: disabled)")));
102                         e.addValue(e, ZCTX(_("DF^Disabled")), "0");
103                         e.addValue(e, ZCTX(_("DF^World")), "1");
104                         e.addValue(e, ZCTX(_("DF^All")), "2");
105                         e.configureXonoticTextSliderValues(e);
106         me.TR(me);
107                 me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Vertex Buffer Objects (VBOs)")));
108         me.TR(me);
109                 me.TDempty(me, 0.2);
110                 me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "0", ZCTX(_("VBO^Off"))));
111                 me.TD(me, 1, 1.9, e = makeXonoticRadioButton_T(1, "gl_vbo", "3", _("Vertices, some Tris (compatible)"),
112                         _("Make use of Vertex Buffer Objects to store static geometry in video memory for faster rendering (default: Vertex and Triangles)")));
113         me.TR(me);
114                 me.TDempty(me, 0.2);
115                 me.TD(me, 1, 0.9, e = makeXonoticRadioButton_T(1, "gl_vbo", "2", _("Vertices"),
116                         _("Make use of Vertex Buffer Objects to store static geometry in video memory for faster rendering (default: Vertex and Triangles)")));
117                 me.TD(me, 1, 1.9, e = makeXonoticRadioButton_T(1, "gl_vbo", "1", _("Vertices and Triangles"),
118                         _("Make use of Vertex Buffer Objects to store static geometry in video memory for faster rendering (default: Vertex and Triangles)")));
119
120         me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
121                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Brightness:")));
122                 me.TD(me, 1, 2, e = makeXonoticSlider_T(0.0, 0.5, 0.02, "v_brightness",
123                         _("Brightness of black (default: 0)")));
124         me.TR(me);
125                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Contrast:")));
126                 me.TD(me, 1, 2, e = makeXonoticSlider_T(1.0, 3.0, 0.05, "v_contrast",
127                         _("Brightness of white (default: 1)")));
128         me.TR(me);
129                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Gamma:")));
130                         setDependentAND(e, "vid_gl20", 1, 1, "v_glslgamma", 1, 1);
131                 me.TD(me, 1, 2, e = makeXonoticSlider_T(0.5, 2.0, 0.05, "v_gamma",
132                         _("Inverse gamma correction value, a brightness effect that does not affect white or black (default: 1.125)")));
133                         setDependentAND(e, "vid_gl20", 1, 1, "v_glslgamma", 1, 1);
134         me.TR(me);
135                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Contrast boost:")));
136                         setDependentAND(e, "vid_gl20", 1, 1, "v_glslgamma", 1, 1);
137                 me.TD(me, 1, 2, e = makeXonoticSlider_T(1.0, 5.0, 0.1, "v_contrastboost",
138                         _("By how much to multiply the contrast in dark areas (default: 1)")));
139                         setDependentAND(e, "vid_gl20", 1, 1, "v_glslgamma", 1, 1);
140         me.TR(me);
141                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Saturation:")));
142                         setDependent(e, "vid_gl20", 1, 1);
143                 me.TD(me, 1, 2, e = makeXonoticSlider_T(0.5, 2.0, 0.05, "r_glsl_saturation",
144                         _("Saturation adjustment (0 = grayscale, 1 = normal, 2 = oversaturated), requires GLSL color control (default: 1)")));
145                         setDependent(e, "vid_gl20", 1, 1);
146         me.TR(me);
147         me.TR(me);
148                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, ZCTX(_("LIT^Ambient:"))));
149                 me.TD(me, 1, 2, e = makeXonoticSlider_T(0, 20.0, 0.25, "r_ambient",
150                         _("Ambient lighting, if set too high it tends to make light on maps look dull and flat (default: 4)")));
151         me.TR(me);
152                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Intensity:")));
153                 me.TD(me, 1, 2, e = makeXonoticSlider_T(0.5, 2.0, 0.05, "r_hdr_scenebrightness",
154                         _("Global rendering brightness (default: 1)")));
155         me.TR(me);
156         me.TR(me);
157                 me.TD(me, 1, 3, e = makeXonoticCheckBox_T(0, "gl_finish", _("Wait for GPU to finish each frame"),
158                         _("Make the CPU wait for the GPU to finish each frame, can help with some strange input or video lag on some machines (default: disabled)")));
159         me.TR(me);
160                 me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_gl20", _("Use OpenGL 2.0 shaders (GLSL)")));
161         me.TR(me);
162                 me.TDempty(me, 0.2);
163                 me.TD(me, 1, 2.8, e = makeXonoticCheckBox_T(0, "v_glslgamma", _("Use GLSL to handle color control"),
164                         _("Enable use of GLSL to apply gamma correction, note that it might decrease performance by a lot (default: disabled)")));
165                         setDependent(e, "vid_gl20", 1, 1);
166         if(cvar("developer"))
167         {
168                 me.TR(me);
169                         me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "v_psycho", _("Psycho coloring (easter egg)")));
170                                 setDependent(e, "vid_gl20", 1, 1);
171                 me.TR(me);
172                         me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "r_trippy", _("Trippy vertices (easter egg)")));
173                                 setDependent(e, "vid_gl20", 1, 1);
174         }
175
176         me.gotoRC(me, me.rows - 1, 0);
177                 me.TD(me, 1, me.columns, videoApplyButton);
178 }
179 #endif