mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-18 20:29:17 +02:00
Add EU7 PACK v11 UTEX, section unload, and LRU streaming caches
Bake deduplicated section texture lists (UTEX) and read them at runtime so texture warm/prefetch no longer scans every instance. Evict PACK sections outside a 16 km keep ring and cap mesh/nodedata/texture warm caches to stop RAM and apply cost from growing without bound during long fast camera flight. - Bake v11 (format=4): UMES + UTEX + CHNK; mesh/texture ordering by frequency - Runtime: incremental UTEX warm, adaptive apply slices, preempt/catchup tuning - Unload: track instances per section, Region erase, pack pool release - LRU: mesh/nodedata (2000, ref-counted), warmed textures (2048) - Bench/diagnostics: unload and cache eviction counters - Fix pack instance erase in Region; resolve duplicate helper symbols
This commit is contained in:
@@ -668,13 +668,18 @@ TAnimModel::LoadEu7PackWarm(
|
||||
if(
|
||||
false == texture_file.empty() &&
|
||||
texture_file != "none" &&
|
||||
texture_file.substr( 0, 1 ) != "*" ) {
|
||||
texture_file.substr( 0, 1 ) != "*" &&
|
||||
false == texture_file.starts_with( "make:" ) &&
|
||||
false == texture_file.starts_with( "@" ) &&
|
||||
false == texture_file.starts_with( "none|" ) ) {
|
||||
auto normalized { texture_file };
|
||||
replace_slashes( normalized );
|
||||
if(
|
||||
normalized != "none" &&
|
||||
false == normalized.ends_with( "/none" ) &&
|
||||
normalized.find( "tr/none" ) == std::string::npos ) {
|
||||
false == normalized.ends_with( '/' ) &&
|
||||
normalized.find( "tr/none" ) == std::string::npos &&
|
||||
normalized.find( '#' ) == std::string::npos ) {
|
||||
m_materialdata.assign( normalized );
|
||||
if( m_materialdata.replacable_skins[ 1 ] == null_handle ) {
|
||||
scene::eu7::pack_bench_inc( &scene::eu7::Eu7PackBench::main_texture_assign_fail );
|
||||
|
||||
Reference in New Issue
Block a user