The phases of a frame's per-frame callbacks, run in this order after
controls.update():
camera: callbacks that MOVE the camera (a flight, the recording
turntable, the offline capture's orbit step). They run first so that
everything reading the camera this frame reads its final pose.
view: callbacks that DERIVE state from the camera and the scene
(dynamic clipping planes, depth sort, projected density, LOD selection,
dimension playback). The default.
pre-render: work that needs the frame's final view state (the
scene-captured environment).
ui: read-only overlays (scale bar, Layers-panel LOD status).
Within a phase callbacks run in registration order. Before phases existed
everything ran in registration order alone, so a camera writer registered
after the view callbacks (every flight is: it registers when it starts)
moved the camera after clipping, depth sort and LOD had already read it,
and every flight frame rendered with the previous frame's near/far.
The phases of a frame's per-frame callbacks, run in this order after
controls.update():camera: callbacks that MOVE the camera (a flight, the recording turntable, the offline capture's orbit step). They run first so that everything reading the camera this frame reads its final pose.view: callbacks that DERIVE state from the camera and the scene (dynamic clipping planes, depth sort, projected density, LOD selection, dimension playback). The default.pre-render: work that needs the frame's final view state (the scene-captured environment).ui: read-only overlays (scale bar, Layers-panel LOD status).Within a phase callbacks run in registration order. Before phases existed everything ran in registration order alone, so a camera writer registered after the view callbacks (every flight is: it registers when it starts) moved the camera after clipping, depth sort and LOD had already read it, and every flight frame rendered with the previous frame's near/far.