Skip to content

0.4.0

Pre-release
Pre-release

Choose a tag to compare

@mastercoms mastercoms released this 17 Aug 02:07
· 42 commits to main since this release

Team Fortress 2 changes

  • Reverted Ullapool Caber, Holiday Punch, Enforcer, Quick Fix, and Loose Cannon changes from 0.3.1 as they affected balance too much and TC2 is not the place for that
  • Fixed a few code inspection warnings (dimhotepus, #553)
  • Fixed -nomaster not disabling master server updates
  • Adjusted priority of various threads, including increasing the default priority class of TF2 to above normal
  • Increased the max static props per rendering batch to 2048 from 512
  • Implemented a new frame synchronization algorithm which only holds frame waits for half of the refresh rate, improving parallelism which accounting for meaningful input lag
    • Also improved frame sync interval, to use a pause instruction with backoff, so that frames with varying finish times do not overly affect the delay with which a frame is synced
  • Fixed possible case of rendering freezing at very high frame rates
  • Fixed incorrect pool being used for textures in D3D9Ex mode
  • Disabled heavy query cache system, which is only used in L4D

Reworked math optimizations

  • Faster, cleaner, and less buggy in certain cases
  • This should fix animation errors on Linux, and in tools
  • Updated to DirectXMath January 2021

Reworked threading changes

  • Moved new threading events to separate system, so that it does not break ABI compatibility
    • This should fix Linux & macOS crashing in vphysics
  • Changed all thread pool usage to loop through their queue, and then wait
    • This is fine even for the IO thread: it receives calls from the main thread, but it can continue multi-threading its jobs before responding to the main thread, since the main thread will process lingering jobs as a prerequisite anyway
  • Added result caching to thread pool multi-wait, to speed up job processing
  • Added yield backoff algorithm to wait
  • Reverted priority boost while processing a job
  • Increased multi-wait event count support from 5 to 14
  • Condition queue improvements
    • Changed condition queue from FIFO to LIFO
    • Fixed ordering of multi-waits always overriding standard Wait
    • Removed locking overhead from internal queue
  • Disabled thread affinity
  • Added yield scaling, so that different processors do not use different pause times
  • Improved thread reply logic
  • Improved thread calls latency, by caching the result of a peek instead of rechecking afterwards
  • Fixed spurious wakeups causing threads to become dormant over time
  • Improved parallel processing behavior in constrained scenarios
  • Optimized locking overhead to atomic operation for thread events in some cases
  • Implemented CThreadPool::Yield
  • Improved behavior of JF_NO_ADD
  • Reverted RWLock changes, instead, allow inlining by removing ASM
  • Added 4 thread burst IO system, which should improve load times
  • Enabled queued material system by default on start up
  • Improved thread parallelism by balancing thread work
  • Fixed contention in the data cache
  • Updated parallel processing to use balanced workload scheme

Client leaf system changes

  • Greatly improved the efficiency of parent bound calculations
  • Improved when leaf system renders
  • Added robust bounds caching for all entities (for both bloated and standard bounds)
    • Skips most leaf system work if bounds are up to date, even after a renderable change notification
    • Static prop bounds are cached at level start
  • Entities with out of date bounds will have their bounds updated all at once, efficiently using multithreading
  • Enabled leaf system for brush models
  • Added cl_leafsystemvis from CS:GO, to help visualize the client leaf system
  • Fixed a few bugs, crashes and hangs

Reworked sound changes

  • Greatly reduced latency of the sound thread
    • Added an early wait exit by allowing the game thread to notify the sound thread when a game frame has finished. This way, game frames instantly get processed by a sound frame.
    • Optimized DirectSound to have a much more precise cursor location
    • Optimized DirectSound to skip unnecessary sound processing in surround sound setups
    • If the sound frame is behind, it will not wait, even for a short amount of time.
  • Async sound data loading
  • Greatly improved sound quality
  • Fixed a few crashes caused by the sound thread

Team Comtress 2 fixes

  • Fixed r_queued_post_processing being set to 1, causing a missing texture overlay
  • Fixed some games not compiling correctly (Margen67, #506)
  • Removed matchmaking options from main menu
  • Removed featured items from main menu
  • Ported fixes for player disconnect reason from TF2
    • Improved: Player disconnect reason is still displayed if it is a built-in reason
  • Ported removal of streams list from TF2
  • Removed player material fixes from TC2, as there are newer player materials in TF2
  • Ported minor HUD fixes and localization file changes from TF2
  • Update protobuf from 2.5.0 to 2.6.1
  • Moved to src directory
  • Reverted strict max usrcmd process ticks change from CS:GO