A pass opens and closes a surface
A render-pass descriptor names its attachments and specifies what happens to their contents at the beginning and end of the pass. Clear establishes a known initial value. Load preserves contents produced earlier. DontCare says those contents are not required. Store preserves the result for a later use; DontCare discards that obligation. Choose from the dataflow, not from which enum sounds faster.
On tile-based GPUs, unnecessary attachment traffic can be expensive, making a precise pass design valuable. But a performance slogan is not a correctness rule. If a later pass samples the color image, its result must be stored in a usable texture. If depth is used only within the current pass, preserving it afterward may be unnecessary. Memoryless attachments have tighter restrictions and platform support requirements; introduce them only after the basic pass is correct.
Name each pass by its purpose: orchard-opaque, pollen, or final-color. Mark which pass first writes each attachment and which pass last reads it. This is a small hand-written resource graph. You do not need a general frame-graph engine to benefit from knowing the graph.
