perf(rendering): preserve alpha order with bindless particles
Carry each billboard particle's resident texture handle in the instance ABI so stable retail alpha ordering can batch mixed textures without rebinding and redrawing each short texture run. Keep DAT blend transitions as the only billboard draw boundary. The connected 0xC95B stress scene improved from 6 FPS / 171 ms to about 153 FPS / 6.6 ms at the same roughly 21,000 visible entities. Release build succeeds and all 5,916 tests pass with five intentional skips. Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
parent
6b0472ee32
commit
2cbf34a668
7 changed files with 150 additions and 57 deletions
|
|
@ -68,9 +68,22 @@ flush boundaries. It preserves DAT blend/cull/lighting state and batches only
|
|||
adjacent compatible submissions so renderer grouping cannot change the
|
||||
compositing order.
|
||||
|
||||
The first connected build exposed a modern-backend performance regression:
|
||||
distance sorting naturally interleaves particle textures, while the old
|
||||
billboard shader required one texture bind/draw for every texture run. After
|
||||
several portals, the dense `0xC95B` scene reached roughly 21,000 visible
|
||||
entities and fell to 6 FPS / 171 ms. This was not a retained queue or streaming
|
||||
leak. Billboard instances now carry their resident bindless texture handle in
|
||||
the vertex-instance ABI; different textures therefore remain in exact sorted
|
||||
order inside one instanced draw, with only DAT blend-mode changes splitting a
|
||||
run. The identical location recovered to about 153 FPS / 6.6 ms in the
|
||||
connected Release client.
|
||||
|
||||
**Files:** `src/AcDream.App/Rendering/RetailAlphaQueue.cs`;
|
||||
`src/AcDream.App/Rendering/Wb/WbDrawDispatcher.cs`;
|
||||
`src/AcDream.App/Rendering/ParticleRenderer.cs`;
|
||||
`src/AcDream.App/Rendering/Shaders/particle.vert`;
|
||||
`src/AcDream.App/Rendering/Shaders/particle.frag`;
|
||||
`src/AcDream.App/Rendering/RetailPViewRenderer.cs`.
|
||||
|
||||
**Research:**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue