\documentclass[crop,tikz]{standalone} \input{common-headers} \begin{document} \begin{tikzpicture}[% shader/.style={draw,fill=white,nearly opaque, minimum size=1.5cm,% align=center, node distance=5mm}, prgrbl/.style={shader,opaque,thick,font=\bfseries}, prgrbo/.style={prgrbl,dashed}, f/.tip={Fast Triangle[cap angle=120]}, >/.tip={Triangle Cap[cap angle=120] . f f}, % Normal tips >-[reversed]} % Reversed tips ] \node[shader] (S1) at (0,0) {Vertex\\ Specification}; \node[prgrbl,right=of S1] (S2) {Vertex\\ Shader}; \node[prgrbo,right=of S2] (S3) {Tessellation}; \node[prgrbo,right=of S3] (S4) {Geometry\\ Shader}; \node[shader,right=of S4] (S5) {Vertex\\ Post-Processing}; \node[shader,below=of S5] (S6) {Primitive\\ Assembly}; \node[shader,left =of S6] (S7) {Rasterization}; \node[prgrbo,left =of S7] (S8) {Fragment\\ Shader}; \node[shader,left =of S8] (S9) {Per-Sample\\ Operations}; \begin{scope}[on background layer] \draw[line width=1cm, >->,black!40,rounded corners] ($(S1.center) + (-3cm,0)$) to (S5.center)% to (S6.center) to ($(S9.center) + (-3cm,0)$); \end{scope} \end{tikzpicture} \end{document}