What's new in TDM 2.09

From The DarkMod Wiki
Revision as of 05:26, 16 December 2020 by Nbohr1more (talk | contribs) (→‎GUIs)
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: --- allow the backend to feed draw calls to the driver from multiple cores at the same time


  • r_useBindlessTextures: --- reduce driver CPU usage by allowing the GPU to keep track of textures associated to shaders ( reduce GL context creation )


  • r_gpuBufferNonpersistentUpdateMode: --- Primarily for Intel GPU's. Improves rendering performance for persistent mapped buffers.


  • 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.

  • 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 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
  • Missions are also using a similar revision architecture for updates and downgrades
  • 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

Gameplay

See also