mirror of
https://github.com/libretro/parallel-dc.git
synced 2026-11-07 12:37:53 -10:00
The parse's arena has a part for each list the card draws from: the vertices, the indices (with the sorted passes' room after them), and the modifier volumes' triangles and those cut (rend/modvol_clip.h); a frame's lists are moved into a slice together (parse_arena_attach()). The volumes' triangles a frame draws are drawn from there with Vulkan and OpenGL, not copied into the main buffer or uploaded each frame. With OpenGL the per-triangle sorted passes' indices are written after the frame's, in its index buffer, not uploaded to a buffer of their own; the per-pixel renderer's volume array is set again when its buffer changes. The heavy disc has a shadow volume a billion pixels off the screen, first in its list, over a polygon that takes shadows: the volumes' cut triangles, and those after it, drawn from their part (vk_parse_arena.sh, gl_parse_arena.sh), which also take the disc with volumes of each cull mode now.