• Hi Guest!

    We are extremely excited to announce the release of our first Beta1.1 and the first release of our Public AddonKit!
    To participate in the Beta, a subscription to the Entertainer or Creator Tier is required. For access to the Public AddonKit you must be a Creator tier member. Once subscribed, download instructions can be found here.

    Click here for information and guides regarding the VaM2 beta. Join our Discord server for more announcements and community discussion about VaM2.
  • Hi Guest!

    VaM2 Resource Categories have now been added to the Hub! For information on posting VaM2 resources and details about VaM2 related changes to our Community Forums, please see our official announcement here.

Changelog: V1.3 Performance Optimization Update


Core Improvements

  • Reduced GC Pressure: Major refactoring across core scripts to eliminate per-frame memory allocations (gc), resulting in smoother frame rates and reduced stuttering during long sessions.
  • CPU Optimization: Optimized Update loops to remove unnecessary overhead.

Script Specifics

  • RhythmReactor
    • Fix: Implemented caching for BPM string conversion in PushBPMValue. This eliminates string allocation garbage generated every frame when pushing data to other atoms.
    • Optimization: Improved logic to only update targets when integer values actually change.
  • BPMIntervalTrigger
    • Optimization: Completely removed try-catch blocks from the main Update loop, replacing them with efficient null checks to reduce CPU overhead.
    • New Feature: Implemented a Parameter Caching System (UpdateCachedTarget). Target parameters (Float/Bool/String) are now resolved and cached upon selection, eliminating expensive string parsing (Substring/Trim) and lookup calls during runtime execution.

LEDEmissionFXController Bug Fix​

  • Fixed a minor bug where External Param list was empty after loading a saved scene. The plugin now correctly restores the selected external storable and parameter without requiring manual re-selection.
  • Improved initialization flow for external plugin and parameter lists.
  • Minor internal cleanup and stability improvements.

LEDEmissionFXController Performance Update​

  • Switched per-material Material.SetColor writes to MaterialPropertyBlock (MPB) per renderer, with per-renderer MPB caching.
  • Added update throttling via _updateInterval (default 1/60s) to cap live-update frequency.
  • Implemented per-frame batching with _maxRenderersPerFrame and a rolling _rendererCursor to spread large updates across frames.
  • Introduced color-change thresholding (NearlyEqualColor) to skip redundant writes when the effective emission color hasn’t changed.
  • Resolved a potential GC performance issue that occurred during LiveUpdate when "ApplyToAllRenderers" was disabled. The selected Renderer is now cached upon selection instead of being searched for by its string path every frame, eliminating per-frame allocations and potential stutter.
Back
Top Bottom