Theme Catppuccin
Make yourself at homeCatppuccin

A softer light for long learning sessions.

Appearance

Loading your preference…

Dark palette

Choose a dark palette to try it.

Light uses Latte. Your choices stay in this browser.

Paint in passes

SKETCHBOOK / 04 Copper Orchard · 2-week chapter

Page 1 of 4: A pass opens and closes a surface

Load and store tell a story

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.

From the page to your own work

Your studio assignment.

Compose a textured depth-tested still life that survives window resizing.

A finish line you can see

A pass table, draw-order test, and original orchard image.

  1. Match attachment sizes, formats, and samples.
  2. Explain every load/store choice from a later or earlier use.
  3. Verify coordinate conventions with an asymmetric test scene.
  4. Bound texture bytes and test resize-dependent replacement.
Keep the evidence in your weekly notebook ↗
Explain it like an engineer

Try answering aloud before opening the review notes. Use your own implementation as evidence.

How do you decide whether a depth attachment needs to be stored?
  • Identify whether any later pass or readback uses its contents.
  • Within-pass depth testing does not automatically require preservation afterward.
  • Storage mode, attachment support, and load/store contracts constrain the choice.

These prompts support practice; they are not an automatic assessment of your work.

A small creative variation ↗

Add a leaf pattern with a new palette using the same texture dimensions and pass structure.

Optional. Save it for later if this chapter already feels full.

Coming back after a break? ↩

Render two opaque triangles and confirm draw-order independence. Restore texture only after that passes.

Books & principles behind this study +

Original Parallax explanations and assignments, with these works for further reading.

YOUR MARGIN NOTES

Leave yourself a good question.

What changed your mind? What would you try next?

Notes are private to this browser and saved as you write.

A CHECKPOINT, NOT A SCORE

Can you explain the idea and try the exercise yourself?

Completion records your own assessment. It does not compile or test your C++.
Companion source 6 files