Exakt. Klassisches Pipelining. Der Renderer klappert alle Objekte der Spielwelt ab und erstellt dafür Renderjobs. Ab dann ist der Renderer autark, macht Frustum Calling und Lichtzuordnung usw. Und währenddessen kann schon das nächste Frame simulieren.
Mein Renderer ist wie gesagt noch DX9, daher gibt es in meiner parallelen Task-Verteilung auch eine spezielle Queue für Tasks, die nur im Hauptthread gemacht werden dürfen. Dort packst Du dann auch Eingabe-Verarbeitung und sowas rein. Der kippt dann seine Ergebnisse in irgendnem kleinen Container ab, von wo der nächste Simulationsschritt sich das Zeug holt und einarbeitet. Bedeutet alles natürlich zusätzliche Latenz, also sollte man darauf achten, das alles nicht allzu weit auseinander zu ziehen. Aber Eingabeverarbeitung sind ja auch Mikrosekunden, das muss man jetzt nicht unbedingt parallelisieren. Aber das Schöne an so einem Jobsystem ist ja, dass Du Abhängigkeiten formulieren kannst und damit automatisch erzwingst, dass Job X abgeschlossen ist, bevor Job Y loslaufen kann.