What's new in TDM 2.09

From The DarkMod Wiki
Revision as of 14:24, 16 December 2020 by Nbohr1more (talk | contribs) (→‎Mapping)
Jump to navigationJump to search
Version 2.09 of The Dark Mod has not been released yet.

See the roadmap on our bugtracker.

The Dark Mod 2.09 Performance Update

TDM 2.09 marks a new phase of performance improvements aimed lowering CPU overhead in rendering.

A new OpenGL 3.3 backend that uses bindless textures, multi-draw, UBO streaming, and persistence mapping should significantly reduce
CPU demands bringing TDM a little closer to Vulkan performance per the "Approaching Zero Driver Overhead" (AZDO) design philosophy.

The work started in 2.08 to port Doom 3 BFG CPU jobs for multi-core acceleration to the frontend is nearly complete.

A new Sharpening Filter has been added which enhances the appearance of existing TDM textures
and also allows you to lower your Render Scale without producing a blurry render

The particle rendering system has been refactored to be more organized and mathematically correct.
The redesign should be easier to adapt for moving all particle rendering to the GPU if needed.

New particle setup features for weather effects like rain and snow have been added.

A new automation system allows mappers to connect TDM to Darkradiant and see real-time in-engine previews of their map




Important CVARS


  • r_useNewBackend: --- which rendering backend to use. Default value of 1 means using the new one. In case of graphical issues, it might be worth trying to set it to 0 to check if issue goes away.


  • r_useMultiDrawIndirect: --- Send many draw calls as one GL call, reading data from something like a "command buffer" (which is streamed from CPU to GPU separately)


  • r_useBindlessTextures: --- reduce bind overhead on the CPU


  • r_gpuBufferNonpersistentUpdateMode: --- Troubleshooting cvar. Switches between two approaches for data uploading, and it only has effect when persistent mapping is OFF


  • r_shadowMapSinglePass: --- experimental optimization for shadow maps only.By default it is 0 (disabled), it can be enabled to 1 (generate many shadow maps at once)
  • and 2 (compute interactions from many light at once).


  • r_useParallelAddModels: --- controls new acceleration for rendering frontend (Multi-Core Doom 3 BFG job based threading).
  • Can be changed in Experimental graphics menu under name "Frontend Acceleration". Much more stable in 2.09


  • jobs_numThreads: --- meant to be paired with r_useParallelAddModels. Controls how many CPU cores can be assigned jobs ( default 2 )



Graphics


  • Required OpenGL version raised to GL 3.3. This version is supposed to be final for the nearest years. ARB shaders removed completely. Some further cleanup done.
  • The rendering now works on the "new backend" by default, and the old backend is marked for removal in future. The new backend is not only a major refactoring of OpenGL-related code,

but also a strong movement towards minimizing driver overhead. It includes improvements like: UBO streaming, bindless textures, multidrawindirect commands, lightgem triple buffering.

  • The additional color correction that got included into 2.08 has been disabled. Also gamma/brightness settings now affect everything, including: underwater, GUIs, menu, etc.

As the result, the gamma/brightness behavior of TDM 2.07 is fully restored.

  • RGTC texture compression is now used by default for normal maps. The plan is to convert existing normal maps to DDS files with RGTC compression in future (to reduce load times).

For now compression is done during level load.

  • The well-known cvar com_smp aka "Multi Core Enhancement" optimization has become stable enough to be enabled by default and to be removed from the settings menu.

Its place in experimental settings is now taken by the new parallel optimization: cvar r_useParallelAddModels aka "Frontend Acceleration". Needless to say, this mode has got a major overhaul and numerous fixes.

  • Added sharpening filter, which is applied to the final rendered image and improves its look.

It is enabled by default, controlled by "Sharpen Image" setting in the menu.

  • Enabled r_useBumpmapLightTogglingFix by default: bumpy surfaces will be darkened when light falls under low angle.
  • Fixed "borderless" fullscreen mode (Windows-only). Ironically, it was broken in 2.08 release and worked exactly the same as ordinary fullscreen mode.

Now it should hopefully work as intended.


Mapping


  • First implementation of "hot reload" feature: updating new map changes without restarting game.

It is also integrated into DarkRadiant (with the help of DarkRadiant devs 😃, of course). Here is the Hot_Reload wiki page about it (beware: it is quite technical 😥).

  • Finally, the rotation hack is totally removed from any map when player loads it. For any entity, bad rotation is embedded into its model.

Internally, the transformed model is saved on player's machine as "proxy model"

  • Particle systems were greatly refactored, fixing the issue with bounding box.

Added "mapLayout linear" mode to particle static collisions, which allows snow or fire to stop at objects. See also wiki page about particle collisions.


Sound


  • Fixed sounds from unlit/extinguished gas lamp


Coding


  • New TDM updater and installer with differential updates and the ability to upgrade and downgrade
  • Every warning about missing image/sound is followed by detailed explanation how it was referenced.

It is controlled by decl_stack cvar and is enabled by default. It is already helping us in a desperate fight with console warnings

  • A bunch of console warnings were fixed or disabled. More fixes will follow in future.
  • Various guards against NaN


Assets


  • Dragofer and Kingsal's massive manbeast fixes, released soon after 2.08
  • Added cathedral_torn skin


GUIs


  • New "Frontend Acceleration" option
  • GUI scripts got some attention due to the story of menu refactoring

Fixed awful bug about lost GUI commands. Added much more debug logging under LC_MAINMENU/LT_DEBUG

  • Fixed "Render Scale" slider in settings menu
  • Better window resize on Windows
  • mainmenu_briefing_video.gui no longer resets cinematics on startup


Gameplay


  • Conversation and other sounds are no longer stopped by saving or going to main menu
  • Added experimental gamepad support
  • Creeping now works in "always run" mode



See also