The surface the draw loop needs from the plain billboard program (ParticleProgram) and the trail program (ParticleTrailProgram) — the same three uploads, so one structural contract serves both.
ParticleProgram
ParticleTrailProgram
Uploads one system's world matrix.
Uploads the camera's projection, once per view.
Uploads the camera's view matrix, once per view.
Makes this the current program.
The surface the draw loop needs from the plain billboard program (
ParticleProgram) and the trail program (ParticleTrailProgram) — the same three uploads, so one structural contract serves both.