mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-17 09:33:51 +00:00
Fix WMO wall collision, normal mapping, POM backfill, and M2/WMO rendering performance
- Fix MOPY flag check (0x08 not 0x01) for proper wall collision detection - Cap MAX_PUSH to PLAYER_RADIUS to prevent gradual clip-through - Fix WMO doodad quaternion component ordering (X/Y swap) - Linear normal map strength blend in shader for smooth slider control - Enable shadow sampling for interior WMO groups (covered outdoor areas) - Backfill deferred normal/height maps after streaming with descriptor rebind - M2: prepareRender only iterates animated instances, bone dirty flag - M2: remove worker thread VMA allocation, skip unready bone instances - WMO: persistent visibility vectors, sequential culling - Add FSR EASU/RCAS shaders
This commit is contained in:
parent
16c6c2b6a0
commit
a4966e486f
25 changed files with 1467 additions and 352 deletions
|
|
@ -148,6 +148,8 @@ public:
|
|||
* @param perFrameSet Per-frame descriptor set (set 0)
|
||||
* @param camera Camera for frustum culling
|
||||
*/
|
||||
/** Pre-update mutable state (frame ID, material UBOs) on main thread before parallel render. */
|
||||
void prepareRender();
|
||||
void render(VkCommandBuffer cmd, VkDescriptorSet perFrameSet, const Camera& camera);
|
||||
|
||||
/**
|
||||
|
|
@ -332,6 +334,9 @@ public:
|
|||
// Defer normal/height map generation during streaming to avoid CPU stalls
|
||||
void setDeferNormalMaps(bool defer) { deferNormalMaps_ = defer; }
|
||||
|
||||
// Generate normal/height maps for cached textures that were loaded while deferred
|
||||
void backfillNormalMaps();
|
||||
|
||||
private:
|
||||
// WMO material UBO — matches WMOMaterial in wmo.frag.glsl
|
||||
struct WMOMaterialUBO {
|
||||
|
|
@ -720,6 +725,8 @@ private:
|
|||
uint32_t distanceCulled = 0;
|
||||
};
|
||||
std::vector<std::future<void>> cullFutures_;
|
||||
std::vector<size_t> visibleInstances_; // reused per frame
|
||||
std::vector<InstanceDrawList> drawLists_; // reused per frame
|
||||
|
||||
// Collision query profiling (per frame).
|
||||
mutable double queryTimeMs = 0.0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue