Scriptable Renderer Feature (commonly known as Render Feature) is a powerful framework for extending the rendering pipeline of Unity URP (Universal Render Pipeline) using C# scripts and preset settings, and dynamically inserting your own custom drawing process (drawing pass) at any timing in the pipeline.
Real-world analogy: Basic pizza baking process and ``additional injection of your favorite toppings''
The mechanism of Render Feature can be compared to ``The process of inserting your favorite ``additional toppings (custom drawing path)'' in the middle of the process of baking a ready-made pizza (default drawing flow)''.
- Conventional (default drawing only): The pizza oven (URP pipeline) follows strict fully automatic rules at the time of shipment from the factory. href="/article/term-post-processing">post-processing)" will be executed non-stop. Manually interjecting anything in the middle is completely prohibited.
- Expansion with Render Feature: A "special additional topping station (Render Feature)" can be legally and safely installed in the middle of the pizza oven line. It detects the line "after applying the sauce and just before placing the cheese (for example, after drawing an opaque object and before drawing a semi-transparent object)" and inserts "special basil paste (outline drawing or additional drawing pass for mosaic buffer)" to apply it. This allows you to create a perfectly customized original pizza (special drawing) without breaking any of the basic pizza baking rules (URP).
Figure: Render injecting a custom pass into the gap between the URP default render pass How Features work
How they work and how they work
Register them in the "Renderer Features" list at the bottom of the URP renderer (Universal Renderer, etc.) settings asset. The registered Feature generates a ScriptableRenderPass defined in the C# class, and is registered in the "render pass execution queue" via the pipeline's EnqueuePass method. Rendering timing (after opaque drawing, after post processing, etc.) can be precisely specified using the RenderPassEvent enumeration type in C#.