I'm trying to check whether my understanding of how Unity distributes work across the CPU and GPU is correct.
Below is the simplified model I'm working with:
The CPU runs gameplay scripts, prepares rendering commands, and submits them to the GPU each frame.
The GPU processes the submitted work one frame behind the CPU (due to buffering).
CPU and GPU work can overlap, but the frame time is limited by whichever side finishes last.
A GPU bottleneck shows up as the CPU waiting at the end of the frame; a CPU bottleneck shows up as GPU idle time.
My question is:
Are the above points a correct conceptual description of how Unity’s frame pipeline works? If not, what parts are inaccurate or incomplete?
I've tried to better understand this with a small interactive visualization: https://github.com/nbrader/nbrader.com-unity-frame-visualizer
Is this a faithful visualization?