Q2PRO-X 1.6 Beta 5 by ly — Q2PRO-X 1.6 Beta 5 Video and Visuals Guide
The complete guide in HTML. The original DOCX is available from its documentation card.
Q2PRO-X 1.6 Beta 5 by ly
Q2PRO-X 1.6 Beta 5 Video and Visuals Guide
Project author: ly
Backends, display modes, image quality, post-processing and display protection
English edition • Q2PRO-X 1.6 Beta 5 by ly • 2026-10-10
Contents
The entries are links: click one to jump to that section.
Beta4: EGL and tessellation preflight
3.4. Fast Alt-Tab on a deep-colour desktop
11. Recommended starting profiles
Beta4: EGL and tessellation preflight
Update the bundled libEGL.dll and libGLESv2.dll along with the client. They fix ANGLE vertex-layout cache corruption observed during demo/model rendering. Renderer startup and backend changes validate context capability. Eligible WGL contexts run a separate background compiler probe for world, snow and mirror tessellation, regardless of AVFX, tessellation switches or presets. Until PASS, the existing CPU/flat fallback remains. The game thread does not wait for probe completion. Results are cached against GPU, driver, context and shader code; there is no vendor/version blacklist. Settings remain intact. gl_capabilities and bsp_tess_info expose availability/fallback reasons. This is not immunity from every driver fault. EGL model-part colors and highlighted WGL/EGL cel outlines are also fixed.
Beta 3 corrections
Fixed blue artifacts at high contrast. The main tessellation master also governs water and lava; switching no longer triggers v_q2px_base_floor compilation errors. Incompatible gl_shaders 0 with active shader-dependent features is rejected with an explanation, including startup arguments and configs. Automatic menu scaling follows resolution changes. Lighting presets apply brightness, color grading and dynamic-light settings.
Video fixes in beta 2
Fixed WGL HDR transitions and map loading with AVFX; see the HDR guide. gl_picmip help now lists the actual 0–31 range. Texture reduction stops at 1×1, so settings 8 and 9 can differ for sufficiently large source textures. The incorrect upper bound of 8 is no longer documented.
What this document covers
This explains how the Q2PRO-X video settings and visual layers are built: the graphics backend, the display mode, the render scale, post-processing, OLED display protection, the highlights, and the separate visual profile used while watching recordings.
Where the settings live
| What you are setting | Menu path |
|---|---|
| Display, backend, render scale, gamma | Main menu → Video & Display |
| OLED protection | Main menu → Video & Display → OLED Protection |
| HDR | Main menu → Video & Display → HDR Settings |
| Post-processing | Main menu → Video & Display → Post-Process Effects |
| Visual effects | Main menu → Video & Display → Visual FX |
| Dynamic lighting | Main menu → Video & Display → Dynamic Lighting |
| GL settings | Main menu → Video & Display → Q2PRO-X / GL settings |
| Renderer settings | Main menu → Video & Display → Q2PRO-X / Renderer settings |
| Visual highlights | Main menu → Online Play Setup → Visibility Highlights |
Some stock Quake II video variables are still reachable from the console, but for ordinary configuration start with the Q2PRO-X pages.
1. The main video page
Video & Display
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Display Mode | Display Mode | ||
| List | Display Mode | Video backend | vid_driver | vid_driver: win32wgl = default (fast cold AVFX startup), win32egl = explicit capture-friendly ANGLE / true-HDR choice. [Win32egl / Win32wgl] |
| Value list | Display Mode | Resolution | vid_resolution | vid_resolution: desktop = native monitor mode. |
| Toggle | Display Mode | Windowed mode | vid_windowed | vid_windowed: run in a normal resizable window. |
| List | Display Mode | Fullscreen mode | vid_fullscreen_type | Fullscreen flavor when windowed is off. [Desktop fullscreen / Exclusive fullscreen] |
| Value list | Display Mode | Refresh rate | vid_refresh | vid_refresh: max = highest available. |
| List | Display Mode | Fullscreen fit | vid_desktop_fullscreen_fit | Fill = stretch to monitor, aspect = keep selected mode aspect with black bars. Applies immediately. [fill / aspect] |
| List | Display Mode | Deep-color Alt-Tab | vid_desktop_fullscreen_margin | Exact fullscreen is the default and keeps maximum native-WGL FPS. Fast Alt-Tab sets vid_desktop_fullscreen_margin 0: on desktops deeper than 8 bpc it leaves a narrow right edge and may reduce FPS. Needs vid_restart. [Exact fullscreen / Fast Alt-Tab] |
| Section | Scale, Gamma & FPS | Scale, Gamma & FPS | ||
| Slider | Scale, Gamma & FPS | Render scale | gl_render_scale | Internal 3D scene resolution (100=native, step 1%). |
| List | Scale, Gamma & FPS | Scale mode | gl_render_scale_mode | Auto = best path, texture = bloom/waterwarp, blit = high range, tiled = extreme. [auto / texture / blit / tiled] |
| List | Scale, Gamma & FPS | Scale filter | gl_render_scale_filter | Resolve quality (fast / balanced / quality). [fast / balanced / quality] |
| Slider | Scale, Gamma & FPS | World light intensity | intensity | intensity: primary renderer light intensity multiplier used by shaders. 2 is the Q2PRO default; higher brightens the level, lower darkens it. When Global Q2PRO-X prefs / Video is enabled, this value is stored in the unified global config. Applies immediately. |
| Slider | Scale, Gamma & FPS | Texture gamma (compatibility) | vid_gamma | Compatibility texture gamma for existing configs. On programmable WGL/EGL it affects wall/skin texture uploads and needs r_reload or vid_restart; it never changes the final frame. |
| Slider | Scale, Gamma & FPS | Full-frame gamma | vid_display_gamma | Explicit live final-composite gamma in programmable WGL/EGL. 1.0 is neutral and never inherits legacy vid_gamma; lower brightens the complete frame, higher darkens it. Applies immediately. |
| Toggle | Scale, Gamma & FPS | Hardware gamma | vid_hwgamma | Apply the legacy vid_gamma curve through the display driver's hardware gamma ramp. Enabling requires vid_restart and driver support; independent from vid_display_gamma. |
| Slider | Scale, Gamma & FPS | Renderer FPS limit | r_maxfps | r_maxfps: renderer-only framerate cap. 0 = uncapped. Applies when cl_async 1; otherwise cl_maxfps is the gate. Applies immediately. |
| Section | Submenus & Actions | Submenus & Actions | ||
| Navigation | Submenus & Actions | OLED protection... | q2prox_oled | OLED protection suite: burn-in guards, dimming and static-image safeguards. |
| Navigation | Submenus & Actions | HDR settings... | q2prox_hdr | HDR rendering / tone mapping settings. |
| Navigation | Submenus & Actions | Post-process effects... | q2prox_postfx | Post-process camera/display effects (pixel, CRT, film, VHS). |
| Navigation | Submenus & Actions | Visual effects... | q2prox_vfx | Fog, bloom, color grading, sharpen, cel-shading and other visual effects. |
| Navigation | Submenus & Actions | Dynamic lighting... | q2prox_dynamic_lighting | Dynamic lights, emissive map lights, spawn lights, sparks and model shadows. |
| Navigation | Submenus & Actions | GL settings... | q2prox_gl_settings | GL textures and visual style: vsync, filter, anisotropy, picmip, particles, beams, bilerp, font shadow, damage blend. |
| Navigation | Submenus & Actions | Renderer settings... | q2prox_renderer_settings | Renderer lighting and pipeline: vertex lighting, modulation, dlight falloff, lightgrid, waterwarp, GL shaders / MD5 / texture bits (some require vid_restart). |
| Navigation | Submenus & Actions | Restart video... | vid_restart | Apply vid_driver / fullscreen changes now |
| Navigation | Submenus & Actions | Render scale info... | gl_render_scale_info | Print render scale path, max resolution and tile grid to the console. |
2. The graphics backend
| Variable | Accepted values | Description |
|---|---|---|
| vid_driver | win32wgl=Windows WGL OpenGL (default, fast cold AVFX startup) / win32egl=Windows EGL/ANGLE (explicit capture/true-HDR choice) / wayland=native Wayland / x11=native X11 / sdl=SDL2 | Specifies which video driver to use. On Windows the default is win32wgl: native OpenGL has the fast cold AVFX startup path. win32egl remains an explicit capture-friendly ANGLE choice for NVIDIA ShadowPlay/OBS compatibility and is required for the optional true-HDR output path, but its first cold shader build can take much longer. If the chosen backend fails to initialize the engine probes the remaining drivers and rewrites vid_driver to the backend that actually started. |
Two paths:
If the selected backend cannot start, the engine tries the available fallback drivers and rewrites the variable to the backend that actually started. That is why the menu shows both the desired value and the actual launch result.
Practical guidance:
3. The display mode
Q2PRO-X hides the old awkward fullscreen model behind understandable lists:
| Menu row | What it does |
|---|---|
| Windowed | Start in an ordinary resizable window |
| Fullscreen type | Desktop fullscreen or exclusive mode |
| Fullscreen fit | Fill the monitor, or keep the aspect ratio with black bars |
| Alt-Tab (deep-colour desktop) | Exact size, or fast Alt-Tab |
3.1. Desktop fullscreen
This is borderless fullscreen. It is usually the best mode for switching windows, recording video and a modern Windows desktop. With the aspect fit, the game keeps the chosen aspect ratio and draws black bars.
3.2. Exclusive fullscreen
The classic mode that changes the monitor's video mode.
3.3. Windowed mode
In a window the size is governed by the window itself, and the refresh rate by the desktop.
3.4. Fast Alt-Tab on a deep-colour desktop
| Variable | Accepted values | Description |
|---|---|---|
| vid_desktop_fullscreen_margin | -1=exact size (default) / 0=fast Alt-Tab on deep-color WGL / 1..16=manual diagnostic margin | Desktop-fullscreen Alt-Tab policy. Default -1 uses the exact monitor size and preserves maximum native-WGL FPS, but Alt-Tab can be slower on desktops deeper than 8 bpc. Value 0 enables automatic fast-Alt-Tab compatibility: deep-color SDR WGL leaves a minimal right-edge margin to avoid Legacy Flip, potentially at an FPS cost. Active FP16 true HDR remains exact-size. Positive values are manual diagnostic margins. Requires vid_restart. |
The exact size is the default: it preserves the maximum frame rate on native WGL. The fast Alt-Tab mode helps on a desktop deeper than 8 bits, but it leaves a narrow strip on the right and can reduce the frame rate. It requires a video restart.
4. Render scale
The render scale separates the internal 3D resolution from the size of the window.
| Variable | Accepted values | Description |
|---|---|---|
| gl_render_scale | 100..1000 (percent; 100 = native, 200 = 2x super-sampling, etc.; menu step 1%) | Internal 3D scene resolution as a percent of the display. 100 is native resolution; >100 is super-sampling (render higher, downscale for AA); <100 is not supported — set gl_render_scale to 100 to disable super-sampling. Runtime-clamped by gl_render_scale_max and the backend's max texture size. Menu step 1% (was 25% — 1% gives finer control on the SS curve). |
| gl_render_scale_mode | 0=auto / 1=texture/FBO / 2=blit / 3=tiled | Render scale pipeline mode. Integer 0..3. 0 = auto pick. 1 = render into offscreen texture / FBO (preferred for >100% SSAA). 2 = direct blit path when supported. 3 = tiled mode for very high render scales that exceed max texture size. |
| gl_render_scale_filter | 0=fast single blit / 1=balanced progressive 2x / 2=quality progressive 2x + tiled guard band | Render scale upscale / downscale filter quality. Integer 0..2. 0 = single fast blit (cheap, slight blur). 1 = balanced progressive 2x downsample chain. 2 = quality progressive 2x + tiled-mode guard band (sharpest, most VRAM/perf). |
Typical uses:
For competitive play it usually makes sense to keep 100 and gain frames by disabling expensive visual effects instead.
The gl_render_scale_info command prints the actual scaling path, the maximum resolution and the tile grid.
5. Gamma and brightness
This is where confusion arises most often, especially after loading an old config.
| Variable | Accepted values | Description |
|---|---|---|
| vid_gamma | default 1 / range 0.3..3 / step 0.05 / r_reload/vid_restart | Compatibility texture gamma used by existing Q2/Q2PRO configs. Default 1.0 = identity; lower values brighten texture mid-tones, higher values darken them. On programmable WGL/EGL it is baked into wall/skin texture uploads and therefore needs r_reload or vid_restart; it never changes the whole final frame. With vid_hwgamma 1, the display backend may instead consume this curve as a hardware gamma ramp. Owned by the unified global video config when global video preferences are enabled. |
| vid_display_gamma | default 1 / range 0.3..3 / step 0.05 / live | Optional live final-composite gamma for programmable WGL/EGL. Default 1.0 is neutral; lower values brighten the complete frame and higher values darken it. This new control is deliberately independent from legacy vid_gamma and never inherits its persisted value. Owned by the unified global video config when global video preferences are enabled. |
| vid_hwgamma | default 0 / 0/1 / vid_restart | Apply the legacy vid_gamma curve as a hardware gamma ramp through the display driver instead of baking it into textures. Default 0 = off; 1 = on. Registered as CVAR_REFRESH, so enabling it needs vid_restart and driver support; once active, changes to vid_gamma are live. Independent from the optional final-composite vid_display_gamma. Owned by the unified global video config when global video preferences are enabled. |
| intensity | default 2 / range 0..5 / step 0.05 | Primary renderer light intensity multiplier consumed by the shader uniforms (u_intensity / u_intensity2). Stock Q2PRO default is 2; lower values darken the level, higher values brighten it. When cl_q2prox_cfg_global_prefs 1 + cl_q2prox_cfg_global_pref_video 1 are enabled the value is owned by the unified Q2PRO-X global config (baseq2/q2pro-x/q2pro-x.cfg). Independent from gl_brightness / gl_modulate, legacy texture-domain vid_gamma, and final-composite vid_display_gamma; these controls operate at separate renderer stages. |
The short rule:
Everything about high dynamic range lives in the separate HDR guide.
6. Basic visual effects
Separate pages own separate groups:
Visual FX
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Fog | Fog | ||
| Toggle | Fog | Fog | usefog | Enable client-side fog on maps that define fog. Applies immediately. |
| Slider | Fog | Fog density | fogdensity | Fog thickness: higher = denser haze and less far visibility. Applies immediately. |
| Slider | Fog | Fog hue | foghue | Fog color hue around the color wheel (0..1). Applies immediately. |
| Slider | Fog | Fog saturation | fogsaturation | Fog color saturation: 0 = gray, 1 = vivid. Applies immediately. |
| Slider | Fog | Fog lightness | foglightness | Fog brightness: 0 = dark fog, 1 = bright fog. Applies immediately. |
| Section | Lighting & style | Lighting & style | ||
| Toggle | Lighting & style | No glow | cl_noglow | Hide the colored power-up shell glow (quad/pent/invul tint) on players and weapons. Power-up state unchanged. Applies immediately. |
| Toggle | Lighting & style | Poly blend | gl_polyblend | Full-screen color flashes on damage, item pickup and underwater; off removes them. Applies immediately. |
| Toggle | Lighting & style | Colored lightmaps | gl_coloredlightmaps | Colored world lighting; off desaturates lightmaps to grayscale. Applies immediately. |
| Slider | Lighting & style | Brightness | gl_brightness | Adds brightness to world lightmaps; higher = brighter map. Applies immediately. |
| Slider | Lighting & style | Cel shading | gl_celshading | Black cartoon outline thickness around models; 0 = off. Applies immediately. |
| Section | Bloom & glow | Bloom & glow | ||
| Navigation | Bloom & glow | Bloom settings... | q2prox_bloom | Common bloom controls and source strengths from 0 to 100%. |
| Section | Color grading | Color grading | ||
| List | Color grading | Grading profile | gl_post_profile | Color-grading look for the final image: neutral, warm, arena or cinematic. Applies immediately. [off / neutral / warm / arena / cinematic] |
| Slider | Color grading | Contrast | gl_post_contrast | Image contrast; 1 = neutral, higher = punchier. Applies immediately. |
| Slider | Color grading | Vibrance | gl_post_vibrance | Vibrance: boosts muted colors most; negative = washed out. Applies immediately. |
| Slider | Color grading | Temperature | gl_post_temperature | Color temperature; negative = cooler/blue, positive = warmer/orange. Applies immediately. |
| Section | Sharpen | Sharpen | ||
| Slider | Sharpen | Sharpen | gl_sharpen | Edge sharpening of the final image; higher = crisper. Applies immediately. |
| Section | Submenus | Submenus | ||
| Navigation | Submenus | Dynamic lighting... | q2prox_dynamic_lighting | Dynamic lights, emissive map lights, spawn lights, sparks and model shadows. |
| Navigation | Submenus | Advanced effects... | q2prox_avfx | Open Advanced Visual Effects (AVFX): weather, sky, celestials and surface effects. |
| Navigation | Submenus | Visual fx info... | gl_visual_fx_info | Print current Visual FX cvar values and status to the console. |
| Navigation | Submenus | Visibility highlights... | q2prox_vis | Item, weapon and player highlights, including model-part colours. |
6.1. Post-processing
Post-Process Effects
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Toggle | Post-process | gl_postfx | gl_postfx: post-process master on/off Applies immediately. | |
| List | Mode | gl_postfx_mode | Post-process look: Pixel, CRT, Film, VHS, Noir or Sepia (needs Post-process on). Applies immediately. [Off / Pixel / CRT / Film / VHS / Noir / Sepia] | |
| Slider | Strength | gl_postfx_strength | Overall intensity of the active post-process effect; 1 = nominal. Applies immediately. | |
| Slider | Mix | gl_postfx_mix | Blend of the effect with the raw image; 1 = full effect, 0 = none. Applies immediately. | |
| Navigation | Pixel settings... | q2prox_postfx_pixel | Open Pixel Retro settings: resolution, grid, color levels, palette, dithering. | |
| Navigation | CRT settings... | q2prox_postfx_crt | Open CRT settings: scanlines, mask, vignette, chroma, curvature, flicker. | |
| Navigation | Film settings... | q2prox_postfx_film | Open Film settings: grain, vignette, chroma, lens dirt. | |
| Navigation | VHS settings... | q2prox_postfx_vhs | Open VHS settings: noise, chroma bleed, jitter, tracking. | |
| Navigation | Reset master... | set gl_postfx 0; set gl_postfx_mode 0; set gl_postfx_strength 1.0; set gl_postfx_mix 1.0 | Reset post-process master/common to defaults |
6.2. Dynamic lighting
Dynamic Lighting
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Dynamic lights | Dynamic lights | ||
| List | Dynamic lights | Dynamic lights | gl_dynamic | Dynamic lightmap lighting: off, on, or only map switchable lights. Applies immediately. [no / yes / only switchable] |
| Slider | Dynamic lights | Dynamic light darkness boost | gl_dynamic_dark_boost | Boosts dynamic lights (blasters/rockets/explosions) on locally dark surfaces. 0=legacy; 1.55 default; 5..10 dramatic. Radius/color unchanged. Applies immediately. |
| Slider | Dynamic lights | Dynamic light radius | gl_dynamic_radius | Dynamic light radius scale. 1.0=legacy; lower=smaller projected spots on walls. Higher=stretched glow within marked surfaces. Applies immediately. |
| Slider | Dynamic lights | Dynamic light softness | gl_dynamic_softness | Falloff softness. 1.0=legacy linear; >1=softer diffuse edges; <1=concentrated pin-point core. Applies immediately. |
| Slider | Dynamic lights | Dynamic light alpha | gl_dynamic_alpha | Alpha/opacity of dynamic light projections. 1.0=legacy full; 0=invisible. Applies immediately. |
| Toggle | Dynamic lights | Sparks emit dlight | cl_q2prox_spark_dlight | Emit a short dynamic light at impact sparks (bullets / shotgun / screen / shield). Lets sparks light up the surrounding floor / snow. Default OFF. Applies immediately. |
| Section | Emissive map lights | Emissive map lights | ||
| Toggle | Emissive map lights | Emissive map lights | gl_emissive_lights | Local light from visible emissive map objects. Invisible compiler markers are ignored. Applies immediately. |
| Toggle | Emissive map lights | Surface lights | gl_emissive_lights_surfaces | Use visible non-water SURF_LIGHT faces as sources. Applies immediately. |
| Toggle | Emissive map lights | Spawn point lights | gl_emissive_lights_spawn_points | Opt-in: light player starts snapped to compact nearby floor/pad geometry. Raw invisible info_player_* origins and unrelated wall lamps are ignored. Also covers destination markers like misc_teleporter_dest. Applies immediately. |
| Section | Emissive tuning | Emissive tuning | ||
| Slider | Emissive tuning | Emissive intensity | gl_emissive_lights_intensity | Global intensity scale for emissive sources. 0=off; 1=baseline; up to 5x for dramatic. Applies immediately. |
| Slider | Emissive tuning | Emissive range | gl_emissive_lights_range | Per-source range cap in world units (smaller = tighter pools of light). Applies immediately. |
| Slider | Emissive tuning | Range scale | gl_emissive_lights_range_scale | Multiplier on per-source intrinsic radius (independent of cap). Applies immediately. |
| Slider | Emissive tuning | Flicker | gl_emissive_lights_flicker | Lamp-like low-frequency flicker amount (0 = stable, ~0.08 = subtle drift). Applies immediately. |
| Slider | Emissive tuning | Fade time | gl_emissive_lights_fade_ms | Fade-in/out time (ms) when a sub-cvar toggle changes which sources are active. With priority-based selection (default), no camera-driven activation. Fades only on user toggles. 0 = hard snap (debug). Applies immediately. |
| Toggle | Emissive tuning | PVS gate | gl_emissive_lights_pvs_gate | Optional: gate active sources by camera PVS visibility (big-map optimization). Default off. Leave off if you want truly static, always-on lighting that doesn't react to where you walk. Applies immediately. |
| Slider | Emissive tuning | Max active | gl_emissive_lights_max_active | Legacy V_AddLight emission cap. Strict slot reservation guarantees gameplay dlights (projectiles, sparks, explosions, flashlight) keep their MAX_DLIGHTS headroom. AVFX material UBOs use dedicated static families. Applies immediately. |
| Slider | Emissive tuning | Max cached | gl_emissive_lights_max_sources | Source-cache cap (built per map). 0 = effectively off. Applies immediately. |
| Section | Shadows | Shadows | ||
| List | Shadows | Shadows | gl_shadows | gl_shadows: 0=off, 1=basic hard shadows, 2=fade with distance, 3=soft model shadows Applies immediately. [off / basic / fade / soft] |
| Toggle | Shadows | Shadow light occlusion | gl_shadows_light_occlusion | Suppress projected model shadows when the model is under a solid ceiling. Does not affect AVFX flashlight dynamic shadows. Applies immediately. |
| Section | Service | Service | ||
| Navigation | Service | Reset to defaults | q2prox_dynamic_lighting_defaults | Reset every parameter in this submenu to its default value. |
6.3. GL settings
Q2PRO-X / GL settings
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Sections | Sections | ||
| Navigation | Sections | Sync and filtering... | q2prox_gl_sync_filter | |
| Navigation | Sections | Shader compile and cache... | q2prox_gl_shader_cache | |
| Navigation | Sections | Texture detail... | q2prox_gl_texture_detail | |
| Navigation | Sections | Particles and beams... | q2prox_gl_particles_beams |
6.4. Renderer settings
Q2PRO-X / Renderer settings
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Sections | Sections | ||
| Navigation | Sections | Lighting model... | q2prox_renderer_lighting | |
| Navigation | Sections | Level tessellation... | q2prox_bsp_tessellation | General WGL hardware tessellation for BSP world surfaces. Independent of Single Player Geometry Deformation and available in multiplayer. EGL uses the normal CPU world path. |
| Navigation | Sections | Water and fog... | q2prox_renderer_environment | |
| Navigation | Sections | Pipeline and models... | q2prox_renderer_pipeline | |
| Navigation | Sections | Texture overrides... | q2prox_renderer_texture_overrides |
7. OLED protection
This is a set of protective effects for the cases where static elements stay in one place for a long time.
OLED Protection
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Main | Main | ||
| Toggle | Main | OLED protection | vid_oled_enable | Master switch for the OLED burn-in protection suite. Applies immediately. |
| Section | Bar protection | Bar protection | ||
| Toggle | Bar protection | Bar protection | vid_oled_bar_protection | Slowly animate the aspect-fit pillarbox bars so they don't burn in. Applies immediately. |
| List | Bar protection | Bar preset | vid_oled_bar_preset | Bar animation preset: fade, random fade, or breathe. Applies immediately. [fade / random fade / breathe] |
| List | Bar protection | Bar color A | vid_oled_bar_color_a | First bar-animation color (one end of the breathing cycle). Applies immediately. [Black / Near black / Dim gray / Gray] |
| List | Bar protection | Bar color B | vid_oled_bar_color_b | Second bar-animation color (the other end of the breathing cycle). Applies immediately. [Black / Near black / Dim gray / Gray] |
| Slider | Bar protection | Bar start delay | vid_oled_bar_delay_sec | Delay before the first bar color transition, letting the bars settle first (seconds). Applies immediately. |
| Slider | Bar protection | Bar active time | vid_oled_bar_active_min | Minimum active-session length before bar animation may start. Stops brief sessions from triggering it. Applies immediately. |
| Slider | Bar protection | Bar idle interval | vid_oled_bar_interval_min | Minimum interval between bar color transitions; slower is less distracting (minutes). Applies immediately. |
| Section | Idle protection | Idle protection | ||
| Toggle | Idle protection | Idle screen protection | vid_oled_idle_protection | Dim the screen after a period of inactivity. Applies immediately. |
| Slider | Idle protection | Idle delay | vid_oled_idle_delay_sec | Idle time before the screen starts dimming (seconds). Applies immediately. |
| Slider | Idle protection | Idle fade time | vid_oled_idle_fade_sec | Fade-to-dark duration once idle protection triggers (seconds). Applies immediately. |
| Slider | Idle protection | Idle hold time | vid_oled_idle_hold_sec | How long the screen stays fully dim before optionally switching the monitor to DPMS off (seconds). Applies immediately. |
| Toggle | Idle protection | Idle monitor DPMS off | vid_oled_idle_monitor_off | Switch the monitor off via DPMS during the fully-dim HOLD_DARK phase. Windows, opt-in. Applies immediately. |
| Slider | Idle protection | Idle restore time | vid_oled_idle_restore_sec | Fade-back-to-normal duration when activity resumes (seconds). Applies immediately. |
| Toggle | Idle protection | Mute audio on idle protect | vid_oled_idle_mute_audio | Mute audio while the idle dimming is active. Applies immediately. |
| Section | Interface protection | Interface protection | ||
| Toggle | Interface protection | Interface alpha protect | vid_oled_ui_protection | Apply a slow breathing opacity to protected UI elements so static chrome doesn't burn in. Applies immediately. |
| Slider | Interface protection | Interface min alpha | vid_oled_ui_min_alpha | Dimmest point of the breathing opacity applied to protected UI. Applies immediately. |
| Slider | Interface protection | Interface max alpha | vid_oled_ui_max_alpha | Brightest point of the breathing opacity applied to protected UI. Applies immediately. |
| Slider | Interface protection | Interface cycle time | vid_oled_ui_cycle_sec | Duration of one UI opacity breathing cycle (seconds). Applies immediately. |
| Section | Service | Service | ||
| Navigation | Service | OLED info... | vid_oled_info | Print the OLED-protection status to console. |
Bar protection applies only when Q2PRO-X owns the black bars itself — in desktop fullscreen with the aspect fit, for example. Idle protection and UI protection are not limited to that mode.
The vid_oled_info command prints the state of the protection and the reasons each stage is or is not active.
8. Visual highlights
Highlighting replaces no models and changes no game data. It is a visual layer over the local rendering: items, weapons, players, per-class colours, per-weapon colours and model-part colours.
The master switch:
| Variable | Accepted values | Description |
|---|---|---|
| cl_vis_enable | 0=layer off (no highlights) / 1=layer active | Master enable for the Q2PRO-X visibility / highlight layer. Controls item, weapon, and player highlighting as a single gate. When off, the layer is completely neutral (no shells, no tints, no scale changes). |
The complete description of the layer, including the player highlight modes and the model-part setup, is in the separate visual highlights guide.
9. The demo visual profile
The main idea: while watching .dm2 and .mvd2, the visual settings should be the same regardless of which mod the recording was made in.
So during playback the local Q2PRO-X visual settings are written into:
baseq2\q2pro-x\demo_visual\q2pro-x.demo.cfg
That covers the highlights, the model colours, the demo-analytics colours and trail settings, the in-demo item timer colours and toggles, and the other local visual variables.
In practice:
1. Start a recording.
2. Configure the highlights, the analytics and the timers.
3. The save goes into the demo profile.
4. The next recording from a different mod uses the same viewing profile, not a foreign mod config.
The relevant commands are described in the cvars and cvar browser guide.
10. AVFX and visual presets
AVFX is the largest visual layer of Q2PRO-X: weather, sky, space, water, puddles, surface materials, volumetric media and map-authored scenes.
Details are in the AVFX settings, AVFX presets and AVFX advanced features guides.
11. Recommended starting profiles
Competitive play
Watching recordings
Recording video
12. Diagnostics
| Command | What it prints |
|---|---|
| version | The build version and component details |
| gl_render_scale_info | The scaling path, the maximum resolution and the tile grid |
| vid_oled_info | The state of OLED protection and why each stage is active |
| gl_hdr_info | The HDR backend capabilities and the current output path |
| gl_visual_fx_info | The state of the visual-effect subsystems |
| cl_avfx_info | The state of the AVFX layer, its counters and budgets |
The live performance and budget HUD shows the measured cost of the frame, of dynamic lighting and of the enabled AVFX families. It is off by default.