Skip to content

2.0

Choose a tag to compare

@Frissj Frissj released this 24 Jun 03:11
· 13 commits to main since this release
a91bc7e
Performance & Responsiveness:
    Asynchronous Save: Heavy material processing (hashing, DB writes) was moved from the blocking save_handler to a non-blocking, timer-based background process (process_dirty_materials_timer), eliminating UI freezes on save.
    Efficient UI Filtering: Filtering logic was moved into the optimized UIList.filter_items method, which now intelligently caches data about which materials are used in the scene to avoid recalculations.
    Superior Sorting: Replaced the inefficient timestamp-based sorting with a high-performance recency counter system (promote_material_by_recency_counter), making sorting operations instantaneous.

Robustness & Bug Fixes:
    Correct Material Hashing: Implemented a new, queue-based traversal algorithm in get_material_hash to correctly read all properties from complex, nested node groups, fixing a major source of potential hash inaccuracies.
    Stable Thumbnail UI: Fixed the BKE_icon_get error by adding a versioning system (list_version) to the UI cache, ensuring the UI list invalidates and re-fetches stale thumbnail IDs when they are updated in the background.
    Effective Process Cleanup: Switched from terminate/wait to an immediate kill command for background processes during shutdown, preventing zombie processes.
    Texture Recovery for Thumbnails: The background worker can now create thumbnails for materials with packed or generated textures by saving them to temporary files first.
    Persistent Worker Hashing Scene: The background worker now uses a managed, persistent scene for hashing, improving its performance and stability.

User Experience & Code Quality:
    Smarter "Duplicate/Localise" Button: Consolidated two operators into one intelligent "Create Local Copy" button.
    Predictable List Selection: The list selection now automatically resets to the top after any filtering action.
    Intuitive Recency Sorting: Materials now correctly jump to the top of the list when they are assigned or used.
    Correct Default Naming: Fixed a logic flaw where newly created materials would get an incorrect .001 suffix on their default "Material" display name.

This are still high level changes. In summary, a shit ton of optimisations, bug fixes and improvements, my favourite being complex node setups update material thumbnails.