\begin{figure}[tbp] \centering \begin{tikzpicture}[>=Latex, node distance=10mm and 6mm] \node[draw, rounded corners, fill=blue!8, minimum width=20mm, minimum height=9mm, align=center] (append) {append\\geometry}; \node[draw, rounded corners, fill=blue!8, minimum width=20mm, minimum height=9mm, align=center, right=of append] (bbox) {bbox\\and grid}; \node[draw, rounded corners, fill=green!9, minimum width=20mm, minimum height=9mm, align=center, right=of bbox] (partition) {partition}; \node[draw, rounded corners, fill=green!9, minimum width=20mm, minimum height=9mm, align=center, right=of partition] (filter) {filter}; \node[draw, rounded corners, fill=yellow!15, minimum width=20mm, minimum height=9mm, align=center, right=of filter] (sort) {SCC\\sort}; \node[draw, rounded corners, fill=orange!15, minimum width=20mm, minimum height=9mm, align=center, right=of sort] (render) {render\\paths}; \draw[->, thick] (append) -- (bbox); \draw[->, thick] (bbox) -- (partition); \draw[->, thick] (partition) -- (filter); \draw[->, thick] (filter) -- (sort); \draw[->, thick] (sort) -- (render); \node[draw, rounded corners, fill=teal!10, minimum width=24mm, minimum height=9mm, align=center, below=17mm of sort] (labels) {labels\\held aside}; \draw[->, thick] (append.south) |- (labels.west); \draw[->, thick] (labels.east) -| (render.south); \node[align=center, font=\footnotesize] at ($(bbox.north)+(0,0.95)$) {candidate pairs\\only}; \node[align=center, font=\footnotesize] at ($(partition.north)+(0,1.00)$) {split only when\\local depth order fails}; \node[align=center, font=\footnotesize] at ($(sort.north)+(0,0.95)$) {cycle handling and\\topological order}; \node[align=center, font=\small] at ($(labels.south)+(0,-0.70)$) {labels bypass the occlusion pipeline and are emitted last}; \end{tikzpicture} \caption{The scene model. Geometry is appended first and processed only at display time; labels are stored with the scene but bypass most of the visibility machinery before being emitted last.} \end{figure}