\begin{figure}[h]
\centering
\resizebox{\columnwidth}{!}{%
\begin{tikzpicture}[
    >=stealth,
    node distance=0.5cm and 0.4cm, 
    % Added subtle gray fill for processing blocks
    block/.style={rectangle, draw, thick, fill=gray!10, align=center, minimum width=2.2cm, minimum height=1cm, font=\sffamily\small},
    % Input blocks remain white
    input/.style={rectangle, draw, thick, align=center, minimum width=2.2cm, minimum height=1cm, font=\sffamily\small},
    data/.style={cylinder, draw, thick, aspect=0.25, align=center, minimum width=2.2cm, minimum height=1.2cm, shape border rotate=90, font=\sffamily\scriptsize},
    ledvol/.style={rectangle, draw, thick, align=center, minimum width=1.4cm, minimum height=4.5cm, font=\sffamily\small}
]

% Input Boundary (Aligned Left)
\node[input] (cam) {Camera\\ Tracking\\ Data \\(Live Link)};
\node[data, below=1.5cm of cam] (prof) {Robogoniometric\\CoA ($D(\theta)$)};

% nDisplay Branching 
\node[block, above right=0.2cm and 0.5cm of cam] (outer) {Outer Frustum\\(nDisplay)};
\node[block, below right=0.2cm and 0.5cm of cam] (inner) {Inner Frustum\\(Camera FoV)};

% Inner Frustum Shader Pipeline
\node[block, right=of inner] (calc) {Compute Angle\\($\theta = \arccos(N \cdot V)$)};
\node[block, right=of calc] (comp) {Apply Inverse\\($RGB_{out} = RGB_{in} \cdot D^{-1}(\theta)$)};

% Output Node
\node[ledvol] at (cam -| comp.east) [xshift=1.9cm] (led) {LED\\Volume};

% Routing - Input to Frustums
\draw[->, thick] (cam.east) -- ++(0.15,0) |- (outer.west);
\draw[->, thick] (cam.east) -- ++(0.15,0) |- (inner.west);

% Routing - Inner Frustum Pipeline
\draw[->, thick] (inner) -- (calc);
\draw[->, thick] (calc) -- (comp);

% Routing - LUT to Compute (Clean orthogonal routing below the pipeline)
\draw[->, thick] (prof.east) -| (comp.south);

% Routing - Output to LED Wall
\draw[->, thick] (outer.east) -- node[midway, above, font=\sffamily\scriptsize, align=center] {Uncompensated} (outer.east -| led.west);
\draw[->, thick] (comp.east) -- node[midway, above, font=\sffamily\scriptsize, align=center] {Pre-\\compensated} (comp.east -| led.west);

\end{tikzpicture}%
}
\caption{
    \small Rendering pipeline for Color over Angle compensation in \newline nDisplay LED Volume, illustrating outer frustum pass-through and inner \newline frustum  compensation driven by $D$ and the inverse $D^-1$.
}
\label{fig:method_flow}
\end{figure}