There are two different processes: the Darkplaces Quake game and the audio synthesizer. Interprocess communication is done via a WinAPI named pipe.
My favourite Quake source port, Darkplaces has an excellent software renderer I abused to get access to projected scene geometry. The engine was patched to save all the clip-space triangle edges sent for drawing, and then transfer these to a synthesizer process via a named pipe.
This geometry extraction phase doesn't affect normal rendering, and a proper depth buffer is actually required for the last culling stage to function.
The pipeline on the Quake side is basically this:
- for each object being drawn
- for each triangle
- clip the edges to screen borders
- if edge is visible
- and not already saved this frame
- save it to a list
- render the triangle normally, even though color isn't used
- for each triangle
- if the synth process has requested more geometry, then:
- check if lines are in front of geometry via z-buffer sampling
- submit all visible lines of this frame to the synth via pipe