@startuml :Triangles; :Vertices; if (Vertex cache?) then (hit) :Load vertex; else (miss) :Transform & Store vertex; endif :Transformed triangle (clip space); :Clip; :2D triangles; :Backface cull; :Rasterize; :Pixels; if (Depth test?) then (pass) if (Alpha mask?) then (opaque) :Write pixel; else (transparent) :Discard; stop endif else (fail) :Discard; stop endif stop @enduml