-
Notifications
You must be signed in to change notification settings - Fork 0
perf: skinned mesh LOD + per-object motion vectors #142
Copy link
Copy link
Open
Labels
P2-mediumMittlere PrioritätMittlere Prioritätarea:animationSkelett-Animation, Keyframes, State MachinesSkelett-Animation, Keyframes, State Machinesarea:renderingRenderer, Lichter, Schatten, Post-FX, ShaderRenderer, Lichter, Schatten, Post-FX, Shadersize:L~1 Woche~1 Wochetype:perfPerformance-Arbeit (FPS, Speicher, Ladezeiten)Performance-Arbeit (FPS, Speicher, Ladezeiten)
Milestone
Description
Metadata
Metadata
Assignees
Labels
P2-mediumMittlere PrioritätMittlere Prioritätarea:animationSkelett-Animation, Keyframes, State MachinesSkelett-Animation, Keyframes, State Machinesarea:renderingRenderer, Lichter, Schatten, Post-FX, ShaderRenderer, Lichter, Schatten, Post-FX, Shadersize:L~1 Woche~1 Wochetype:perfPerformance-Arbeit (FPS, Speicher, Ladezeiten)Performance-Arbeit (FPS, Speicher, Ladezeiten)
Context
Two verified skeletal-animation gaps from the gap analysis: (1) the vertex-clustering decimator (
Engine/Graphics/Geometry/MeshDecimator.h,ResourceRegistry_Lod.cpp) drops bone weights, so skinned meshes skip the LOD chain entirely — every character renders full-detail at any distance; (2) motion vectors are camera-only depth reprojection (DX12MotionVectorPipeline), so fast skeletal motion ghosts under DLSS Frame Generation (and will ghost under the new TAA). A horror game is characters: a monster crowd stress test hits both problems at once.Goal
Make the decimator weight-preserving so skinned meshes get real LOD chains, and add a per-object motion-vector path for skinned/dynamic geometry that renders true previous-position velocity using last frame's bone palette and world matrix.
Acceptance Criteria
Technical Notes
Motion-vector VS reuses
skinned.hlslskinning with prev palette + prev VP; output to the mvec pass as geometry rather than fullscreen reprojection. Bone palette memory doubles — coordinate with the upload-ring arena work.Dependencies