# 1. Renderer Features and Render Graph
Part of [[Custom URP Renderer Features]]. Next: [[2. Full Screen Pass Renderer Feature]].
## 1.1 Three layers
| Layer | Job |
|---|---|
| **Renderer asset** | The URP renderer your camera uses. Features are a *list* on this asset. |
| **Scriptable Renderer Feature** | A component you add to that list. It creates and **enqueues** one or more passes (`AddRenderPasses` every frame, per camera). |
| **Scriptable Render Pass** | The work. In 6000.5 you **record** it in `RecordRenderGraph` - you declare textures and a render function; you do not fill a `CommandBuffer` in `AddRenderPasses`. |
Shader Graph (and the fullscreen Shader Graph template) still authors the *look*. A Feature is how that look is *injected*. [[URP Shaders and Shader Graph]] already built a tint-vignette this way - treat that note as the shader half, this series as the injection half.
## 1.2 Render Graph is the 6000.5 path
URP's renderer records a **render graph** so it can cull unused passes and alias temporary textures. Official "Write a render pass" (6000.5): in `RecordRenderGraph` you declare inputs and outputs; you do **not** add commands to command buffers there. The `SetRenderFunc` callback (a **static** method or static lambda) is what actually records blit/draw commands later.
**Compatibility Mode (Render Graph Disabled)** lives under **Project Settings > Graphics > Render Graph**. New 6000.5 URP projects leave it off. This series does **not** teach the pre-graph `Execute` path. If a student opens an old project and Features "do nothing" or throw, check that checkbox first.
## 1.3 When you do not need a custom Feature
- A built-in Volume effect already does it ([[Post-Processing]]).
- A material on a quad in front of the camera is enough (usually it is not - depth, UI, and VR will fight you).
- The built-in **Full Screen Pass Renderer Feature** plus a Fullscreen Shader Graph / SRP Blit material is enough (part 2).
## 1.4 Exercise
Open your URP *Renderer* asset (the one the camera actually uses). Note the Renderer Features list. Confirm Compatibility Mode is off. Open **Window > Analysis > Render Graph Viewer** (confirm the menu string in your Editor if it has moved) on a Play Mode frame so you know what "stock" URP already looks like before you add a pass.
## Sources
- Write a render pass (6000.5): https://docs.unity.com/en-us/engine/6000.5/manual/render-pipelines/universal-render-pipeline/customizing-urp/render-graph/write-render-pass
- Inject a render pass (6000.5): https://docs.unity3d.com/6000.5/Documentation/Manual/urp/inject-a-render-pass.html