See the end of this file for known issues. DD Mmm YY - 1.54 add: FFmpeg piping support for compression of audio/video captures cl_ffmpeg <0|1> (default: 0) uses FFmpeg instead of writing raw .avi files cl_ffmpegCommand are the FFmpeg command-line options for the output file cl_ffmpegExePath (default: "ffmpeg") is the path of the FFmpeg executable to use note that the path cannot contain spaces on Windows cl_ffmpegOutPath (default: "") is the video output directory leave empty to write to cpma/videos as with .avi files cl_ffmpegOutExt (default: "mp4") is the output file extension cl_ffmpegLog <0|1> (default: 0) enables the creation of 1 log file per capture add: togglegui and toggleguiinput to toggle (the mouse input of) the built-in GUI system add: key binds starting with "keycatchgui" always take precedence over everything else they will work in the main menu, the demo player in protected mode, when the console is down, ... here's how you would bind keys to access the new built-in GUI: bind F1 "keycatchgui;togglegui" bind F2 "keycatchgui;toggleguiinput" add: r_guiFont <0 to 2> (default: 0) sets the GUI's font 0 - Proggy Clean (13px) 1 - Sweet16 Mono (16px) 2 - custom font file (see r_guiFontFile and r_guiFontHeight) note that the custom font can only get loaded at client start-up add: r_guiFontFile (default: "") is the file path to the custom .ttf font file add: r_guiFontHeight <7 to 48> (default: 24) is the custom font's height add: r_gpuPreference <0 to 2> (default: 0) sets the GPU selection preference 0 - high performance (discrete graphics) 1 - low power (integrated graphics) 2 - none add: r_gpuIndex <0 to GPU count> (default: 0) sets the specific GPU to use 0 - default (falls back to r_gpuPreference) I - uses the GPU at index I from /gpulist add: /gpulist lists available GPUs, the numbers can be used to set r_gpuIndex add: r_sleepThreshold <2000 to 4000> (default: 2500) is the frame sleep time cushion, in microseconds it's a trade-off between frame time consistency and CPU usage set to 2000 if you have a struggling old/low-power CPU 2500 should be enough to deal with delayed thread wake-ups use the frame graph to confirm that higher values help on your system add: r_smaa <0 to 4> (default: 0) enables enhanced sub-pixel morphological anti-aliasing 0 - no SMAA 1 - low quality 2 - medium quality 3 - high quality 4 - ultra quality add: r_shadingRate <0 to 6> (default: 0) sets the variable-rate shading (VRS) mode 0 - 1x1 (VRS off) 1 - 2x1 (base mode) 2 - 1x2 (base mode) 3 - 2x2 (base mode) 4 - 4x2 (extended mode) 5 - 2x4 (extended mode) 6 - 4x4 (extended mode) the numbers are the horizontal and vertical subsampling factors 1x1 is forced for the sky, nopicmipped sprites (e.g. simple items) and nopicmipped alpha tested surfaces (e.g. grates) if extended modes are not supported, 2x2 is used instead prefer horizontal subsampling as many maps have textures with thin horizontal lines which become an aliased mess when vertically subsampled add: r_normalSmoothing <0|1> (default: 1) enables smooth vertex normal generation add: r_normalAreaWeight <0|1> (default: 1) enables area weighting for vertex normal generation add: Cinematic Rendering Pipeline CVars depth of field: crp_dof <0|1|2> (default: 1) selects the depth of field mode 0 - disabled 1 - scatter-as-gather 2 - accumulation crp_dof_overlay <0|1|2> (default: 0) draws a debug overlay mode 0 - disabled 1 - colorized blur 2 - focus plane crp_dof_blades <0 to 16> (default: 6) is the aperture's blade count set to less than 3 for a disk shape crp_dof_angle <0 to 360> (default: 20) is the aperture's angle, in degrees scatter-as-gather depth of field (fast, doesn't handle transparency properly): crp_gatherDof_focusNearDist <1 to 2048> (default: 192) is the near-field's focus distance crp_gatherDof_focusNearRange <1 to 2048> (default: 256) is the near-field's focus range crp_gatherDof_focusFarDist <1 to 2048> (default: 512) is the far-field's focus distance crp_gatherDof_focusFarRange <1 to 2048> (default: 384) is the far-field's focus range crp_gatherDof_brightness <0 to 8> (default: 2) is the blur brightness' weight accumulation depth of field (extremely slow, looks perfect with enough samples): crp_accumDof_focusDist <2 to 2048> (default: 256) is the focus distance crp_accumDof_radius <0.001 to 20> (default: 0.1) is the aperture radius in world units crp_accumDof_samples <1 to 12> (default: 2) is per-axis sampling density density N means (2N + 1)^2 scene renders in total, so be careful or you'll trigger TDR crp_accumDof_preview <0|1|2> (default: 0) selects the real-time preview mode 0 - disabled 1 - 1/4 pixel count, 9 samples total 2 - 1/16 pixel count, 25 samples total motion blur: crp_mblur <0 to 3> (default: 0) sets the motion blur mode 0 - disabled 1 - camera blur only 2 - object blur only 3 - camera and object blur crp_mblur_exposure <0.0 to 1.0> (default: 0.5) is the exposure time in percentage of frame time miscellaneous: crp_drawNormals <0|1> (default: 0) draws vertex normals as colorized wireframe lines crp_updateRTAS <0|1> (default: 1) enables raytracing acceleration structure builds every frame add: Cinematic Rendering Pipeline commands cin_freezeFrame freezes the rendered frame (minus ImGUI and tone map) and G-Buffer for inspection cin_freezeFrameMB freezes the rendered frame (minus ImGUI, tone map and motion blur) fix: allocating enough memory for 4K screenshots and video captures fix: the new demo player now drops zombie snapshots and snapshots from before a server time rewind these problematic snapshots happen right before and after gamestate changes chg: dropped 32-bit support chg: dropped Linux/FreeBSD client chg: Windows support is limited to 10 and 11 chg: reworked renderer with 2 new rendering pipelines - removed all the Direct3D 11 and OpenGL code, now using Direct3D 12 - much improved input latency when V-Sync is enabled - improved frame-time consistency ("frame pacing") - fog handling has been completely overhauled (faster, simpler, decoupled from surfaces) - MSAA and alpha-to-coverage have been removed - Gameplay Rendering Pipeline (GRP) - improved performance and better worst case input latency - added SMAA for anti-aliasing (gamma-corrected and not applied to UI for best results) - added VRS (Variable Rate Shading) support - Cinematic Rendering Pipeline (CRP) - order-independent transparency - depth of field (scatter-as-gather or accumulation) - all corresponding CVars have the "crp_" prefix chg: removed cl_drawMouseLag, r_backend, r_frameSleep, r_gpuMipGen, r_alphaToCoverage, r_alphaToCoverageMipBoost removed r_d3d11_syncOffsets, r_d3d11_presentMode, r_gl3_geoStream, r_ignoreGLErrors, r_finish, r_khr_debug removed r_verbose, r_customaspect, r_speeds, r_msaa, r_showsky, r_showtris replaced r_swapInterval with r_vsync <0|1> (default: 0) to enable V-Sync replaced r_textureMode with r_lego <0|1> (default: 0) to enable nearest-neighbor texture filtering replaced r_shownormals with crp_debugNormals <0|1> (default: 0) to draw vertex normals 30 Oct 23 - 1.53 add: /registerdemos adds Windows file associations for demo files (.dm_68 .dm_67 .dm_66) /unregisterdemos removes Windows file associations for demo files on Windows, /demo can now play demo files that have an absolute path (e.g. /demo C:\test.dm_68) add: r_teleporterFlash <0|1> (default: 1) draws bright colors when being teleported (use 0 for black) add: s_khz <22|44> (default: 22) is the sound mixing sampling frequency: 22.05 kHz or 44.1 kHz add: /writeconfig now has a "-f" option to force writing all CVars (whether archived or not) add: /imageinfo prints where the image was loaded from and shaders that reference it add: /shadermixeduse prints all images referenced in shaders with conflicting global directives add: cl_demoPlayer <0|1> (default: 1) selects the demo playback system to use cl_demoPlayer 0 = always uses the original demo player cl_demoPlayer 1 = uses the new demo player with time rewind support when the mod supports it add: cl_escapeAbortsDemo <0|1> (default: 1) decides whether the escape key can abort demo playback reminder: you can always use /disconnect to stop demo playback add: r_depthClamp <0|1> (default: 0) disables vertex clipping against the near and far clip planes enabling this feature will raise the maximum allowed FoV value of CPMA 1.53 it turns the view frustum into a pyramid and prevents any vertex between the near clip plane and the camera's position from getting clipped (but will still clip anything behind the camera), which prevents solid objects from being seen through when too close to the camera because depth values are clamped, improper depth ordering can potentially occur add: /shaderinfo [code] prints where the shader was loaded from and optionally the code add: console mark mode (selection mode) can be toggled with Ctrl-M use arrow keys, home/end or page up/down to move the cursor or extend the area when pressing shift Ctrl-C/enter copies the selected text to the clipboard without color codes and exits mark mode add: /searchconsole begins a new console search press ctrl-F when the console is down to bring up the command press (shift-)F3 to find the next match going up or down just like in cmdlist/cvarlist/etc, * will match any amount of characters add: r_ignoreShaderSortKey <0|1> (default: 0) ignores the shader sort key of transparent surfaces instead, it sorts by depth and original registration order only this is a work-around for broken maps like bones_fkd_b4 (grates drawn in front of simple items) add: r_mapGreyscale <0.0 to 1.0> (default: 0) controls the map's desaturation level r_mapGreyscale 0 = full color (nothing done) r_mapGreyscale 1 = completely monochrome add: r_mapGreyscaleCTF <0.0 to 1.0> (default: 0) controls the CTF map surfaces' desaturation level r_mapGreyscaleCTF 0 = full color (nothing done) r_mapGreyscaleCTF 1 = completely monochrome it applies to the red/blue color-coded surfaces of popular CTF/NTF maps add: net_proxy (default: "") is the proxy server to use when establishing client connections add: /waitms to delay command executions by the specified number of milliseconds add: r_alphaToCoverageMipBoost <0.0 to 0.5> (default: 0.125) boosts the alpha value of higher mip levels with A2C enabled, it prevents alpha-tested surfaces from fading (too much) in the distance chg: with hybrid core CPUs (e.g. Intel gen 12+) on Windows, the main thread will only run on the P-cores chg: the client can now read .wav files from the local file system when connected to a pure server this allows e.g. cg_fragSound to load sounds from the local file system instead of .pk3 files chg: CVar sets will use all arguments instead of only the first one example: pressing n with `bind n "name x y z"` will rename to "x y z" instead of "x" chg: invertedpenguin's RA blood pool has a new look to help better see the RA against its background chg: forcing the nopicmip flag on 2 new texture folders: "textures/npmenv" and "textures/npmpads" chg: r_vertexLight 1 no longer collapses shaders but replaces lightmaps with vertex colors for transparent shaders, lightmaps are still used because vertex colors are broken on some maps chg: bots can no longer get timed out (it happened sv_timeout seconds after bot_pause was enabled) chg: r_gpuMipGen 0 now respects r_mipGenFilter but not r_mipGenGamma (gamma 2 is used) the new code will slow down map loads in general but produces higher quality results r_mipGenFilter BL is a special case without gamma correction that's much faster than before chg: image load/save errors now print warnings instead of triggering drop errors chg: the maximum texture resolution of 2048 is now enforced in all image loads chg: updated icon courtesy of deft chg: r_showtris/r_shownormals (default: 0) draws wireframe triangles/vertex normals 1 - enables the feature 2 - only draws for visible triangles 4 - draws for backfacing triangles 8 - uses the original vertex color 16 - uses the original vertex alpha as vertex color chg: r_lightmap 1 now handles most alpha-tested surfaces chg: com_soundMegs now defaults to 16 chg: the camera's near clip plane distance is now 1 instead of 4 chg: with r_backend GL3, depth fade with MSAA now requires GLSL 4.00 at a minimum depth access is now correctly multi-sampled (less aliasing) and performance has improved as well chg: with r_backend GL3, alpha to coverage now requires GLSL 4.00 at a minimum fix: the renderer could crash on some maps without lightmaps (e.g. b0_beta5) fix: with r_backend GL2, the extra clip plane for mirror/portal surfaces was not being used this quick fix is likely to fail for some drivers and vendors due to its use of deprecated features based on a few tests: OK on NVIDIA and Intel, not working on AMD fix: long demo file names would cause video recording to output files with no extension or outright fail fix: invalid skybox texture mip-mapping and filtering settings (e.g. cpm25 skybox seams) fix: in render batches with multiple shaders where the second or later surface had a shader using "rgbGen lightingDiffuse", the colors would be wrong and crashes could occur fix: the reported MSAA sample counts for the GL2 and GL3 back-ends could be wrong fix: registration of a read-only CVar would keep the existing value fix: the Direct3D projection transform didn't perfectly match the OpenGL version fix: /video was writing incorrect audio stream lengths to the .avi file headers fix: /systeminfo /serverinfo /clientinfo /dumpuser would crash when tokens were too long fix: with r_lightmap 1 and r_dynamiclight 1, lighting transparent surfaces could crash fix: delayed shader loads could lead to incorrect rendering and crashes (mostly with dynamic lights) fix: the nextdemo variable wasn't used to start the playback of a new demo when: - a drop error happened during demo playback - the engine failed to open the current demo file fix: the Linux/FreeBSD client could crash during start-up fix: with r_backend D3D11, the alpha channel's blend factors now match the original Q3 behavior this affects shaders that use the following blendFunc modes: GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA examples: jumppads on cpm3a and cpmctf3, jumppad trims on q3wcp14, shiny walls on q3wcp9 fix: batched surfaces with "tcMod turb" would generate incorrect texture coordinates fix: throwing a fatal error when com_soundMegs is too low to load a map instead of freezing fix: /video produced .avi files that started with silence when they were not first in the sequence fix: with r_backend D3D11, some device reset scenarios caused fatal errors instead of video restarts fix: CVar slots that have been freed (e.g. through unset/cvar_trim/cvar_reset) can now be re-used fix: with alpha to coverage enabled, high r_picmip values should no longer cause alpha-tested surfaces to become transparent in the distance (e.g. q3wcp14 corridor floors) fix: with r_backend GL3, caching of shader uniforms could break with fog-only shaders fix: with r_backend D3D11, partial clears incorrectly affected entire render targets example: black views in CPMA multi-view with r_fastsky 1 01 Jun 20 - 1.52 add: FreeBSD x64 support add: r_backend (default: D3D11 on Windows, GL3 otherwise) selects the rendering back-end GL2 - OpenGL 2.0 minimum, OpenGL 3+ features used for r_msaa GL3 - OpenGL 3.2 minimum, OpenGL 4+ features used for faster geometry upload, compute shaders, etc D3D11 - Direct3D 11 hardware feature level 10.1 minimum, feature level 11.0 for compute shaders r_backend | GL2 | GL3 | D3D11 feature avail. | | | -----------------------|--------|--------|------------------- MSAA | GL 3.0 | always | always MSAA centroid sampling | never | always | always depth fade | never | always | always alpha to coverage AA | never | always | always dithering | never | always | always GPU mip-map generation | never | GL 4.3 | feature level 11.0 add: r_depthFade <0|1> (default: 1) enables depth fade rendering this helps explosions, smoke, blood, etc. not having "sharp edges" when intersecting geometry add: r_alphaToCoverage <0|1> (default: 1) enables alpha to coverage anti-aliasing A2C AA can only work if MSAA is enabled (i.e. r_msaa > 1) it is used to super-sample all fragments of alpha-tested surfaces add: r_dither <0|1> (default: 0) reduces color banding artefacts by adding noise add: r_ditherStrength <0.125 to 8.0> (default: 1.0) controls the amount of noise added by dithering add: r_gpuMipGen <0|1> (default: 1) enables GPU-side mip-map generation this helps improve map load time (less to upload) and image quality (see r_mipGenGamma, r_mipGenFilter) add: r_mipGenGamma <1.0 to 3.0> (default: 1.8) specifies the gamma space in which the textures are stored r_gpuMipGen 1 is required it should be closer to 2.4 but defaults lower to not break the looks of some things (e.g. cpm3a tele) while 1.0 will preserve the original engine's look, higher values will preserve contrast better add: r_mipGenFilter (default: "L4") specifies which filter window is used to generate mips r_gpuMipGen 1 is required the numbers specify the "radius" of the window filters r_mipGenFilter L4 = Lanczos r_mipGenFilter L3 = Lanczos r_mipGenFilter BL = Bi-linear r_mipGenFilter MN2 = Mitchell-Netravali (B = 1/3, C = 1/3) r_mipGenFilter BH4 = 3-term Blackman-Harris r_mipGenFilter BH3 = 3-term Blackman-Harris r_mipGenFilter BH2 = 3-term Blackman-Harris r_mipGenFilter T2 = Tent (1/3 2/3) -> same as the CPU version (r_gpuMipGen 0) add: r_frameSleep <0|1|2> (default: 2) selects the frame capping mode r_frameSleep 0 = forced OFF (when V-Sync is enabled) r_frameSleep 1 = forced ON (when V-Sync is disabled) r_frameSleep 2 = automatic (detects V-Sync status) this only applies to OpenGL rendering back-ends for Direct3D 11, the behavior is always equivalent to "automatic" the new default mode fixes the V-Sync stutter from previous releases add: r_gl3_geoStream <0 to 4> (default: 0) sets the geometry upload strategy r_gl3_geoStream 0 = decide automatically r_gl3_geoStream 1 = BufferSubData r_gl3_geoStream 2 = Map Unsychronized r_gl3_geoStream 3 = Map Persistent when possible, else automatic r_gl3_geoStream 4 = AMD pinned memory when available, else automatic this only applies to the GL3 rendering back-end add: r_d3d11_syncOffsets <0|1|2> (default: 2) synchronizes vertex buffer offsets r_d3d11_syncOffsets 0 = split buffer offsets (more data transferred) r_d3d11_syncOffsets 1 = sync'd buffer offsets (more API calls) r_d3d11_syncOffsets 2 = decide automatically this only applies to the D3D11 rendering back-end add: r_d3d11_presentMode <0|1> (default: 0) sets the Direct3D presentation mode r_d3d11_presentMode 0 = blit + discard r_d3d11_presentMode 1 = flip + discard when available, else blit + discard about the 'flip + discard' presentation mode: - Windows 10 is required and tearing must be supported - it should help performance by sharing buffer data (less copying) - it allows for V-Sync to be disabled with variable refresh rate displays - performance issues were observed on some machines, so it's off by default add: r_khr_debug <0|1|2> (default: 2) decides whether to create an OpenGL debug context r_khr_debug 0 = forced OFF r_khr_debug 1 = forced ON r_khr_debug 2 = only in debug builds add: r_rtColorFormat <0|1|2> (default: 0) selects the color format for render targets r_rtColorFormat 0 = R8G8B8A8 r_rtColorFormat 1 = R10G10B10A2 r_rtColorFormat 2 = R16G16B16A16 higher color bit depths help reduce color banding add: r_lightmapGreyscale <0.0 to 1.0> (default: 0) controls the level of color desaturation in the lightmap r_lightmapGreyscale 0 = full color (nothing done) r_lightmapGreyscale 1 = completely monochrome add: r_transpSort <0|1> (default: 0) selects the transparency sorting mode r_transpSort 0 = sort dynamic transparent surfaces r_transpSort 1 = sort all transparent surfaces the drawback of r_transpSort 1 is that gameplay legibility might suffer and results might look quite inconsistent based on the view angles and surface dimensions example: dropped items in the cpm18r acid with cg_simpleItems 1 add: global shader directive q3map_cnq3_depthFade enables depth fade rendering scale is the depth range over which to fade the currently rendered surface bias is a value added to the currently rendered surface's depth, positive goes towards the camera whether this is enabled is decided by r_depthFade (must be 1) and r_backend (can't be GL2) depth writes must be disabled in all stages (no shader stage can use the depthWrite directive) the blend mode (blendFunc) must be the same for all stages and must be one of: (one, one) (src_alpha, one) (one_minus_src_alpha, one) (dst_color, zero) (zero, src_color) (src_alpha, one_minus_src_alpha) (one, one_minus_src_alpha) add: r_mapBrightness now works on q3map2's external lightmap atlas images add: the renderer can now batch surfaces with different (but sufficiently similar) shaders this new optimization works with the output of "Frozen Sand Particle Studio" add: /modellist /skinlist /imagelist /shaderlist can now filter results with pattern matching chg: improved the map download initiation logic and updated the CNQ3 map server addresses chg: increased the small zone allocator's size from 512 KB to 4 MB (1 MB in the dedicated executable) chg: dynamic lights now use a different fall-off curve to create softer edges chg: reverted an old change to the Escape key handling for cgame this fixes demo playback behavior in CPMA, which enables custom binds after pressing Escape once chg: searching for valid sample counts for MSAA in GL2 and GL3 instead of failing right away chg: switched away from stb_image for .tga file loading and now using an updated version of the old code this lowers the chances of a fatal error from the zone memory allocator when reading large images chg: SSE2 instruction set support is now required chg: removed FreeType 2 and the unused R_REGISTERFONT syscalls that were using it chg: removed light flares and all related cvars (r_flare*) chg: r_textureMode (default: "best") is now latched and only supports 2 modes: r_textureMode GL_NEAREST = LEGO(R) mode - nearest-neighbor filtering for a subset of surfaces r_textureMode anything else = normal mode - the engine picks the most appropriate filters chg: removed the following CVars: r_measureOverdraw, r_nobind, r_showImages chg: r_speeds is no longer cheat-protected it now also reports more precise timings, V-Sync status, GPU time and the selected back-end chg: using the roundss SSE4.1 instruction for inlining floor and ceil syscalls when possible chg: improved face and grid processing performance with SSE2 chg: r_lightmap is now latched again the implementation is now more correct and will apply to all surfaces referencing a lightmap it now also supports surfaces referencing q3map2's "external lightmap" atlas images chg: r_fullbright is now latched again it now also supports surfaces referencing q3map2's "external lightmap" atlas images r_mapBrightness is now used by r_fullbright for lightmapped surfaces when r_vertexLight is 0 chg: negative r_swapInterval values will request adaptive V-Sync when using an OpenGL back-end fix: the engine could crash due to render command list overflows fix: made more keys bindable on Linux/FreeBSD and /bind now accepts uppercase hex digits fix: removing CVars through unset/cvar_trim/cvar_restart could leave data in an invalid state fix: r_detailTextures 0 would mess up shaders where "detail" was used in a stage that isn't the last one fix: dynamic lights could incorrectly stop applying to moving entities (e.g. cpm25 elevator) fix: crash due to lack of memory for the sound system fix: incorrect shader state when loading a map with no lighting fix: fog-only non-sky shaders were incorrectly handled as sky shaders, which broke fog on many maps fix: r_monitor on Linux/FreeBSD is now 0-based and the value doesn't change incorrectly on its own anymore fix: when a latched cvar's value is set to its default, the cvar is no longer marked as changed fix: broken face normals get fixed up on map load, which helps with dynamic lights (e.g. industrial) fix: classes of transparent surfaces (sprites, beams, etc) now get drawn in the right order fix: dynamic lights can now affect transparent surfaces and double-sided surfaces on both sides fix: dynamic lights no longer "reveal" the diffuse texture when r_lightmap is 1 fix: incorrect image flags for various things (clamp mode, mip generation, anisotropic filtering, ...) 31 Mar 19 - 1.51 add: now showing the cvar's current and latched values in the help panel add: new console and chat keyboard shortcuts Ctrl-left/right arrow | move caret to previous/next word Shift-left/right arrow | move caret to previous/next argument add: new console keyboard shortcuts Ctrl-I | insert cvar's current value Ctrl-D | insert cvar's default value add: demo recording status query extension for CPMA 1.52+ add: /cvar_add to add a number to a cvar add: /cvar_mul to multiply a cvar by a number add: /unset to remove a user-created cvar add: /setempty to set a string cvar to an empty string add: /toggle can now accept a value sequence (2 or more entries) to loop through syntax: /toggle [ [value3]..] if the cvar's current value is in the sequence and not in the last spot, the next one is used otherwise, the first value in the sequence is used chg: r_lodCurveError <250.0 to 10000.0> (default: 2000) is now archived and no longer cheat-protected chg: multi-monitor support improvements add: /monitorlist will print all detected monitors and the indices to use with r_monitor chg: the monitor list now gets updated during video restarts and calls to /monitorlist chg: Linux | r_monitor is a 0-based index and monitors are sorted top-to-bottom, left-to-right fix: Windows | the Windows + shift + left/right arrow key shortcuts should be usable now chg: bundling lightmap tiles into texture atlases for improved rendering performance chg: faster map loads by limiting the rendering back-end's frame-rate chg: on Windows, the upper limit of open stdio file handles was raised from 512 to 2048 fix: the presence of .shader files outside of PK3s no longer triggers a drop error fix: shader stage collapsing was happening in cases where it would yield incorrect results fix: map download improvements add: using numeric addresses as fallbacks in case DNS resolves fail chg: made connections non-blocking so the engine won't freeze for long when starting a download chg: writing to $(fs_homepath)/baseq3 instead of $(fs_basepath)/baseq3 fix: only using valid (TCP/stream) addresses from getaddrinfo fix: setting send time-outs so the engine can't freeze indefinitely fix: creating the destination directory when it doesn't already exist fix: the file name suffixes generated by /dlmapf would often repeat due to a constant seed fix: the last byte of a maximum length bitstream string wasn't parsed ("q3msgboom") fix: aborting demo playback would crash when the "nextdemo" cvar was set to play a demo fix: no longer feeding cs commands that came from a previous gamestate to cgame example in CPMA: "/map cpm22" -> "/cv map cpm25" -> elevator sound was broken fix: on Windows, could sometimes click outside the engine's window in raw mouse input mode fix: when r_msaa was in the range [2, 16], the requested sample count was always 4 fix: /video and /stopvideo fixes chg: /video can only be used during demo playback fix: broken audio in the output files fix: properly named file sequences fix: using a better supported video codec (FourCC 0x00000000) for raw BGR output fix: broken raw video output when r_width wasn't a multiple of 4 fix: /stopvideo no longer leaves sound output broken for a while after stopping fix: /cv and /callvote map auto-completion was disabled after cgame was shut down at least once 12 Feb 18 - 1.50 add: on Windows, "/crashreport:yes" and "/crashreport:no" command-line arguments they enable the crash handler's quiet mode (no dialog window will be shown) add: the fs_restart command to manually restart the file system chg: the client executable will now write to q3config.cfg on exit chg: even lower CPU usage when minimized chg: during id downloads (cl_allowDownload -1), the time-out is 5 seconds instead of cl_timeout chg: the "nextdemo" cvar is now also used when playback stops before reaching the demo's end chg: mouse motion is no longer forwarded to the mod when the console is down chg: with 2+ monitors, having the console down will always disable input grabbing chg: on Windows, a fatal error will move the early console window to the foreground chg: com_hunkMegs doesn't have a maximum value anymore a value too high would reset it and the engine might fail to load with the default value fix: broken pk3 files could cause crashes (entry names too long) and mess up the FS fix: using /demo when running a listen server would load the map and then abort playback fix: no longer making local copies of all the system info cvars of the current server this avoids undesired local changes to cvars such as sv_pure fix: now updating the FS (connected to pure server, pak references) on client disconnects fix: the condump command was truncating its file path argument to 64 characters fix: "timedemo" playback runs at full speed again fix: on Windows, when unfocused, the client would always sleep 5+ ms regardless of com_maxFPS fix: conditional FS restarts will always re-order the pak list when connected to a pure server fix: lifted the directory scanning restriction that affected pure listen servers fix: getting stuck on "Awaiting snapshot..." when the server shuts down during client connection fix: demo playback would crash when delta entities/players had an invalid field count fix: strcpy calls with overlapping buffers (undefined behavior), which were responsible for the "chars.h not found" / "couldn't load any skills" issue preventing bots from being added fix: on Linux, the 'Z' and '9' keys could not be bound fix: cl_allowDownload 1 failing on "connect" (error 10047 on Windows) fix: cl_allowDownload 1 was using the current directory instead of fs_basepath fix: jitter due to snapshots piling up with the same server timestamp for loopback and LAN clients fix: the Windows crash handler would incorrectly consider certain exceptions as fatal 07 Jan 18 - 1.49 add: color cvars for console customization con_colBG (default: "101013F6") - console and help panel background con_colBorder (default: "4778B2FF") - the console and help panel borders con_colArrow (default: "4778B2FF") - console backscroll arrows con_colShadow (default: "000000FF") - text shadows con_colHL (default: "303033FF") - auto-completion highlight (see con_completionStyle 1) con_colText (default: "E2E2E2") - normal text con_colCVar (default: "4778B2") - cvar names con_colCmd (default: "4FA7BD") - command names con_colValue (default: "E5BC39") - cvar values con_colHelp (default: "ABC1C6") - help text add: con_drawHelp (default: 1) controls the help panel displayed below the console 1 - enables the help panel 2 - draws the help panel even if the current cvar/cmd has no help text 4 - draws the list of modules the current cvar/cmd belongs to 8 - draws the list of attributes of the current cvar add: r_blitMode <0|1|2> (default: 0) selects the upscale mode used by r_mode 1 r_blitMode 0 = aspect-ratio preserving (black bars if necessary) r_blitMode 1 = no scaling, centered r_blitMode 2 = full-screen stretching (no black bars) add: cvar_trim command to remove all user-created cvars add: with compatible mods, drop and disconnect errors will be displayed in the UI add: s_autoMute <0|1|2> (default: 1) selects when the audio output should be disabled s_autoMute 0 = never mute s_autoMute 1 = mute when the window doesn't have input focus s_autoMute 2 = mute when the window is minimized add: cl_matchAlerts (default: 7) lets you know when a match is starting 1 - when unfocused (otherwise only when minimized) 2 - flash the task bar (Windows only) 4 - beep once (Windows only) 8 - unmute (temporarily overrides s_autoMute) add: new commands to take screenshots with the console hidden screenshotnc for TARGA (.tga) images screenshotncJPEG for JPEG (.jpg) images they will be used for end-game screenshots by compatible mods like CPMA 1.50 add: in_noGrab <0|1> (default: 0) disables input grabbing add: bindkeylist command to print all bindable key names add: uptime command that prints uptimes for the process, the current map and the parent process add: keys F13 to F24 are now bindable add: new cvar type and range extension for compatible mods like CPMA 1.50 add: new help commands for commands and cvars of the engine and compatible mods like CPMA 1.50 help|man to display the help of a cvar or command searchhelp to list all cvars and commands whose help or name matches the pattern add: new CNQ3 download system that uses checksums to get the right pak files the CNQ3 download system will use the WorldSpawn map server for inexact queries (when loading demos or using /dlmap) when the CNQ3 map server doesn't have the file system | speed | cases | source(s) | file availability | server requirements -------|-------|---------------------|---------------|-------------------|-------------------- CNQ3 | fast | pure servers, demos | map server(s) | not guaranteed | none id | slow | pure servers only | the Q3 server | guaranteed | sv_allowDownload 1 add: new commands for manually initiating and canceling fast downloads: dlpak to download a pak by its checksum if the pak doesn't exist locally dlmap to download a map by name if no map with such a name exists locally dlmapf to force download a map by name dlstop to cancel the download in progress, if any add: r_greyscale <0.0 to 1.0> (default: 0) to control how monochromatic the final image looks r_greyscale 0 = full color (nothing done) r_greyscale 1 = completely monochrome add: con_completionStyle <0|1> (default: 0) to select the auto-completion style con_completionStyle 0 = always print all results con_completionStyle 1 = print once, then cycle results like Enemy Territory's console add: m_accelStyle <0|1> (default: 0) to control the mouse accel style m_accelStyle 0 = legacy CNQ3 accel style m_accelStyle 1 = new accel style, similar to quake3e's cl_mouseAccelStyle 1 add: m_accelOffset <0.001 to 5000> (default: 5) to control the power offset with m_accelStyle 1 add: sv_minRestartDelay <2 to 48> (default: 2) the min. amount of hours to wait for before restarting the server a scheduled restart won't happen until there are no more human players connected add: con_scaleMode <0|1|2> (default: 0) specifies the console text scaling mode con_scaleMode 0 = text size scales with con_scale but not the resolution con_scaleMode 1 = text size scales with con_scale and the resolution con_scaleMode 2 = text size is always 8x12 add: command history saving with con_history (default: 1) add: r_monitor <0 to monitor count> (default: 0) to select the monitor to display the game on r_monitor is the 1-based index of the monitor to use r_monitor 0 = use the primary monitor r_monitor N = use monitor number N add: crash handlers with crash report generation add: improved auto-completion with support for map names, bind key names, etc add: 64-bit support chg: new system requirements: OpenGL 2, SDL 2 on the Linux client, Windows Vista or later chg: sv_pure 1 now allows new image files (no overrides) to be read from directories chg: now ignoring q3config.cfg and autoexec.cfg outside fs_game to avoid config poisoning chg: removed the r_maplight* cvars chg: reduced CPU usage in the client chg: console/messagemode input buffers now display the "^" character of color codes chg: r_brightness <0.25 to 32.0> (default: 2) replaces r_overBrightBits r_mapBrightness <0.25 to 32.0> (default: 2) replaces r_mapOverBrightBits the new cvars use floating-point values (more control) and a linear scale (more intuitive) to convert the old engine values to the new values: r_brightness = pow(2, r_overBrightBits) r_mapBrightness = pow(2, max(r_mapOverBrightBits - r_overBrightBits, 0)) chg: r_mode <0|1|2> (default: 0) selects the video mode r_mode 0 = no screen mode change, desktop resolution r_mode 1 = no screen mode change, custom resolution, custom upscale mode r_mode 2 = screen mode change, custom resolution (for the CRT users) Custom resolution means using r_width and r_height. Custom upscale mode means using r_blitMode. chg: cl_allowDownload <-1|0|1> (default: 1) can be used to select the download system cl_allowDownload -1 = id's original download system cl_allowDownload 0 = downloads disabled cl_allowDownload 1 = CNQ3 download system chg: cvars and commands are alphabetically sorted chg: removed r_stencilbits, r_depthbits, r_colorbits, r_texturebits and r_ext_compressed_textures chg: using stb_image to load png and tga images chg: con_scale <0.25 to 10.0> (default: 1.2) specifies the console text scaling factor and nothing else chg: replaced monitor gamma by a post-process gamma shader and removed r_ignorehwgamma chg: removed stereo rendering chg: anti-aliasing sample count is set with r_msaa on all platforms (on Windows, it was r_ext_multisample) chg: file system start-up will now verify the presence and integrity of baseq3/pak0-8.pk3 instead of only pak0 chg: replaced id's Huffman codec code with something both simpler and much faster chg: tweaked console scrolling speeds, fixed backtip insertion on Windows chg: improved level load times chg: sound fall-off is linear instead of using a power function chg: switch from libjpeg 6 to libjpeg-turbo chg: removed the byzantine r_mode usage added in 1.47 fix: console/messagemode input buffers would ignore the last off-screen color modifier when scrolled fix: console/messagemode input buffers would sometimes display the cursor at the wrong position fix: taking screenshots with a render width (r_width) that wasn't a multiple of 4 would either crash or produce bad screenshots fix: false positives of the "SCR_UpdateScreen: recursively called" fatal error repro: connect, get kicked, connect, get kicked fix: crash when the number of shader stages was wrong (would happen with the "brandon" player model) fix: the release of a key bound to "+vstr a b" would execute "b" even though the key press didn't execute "a" fix: /bind was treating single-character key names in a case sensitive manner fix: r_fullbright is no longer latched and actually does its job fix: r_lightmap is now archived and actually does its job fix: commands registered by cgame no longer auto-complete after the cgame qvm has shut down fix: libjpeg errors no longer shut down the engine fix: broken rendering when the 2nd stage of a collapsed shader stage pair had non-white colors fix: shader stages using "wave" were not animated when the server time was too large fix: the pukka3tourney2 slime wasn't green with r_vertexLight 1 fix: the ct3ctf1 grate near quad was getting picmipped when it wasn't supposed to be fix: improved the player name look-up behavior for these commands: kick, banUser, dumpuser if 2 players had the same name, it would just pick the first one (lowest client number) fix: multi-view mouse input sensitivity is now the same as in the UI for compatible mods like CPMA 1.50 fix: fixed the start-up console window staying visible when starting in full-screen Windows: add: in_minimize registers a hotkey to minimize/restore the client key names must be separated by white space and there can be at most 2 modifier keys add: auto-completion and command history in the dedicated server console window add: new bindable key: BACKSLASH (the key to the right of the left shift button) chg: removed DirectInput mouse input mode chg: updated mouse input for better grab (de-)activation and fixed window dragging not working chg: reduced raw mouse input latency and added cl_drawMouseLag fix: disabled DPI scaling on the client fix: the crash handler will reset the system timer resolution fix: if requesting a resolution too high for the display, the image would be offset vertically fix: in raw mouse input mode, keeping any button pressed while focusing the window would keep the cursor visible even after releasing all buttons Linux: add: m_relative <0|1> (default: 1) enables SDL's relative mouse mode you might want to set it to 0 if you have a messed up input driver add: in_focusDelay <0 to 100> (default: 5) is the time in ms keypresses are ignored after the window gets the focus add: minimize command to minimize the client's window add: automatic dedicated server process restarts for crashes and timed reboots (sv_minRebootDelayMins) this means 2 CNQ3 processes run per server: a parent (fixed pid) and a child (new pid after each restart) this behavior can be disabled by passing "nohardreboot" as a command-line argument the new command sv_restartProcess can be used to shut down the child process and start a new one chg: the client requires SDL 2 - the following things are handled by it: window, GL context, video modes, audio, kb and mouse input, monitor list, clipboard chg: tty input behavior matches in-game behavior when cgame is running and fixed the truncated tty input fix: color codes (e.g. "^1") don't get printed to the terminal anymore fix: tty handling of the leading "]" character fix: dedicated servers no longer insert a leading backslash when running auto-completion fix: the crash handler will reset tty input mode correctly 17 Sep 11 - 1.47 add: backported another bunch of dlight stuff from the pmx branch adds support for bmodel entities (doors, plats, etc) add: back directInput mouse (in_mouse 2) add: back flare support add: disable/enable windows keyboard shortcuts add: cnq3 windows can minimize/restore add: dynamic light by GLSL shaders add: r_maplightBrightness (from 0 to 8) and r_maplightSaturation(0-4). to use this parameters set r_maplightColorMode 1. add: r_maplightColorMode to configure lightmaps add: r_mode can be set resolution and frequency display. For example, r_mode "640x480@100" fix: in_mouse -1 kept relocating the system cursor even if not focused fix: implement the sound change from 1.45 *correctly* :P fix: default build does not create option r_smp. To assemble the build with the option r_smp need to use preprocessor USE_R_SMP fix: small fixes to CVA rendering code fix: fix opStack and rename targets for unix fix: GTV/spectator can't change POV after map changed fix: render shader time overflow (fix splashdamage bug). fix: mouse event queue 24 Nov 09 - 1.46 add: hopefully worked around some vistajoke mousewheel issues add: m_limit (default: 0 = off), the maximum post-accel speed to use chg: sensitivity renamed to m_speed chg: rewrote pretty much all the mouse code chg: removed the DI code in favor of "raw" mouse input this means only mouse1-mouse5 are supported on windows, sigh MS... chg: updated freetype from 2.3.5 to 2.3.11 05 Nov 09 - 1.45 note: this release REQUIRES arb shader support if your card doesn't have it, use an older version add: hw gamma should work on Vista add: r_measureoverdraw is actually useful add: r_speeds is far more useful now chg: sound attenuation is biased i.e. distant sounds are much louder than in 1.43 since it's still more correctly spatialised than pre-1.43, this is the best compromise i can come up with chg: r_fullbright works in vertexlight mode (only) instead of lightmap only, where it just wasted bandwidth and vram chg: r_customwidth, r_customheight renamed to r_width, r_height chg: hardcoded r_mode garbage and modelist removed: r_mode 0 (default) = current desktop resolution, depth, hz, etc r_mode 1 = custom resolution etc note: r_mode 1 WILL NOT tolerate invalid r_displayRefresh values any more chg: require opengl 1.4 or higher removed r_allowExtensions, r_primitives, r_ext_compiled_vertex_array, r_ext_multitexture, r_ext_texture_env_add chg: removed a bunch of useless/obsolete cvars: r_logfile, r_showcluster, r_facePlaneCull, r_ignoreFastPath, r_drawSun, r_simpleMipMaps, r_offsetFactor, r_offsetUnits chg: don't tablist cheatvar noise if cheats are off chg: removed the last bits of legacy altivec cruft chg: rewrote pretty much all the dlight stuff not only does it actually work reliably now but it's also massively improved in terms of quality fix: ignorehwgamma 1 would fail to apply sw gamma to some images fix: roqs failed to apply sw gamma fix: sv_floodprotect could block all commands indefinitely 12 Aug 09 - 1.44 (server only) fix: unbannable player exploit (stanway/auriemma) 08 Aug 08 - 1.43 fixed sfx0 using a real sound and thus "hiding" it corrected sv_pure back to CVAR_ROM added the correct "fastsky!=0 == disable portals" test, ffs me :P removed long-obsoleted r_lastValidRenderer removed long-obsoleted r_ext_gamma_control removed pointless cl_forceavidemo removed r_rail* and marked the never-used RT_BEAM etc as such removed RAVENMD4 completely r_fullbright is not a cheat var fixed a bug with CVAR_CHEAT fixed another bug in \video (hopefully) fixed distance culling on dlit patch seams changed r_ext_max_anisotropy default to 16 added con_scale for console font scaling 0 = Q3 style, always 8x12 pixels regardless of screen rez 1 = Q4 style, scales with screen rez !0 = scale with screen rez and a custom multiplier straightened out the con cvar mess: cl_noprint -> con_noprint scr_conspeed -> con_speed and correctly CVAR_ARCHIVE con_notifytime correctly CVAR_ARCHIVE removed cl_conXOffset since it basically doesn't work sleep correctly if an unfocused client (win32-only) don't sleep INcorrectly if a dedicated server (win32-only) fixed a (huge) memory leak in the vm fixed sv_pure 1 problems on listen servers another overhaul of the sound code: spatialisation is now correct, which has two huge impacts: you can "place" sounds MUCH more accurately than before, but as a result, distant sounds are MUCH quieter removed s_doppler, it's almost right but it just sounds like shit most of the s_mixprestep hackery has been removed, and you can probably set it to 0 if your sound drivers work properly OAL support has been dropped completely and indefinitely it's crap and i'm tired of it poisoning the codebase Mar 08 - 1.42 bots are no longer kicked by devmap legacy cack like joystick/midi support only pollutes configs if enabled fixed a memory leak in the sound code fixed even more (hopefully all) dropped sound issues in snd_dma made com_soundmegs SLIGHTLY less broken: now only 2x instead of 3x :P note that "soundmegs" are taken FROM THE HUNK now to fix the leak so you need to increase com_hunkmegs by 2x your com_soundmegs removed the explicit and incorrect "fastsky==1 == disable portals" test r_noportals is not a cheat var hyperspace is a bit less annoying purged the unused (never finished) idMD4 model code fixed some bugs in referencedpak list generation fixed roqs ignoring s_volume fixed widescreen modes crashing on listen servers fixed downloads not completing properly 18 Feb 08 - 1.41 removed all bs references to GT_SINGLE_PLAYER and ui_singlePlayerActive (except from the bot code, which has bigger problems) added sv_singleplayer improved TTF overhead a lot: now as fast as crappy bitmap fonts :D removed the stupidity of every key aborting demo playback: now ESC only only play the id logo cin the FIRST time, not every fkn time removed the broken stencil/projection shadow code avis produced by \video actually work (bug+fix both from ioq3) fixed some ABSURD buffer overruns and broken code in snd_dma which caused random dropped sounds for no reason it's a miracle it doesn't segfault any real OS also dumped the unused-since-TA adpcm/mulaw/etc cruft fixed a TA-era (surprise, surprise) bug that broke loopsound behavior loop (ie ambient) sounds are now 75% volume q3config is NEVER autowritten just because of bind/cvar changes it sucks if you're playing and it sucks even more if you're on GTV UI/SP code should write it EXPLICITLY if they want to save something 19 Dec 07 - 1.40 the code now requires a C++ compiler MASSIVE cleanups of the codebase, tho still plenty of bits left screenshot filename is YYYY_MM_DD-HH_MM_SS-TTT this means they'll never collide *; moviemakers won't run out; and the engine DOESN'T STAT 10,000 FILES EVERY FRAME (* except at 2am on an autumn night if you're amazingly unlucky :P) demo filename is YYYY_MM_DD-HH_MM_SS fixed demos to be MAX_OSPATH instead of MAX_QPATH, ie 256 chars now renamed cl_mouseAccel to m_accel removed ioq3 "qkey" rubbish removed support for BMP and PCX removed fs_cdpath, fs_copyfiles, touchfile, fs_restrict removed support for IPX removed in_logitechbug updated cpu detection added TTF support fixed a bunch of stuff in ScanAndLoadShaderFiles, but it's still crap fixed the patch collision epsilon bugs of 1.34 reverted to id's tab-completion since ioq3's is so hated i've semi-merged them atm, will fix up when i get time interpreted vm is never used on platforms that support compiled vm clampmaps and nomip images use GL_CLAMP_TO_EDGE rather than GL_CLAMP disabled curl until it's brought up to standard merged platform-specific *_net.* into qcommon/net_ip.cpp, <3 timbo :) fixed USERINFO vars not being sent properly during connect remove some network stuff (buffer sizes and TOS) http://support.microsoft.com/kb/248611 12 Sep 07 - released as 1.34, since it was about time we did :P increased default MAX_POLYS to 8K and MAX_POLYVERTS to 32K Aug 07 fixed a bug in the skybox code that tried to use a 0-length CVA which makes recent nvidia drivers go into spaz mode changed r_ext_multisample default to 0 to stop ix nagging :P July 07 added support for curl improved some network stuff (buffer sizes and TOS) added support for mouse5-mouse8 1 May 07 remove broken useless cl_freezeDemo and make demo pausing work just use timescale 0 27 Apr 07 ripped out all support for legacy substandard hw/drivers (ie Voodoo etc) and r_maskMinidriver uncorrected mode 8 back to 1280x1024 18 Jul 06 update various cvar defaults r_stencilbits: 0 r_picmip: 0 r_roundImagesDown: 0 r_simpleMipMaps: 0 s_useOpenAL: 0 default fs_game to cpma 30 Jun 06 - initial build from ioq3 svn v810 mode 8 corrected to 1280x960 undefined USE_OPENAL removed GetUserName call removed stupid+broken r_dlightbacks created dlight texture correctly fixed the dlight code removed the explicit and incorrect "vertexlight==1 == disable dlights" test removed redundant r_ext_texture_filter_anisotropic removed retarded cl_consoleHistory removed redundant cl_autoRecordDemo shader spew made developer 1 gl extensions spew made developer 1 pak list made fs_debug 1 removed the TA cvars that were hacked into the engine reordered demo_protocols to reduce spew ==================== === Known issues === ==================== iss: OBS captures go blank after doing a video restart with the D3D11 back-end exp: device/swap chain re-creation isn't handled by OBS' capture plug-in fix: use the GL3 back-end act: won't fix iss: once the GL2 back-end is used, performance drops when switching back to the GL3 back-end cfg: nVidia GeForce GTX 1070 - Windows 7 SP1 x64 - drivers 430.64 and 445.87 fix: don't switch back-ends at runtime or upgrade drivers act: can't fix (root cause unknown) iss: with GL3 and r_gpuMipGen 1, performance collapses big time cfg: AMD Radeon HD 6950 - Windows 10 Pro version 10.0.16299 - drivers 15.201.1151.1008 exp: confirmed: whenever glTexStorage2D is called (even when using that function is the only change) fix: use D3D11 or upgrade drivers act: won't fix iss: with GL3 and r_gpuMipGen 1, the GPU-generated mips are corrupted cfg: AMD Radeon R7 360 - Windows 7 SP1 x64 - drivers 14.502.0.0 exp: not confirmed: broken barrier implementation? fix: use D3D11 or upgrade drivers act: can't fix (root cause unknown) iss: strong gamma correction breaks anti-aliasing exp: MSAA resolve happens before the post-process pass act: won't fix iss: D3D11 full-screen toggles with the 32-bit client freeze myT's PC :-( cfg: nVidia GeForce GTX 1070 - Windows 7 SP1 x64 - drivers 445.87 fix: use the 64-bit client act: can't fix (root cause unknown) iss: with GL2, mirror/portal surface rendering doesn't use the extra clip plane cfg: AMD Radeon 780M Graphics exp: AMD drivers are more strict fix: use another backend act: won't fix