Fix outline rendering: cached DIP replay, disable depth for silhouettes
Switch from double-DIP (which corrupted WoW's GxDevice state) to cached replay in EndScene. Cache draw params + GPU state (VB, IB, vertex decl, VS, 256 VS constant registers) during the DIP hook, replay to silhouette RT in EndScene before the JFA pipeline. Remove D3D9 state blocks entirely — use comprehensive manual save/restore of all modified state (render states, sampler states, shader constants, COM objects with proper AddRef/Release). Disable depth testing for all silhouette replay categories. By EndScene the depth buffer has the full scene, so LESSEQUAL testing creates holes in the silhouette wherever other models overlap — breaking the JFA outline for targets and raid marks. Corpses already used ZENABLE=FALSE. Add per-frame diagnostic counters (scan/classify counts by category) logged via OutputDebugStringA for the first 20 active frames. Clean up unused code: comAddRef, deviceCreateStateBlock, stateBlockApply.
This commit is contained in:
+897
-409
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user