mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
Fix main-thread hang from terrain finalization; two-pass M2 rendering; tile streaming improvements
Hang/GPU device lost fix: - M2_INSTANCES and WMO_INSTANCES finalization phases now create instances incrementally (32 per step / 4 per step) instead of all at once, eliminating the >1s main-thread stalls that caused GPU fence timeouts and device loss M2 two-pass transparent rendering: - Opaque/alpha-test batches render in pass 1, transparent/additive in pass 2 (back-to-front sorted) to fix wing transparency showing terrain instead of trees — adds hasTransparentBatches flag to skip models with no transparency Tile streaming improvements: - Sort new load queue entries nearest-first so critical tiles load before distant ones during fast taxi flight - Increase taxi load radius 6→8 tiles, unload 9→12 for better coverage Water refraction gated on FSR: - Disable water refraction when FSR is not active (bugged without upscaling) - Auto-disable refraction if FSR is turned off while refraction was on
This commit is contained in:
parent
a49c013c89
commit
e0d47040d3
6 changed files with 234 additions and 38 deletions
|
|
@ -122,6 +122,7 @@ struct M2ModelGPU {
|
|||
bool isKoboldFlame = false; // Model name matches kobold+(candle/torch/mine) (precomputed)
|
||||
bool isLavaModel = false; // Model name contains lava/molten/magma (UV scroll fallback)
|
||||
bool hasTextureAnimation = false; // True if any batch has UV animation
|
||||
bool hasTransparentBatches = false; // True if any batch uses alpha-blend or additive (blendMode >= 2)
|
||||
uint8_t availableLODs = 0; // Bitmask: bit N set if any batch has submeshLevel==N
|
||||
|
||||
// Particle emitter data (kept from M2Model)
|
||||
|
|
|
|||
|
|
@ -152,9 +152,11 @@ struct FinalizingTile {
|
|||
FinalizationPhase phase = FinalizationPhase::TERRAIN;
|
||||
|
||||
// Progress indices within current phase
|
||||
size_t m2ModelIndex = 0; // Next M2 model to upload
|
||||
size_t wmoModelIndex = 0; // Next WMO model to upload
|
||||
size_t wmoDoodadIndex = 0; // Next WMO doodad to upload
|
||||
size_t m2ModelIndex = 0; // Next M2 model to upload
|
||||
size_t m2InstanceIndex = 0; // Next M2 placement to instantiate
|
||||
size_t wmoModelIndex = 0; // Next WMO model to upload
|
||||
size_t wmoInstanceIndex = 0; // Next WMO placement to instantiate
|
||||
size_t wmoDoodadIndex = 0; // Next WMO doodad to upload
|
||||
|
||||
// Incremental terrain upload state (splits TERRAIN phase across frames)
|
||||
bool terrainPreloaded = false; // True after preloaded textures uploaded
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue