BLENDER • COMPOSITING AND POST-PROCESSING

Basic Compositing Nodes — Enable compositing and use basic nodes (render layers, composite, viewer)

Learn to harness Blender's node-based compositing pipeline to refine renders without re-rendering from scratch.

Historical Context & Motivation

Before digital tools reshaped the film industry, compositing was accomplished through painstaking optical processes — exposing multiple layers of film through a single print to combine elements such as actors, matte paintings, and miniatures into a unified frame. This technique, central to visual effects since the silent-film era, demanded extreme precision and expensive reshoots when errors occurred. The transition to digital compositing in the 1990s, spearheaded by applications like Shake and Nuke, introduced the concept of node-based workflows — a paradigm where each image operation is represented as a discrete, re-orderable processing block connected by data streams.

Blender's compositor emerged from this same lineage. Early versions of Blender offered no post-processing pipeline at all; artists had to export renders and manipulate them externally. The introduction of a built-in node-based compositor in version 2.42 (2006) was a watershed moment for the open-source 3D community, enabling artists to adjust color, blur, overlay, and recombine image data entirely within Blender's interface. Today, Blender's compositor has matured into a capable tool that, while not replacing professional packages for feature-film-scale pipelines, provides visual arts students and independent creators with a zero-cost, tightly integrated solution for post-processing their 3D renders.

1930s
Optical Compositing Era
Studios such as RKO and MGM refine optical printing techniques, combining multiple film exposures to create matte-painted backgrounds and in-camera effects for films like King Kong (1933).
1993
Digital Compositing Arrives
ILM pioneers digital compositing on Jurassic Park, demonstrating that computer-generated imagery can be seamlessly layered with live-action plates using software rather than optical printers.
2004
Node-Based Paradigm Matures
Apple's Shake and The Foundry's Nuke establish node-based compositing as the industry standard, replacing layer-stack approaches with flexible, non-destructive data-flow graphs.
2006
Blender 2.42 — Compositor Introduced
Blender's developers release the integrated Compositor, enabling artists to apply color grading, blurring, and multi-pass recombination without leaving the application.
2022–Present
Real-Time & GPU Compositing
Blender 3.5+ introduces GPU-accelerated compositing and real-time previews, drastically reducing iteration times and bringing the compositor closer to interactive creative tools like DaVinci Resolve's Fusion.

The central question this lesson addresses is deceptively simple: how do you activate Blender's compositing system and connect its three most fundamental nodes — Render Layers, Composite, and Viewer — to form the backbone of every compositing graph you will ever build? Mastering these three nodes is akin to learning how a camera, a canvas, and a light table function before you begin painting with light.

Core Principles & Definitions

Blender's compositor operates on a directed acyclic graph (DAG) model: data flows from source nodes through processing nodes and terminates at output nodes, always moving forward without looping back on itself. Every compositing session begins by enabling the compositor, which tells Blender to route the rendered image through your node graph before writing the final output. Understanding the foundational vocabulary — nodes, sockets, noodles, and passes — is essential before building even the simplest graph.

1

Nodes

Self-contained processing units that receive data through input sockets (left side) and emit results through output sockets (right side). Each node performs a single, well-defined operation — reading data, blending colors, applying a filter, or writing the final image.
2

Sockets & Noodles

Sockets are the colored dots on each node. Yellow sockets carry color (RGBA) data, gray sockets carry value (float) data, and purple sockets carry vector data. Noodles are the visible connections between sockets, representing data flowing downstream.
3

Render Layers Node

The primary input node in any compositing graph. It supplies the image data (and optional passes like depth, normal, and alpha) produced by Blender's renderer. Each view layer in your scene can be accessed through a separate Render Layers node.
4

Composite Node

The mandatory output node. Whatever image data reaches this node becomes the final saved render. Without a Composite node connected, Blender's compositor produces no output file, even if the rest of the graph is valid.
5

Viewer Node

A preview output node that displays its input in the Image Editor (set to Viewer Node) or as a Backdrop in the Compositor itself. It does not affect the saved file but is indispensable for iterating on your composite in real time.
KEY TAKEAWAY
Think of the compositing graph as a darkroom enlarger setup. The Render Layers node is the negative you place in the carrier — it is your raw source material. The Composite node is the photographic paper that records the final print, and the Viewer node is the test strip you use to preview exposure and contrast adjustments before committing to the final print. Any filters, gels, or dodging tools you add between negative and paper are equivalent to the processing nodes you will insert between Render Layers and Composite.

Visual Explanation — The Minimal Compositing Graph

The diagram below illustrates the simplest valid compositing graph in Blender. Data originates at the Render Layers node on the left, which exposes multiple output sockets representing different passes of the render. The primary Image output (a full-color RGBA buffer) is connected via noodles to both the Composite node and the Viewer node. This forking pattern — one source feeding two destinations — is the canonical starting point for all compositing work in Blender.

The Render Layers node (left, violet header) outputs several passes; the Image output (yellow socket) carries the combined RGBA render. Two noodles fork this data to the Composite node (top right, which writes the saved file) and the Viewer node (bottom right, which displays a live preview).

Notice the color coding of the sockets: the yellow circles on the Render Layers outputs and on the Composite and Viewer inputs signify that these connections carry full-color RGBA image data. Gray sockets (Alpha, Depth) carry single floating-point channels, while purple sockets (Normal) carry three-component vector data. This socket-type system prevents incompatible connections — you cannot accidentally plug a vector output into a color input without an explicit conversion node. The forking pattern where a single output feeds multiple inputs is perfectly valid and very common; it does not duplicate or slow the processing, because Blender evaluates the graph efficiently by caching intermediate results.

How Compositing Works Under the Hood

Although compositing in Blender is not driven by explicit mathematical equations that the user writes, the underlying pixel operations are governed by well-defined formulas. Understanding what happens to pixel data at each node helps you predict results and debug unexpected outcomes. Every pixel in the render is represented as a tuple of four floating-point values — Red, Green, Blue, and Alpha (RGBA) — typically in a linear color space with values ranging from 0.0 to arbitrarily high numbers when using HDR/EXR formats.

Pixel Data Flow

PIXEL REPRESENTATION
P(x, y) = (R, G, B, A) where R, G, B, A ∈ [0.0, ∞)
Each pixel P at coordinates (x, y) stores four channels. In standard 8-bit renders, values are clamped to [0, 1], but Blender's compositor works in 32-bit float internally, preserving HDR highlights above 1.0.
ALPHA-OVER BLEND (MOST COMMON COMPOSITE OPERATION)
C_out = C_fg × A_fg + C_bg × (1 − A_fg)
Where C_fg is the foreground color, A_fg is the foreground alpha, and C_bg is the background color. This formula, known as the Porter-Duff 'over' operation, is the mathematical foundation for layering transparent elements — the same operation that drives every compositing application in the VFX industry.

Render Passes as Separate Data Channels

When you expand the output sockets of the Render Layers node, you discover that Blender can decompose a single render into many discrete passes: Diffuse Color, Glossy Direct, Shadow, Ambient Occlusion, Emission, Depth (Z), Surface Normal, Object Index, and more. Each pass is essentially a separate image buffer that, when mathematically recombined (typically through addition and multiplication), reconstructs the original beauty render. This decomposition is powerful because it lets you selectively adjust, for instance, only the specular highlights or only the shadow density, without touching other aspects of the image. The recombination follows the additive light transport equation:

ADDITIVE PASS RECOMBINATION
Image = Diffuse_Direct + Diffuse_Indirect + Glossy_Direct + Glossy_Indirect + Emission + Environment
Each term represents one render pass. By adjusting the multiplier on any individual term before summing, you gain per-component control over the final look — brightening reflections, darkening shadows, or boosting emissive elements independently.
⚠️ Linear vs. sRGB Color Space
Blender's compositor processes all pixel data in linear color space, where doubling a value genuinely doubles the physical light intensity. The conversion to the perceptual sRGB curve (which your monitor displays) happens only at the final display or file-write stage. Mixing up these spaces — for example, applying a color correction designed for sRGB data in a linear pipeline — produces washed-out or over-saturated results. Always verify your Color Management settings (under Render Properties) to ensure consistency.

Detailed Breakdown of Each Node

Each of the three foundational nodes has specific sockets, settings, and behaviors that merit close examination. The table and diagram below provide a structured reference for the inputs, outputs, and key properties of the Render Layers, Composite, and Viewer nodes.

Comparison of the three foundational compositing nodes
NodeCategoryKey InputsKey OutputsCritical Settings
Render LayersInputNone (source node)Image, Alpha, Depth, Normal, UV, Vector, Object/Material Index, all light passesScene selector, View Layer selector, Use Alpha toggle
CompositeOutputImage (RGBA), Alpha (float), Z (float)None (terminal node)Use Alpha checkbox (determines whether alpha is saved to file or ignored)
ViewerOutput (Preview)Image (RGBA), Alpha (float), Z (float)None (display only)Tile Order setting (for progressive preview); active viewer is selected by clicking
Left: step-by-step activation flow — open the Compositing workspace, enable Use Nodes, add a Viewer node, and connect the graph. The dashed panel (lower left) shows how enabling individual render passes in the View Layer Properties panel adds corresponding output sockets to the Render Layers node.

The flowchart above traces the exact sequence of actions a new user performs. Step 2 is the single most commonly overlooked action: the Use Nodes checkbox in the Compositor header bar must be enabled or Blender will ignore the entire node graph and simply output the raw render. Once enabled, Blender automatically creates a default Render Layers node and a Composite node connected together. Adding a Viewer node (Add → Output → Viewer, or Ctrl+Shift+Click on a node with the Node Wrangler add-on) completes the foundational trio. The dashed panel on the lower left of the diagram reminds you that additional passes — Depth, Normal, Diffuse Direct, and so on — must be activated in the View Layer Properties panel before they appear as sockets on the Render Layers node.

Worked Example — Setting Up a Basic Composite

Let us walk through a complete, realistic scenario: you have modeled and lit a ceramic vase in Blender and rendered it with Cycles. After rendering, you decide the image needs a slight color grade (desaturation), a vignette, and a final preview before saving. We will build this entirely in the compositor using only the basic nodes, adding minimal processing nodes along the way.

Compositing a Ceramic Vase Render
1
Step 1 — Enable the CompositorSwitch to the Compositing workspace via the tab bar at the top of the Blender window. In the Compositor editor header, check the Use Nodes checkbox. Blender automatically generates a Render Layers node connected to a Composite node.
A default two-node graph appears: Render Layers → Composite.
2
Step 2 — Add a Viewer NodePress Shift+A → Output → Viewer to add a Viewer node. Connect the Image output of the Render Layers node to the Viewer's Image input. Enable Backdrop in the Compositor header (or open an Image Editor and set it to 'Viewer Node') to see the preview.
The rendered image now displays as a backdrop or in the Image Editor, confirming the pipeline is active.
3
Step 3 — Insert a Hue/Saturation Node for DesaturationPress Shift+A → Color → Hue Saturation Value. Place this node between the Render Layers node and the Composite node by dropping it onto the existing noodle (Blender auto-inserts it). Set the Saturation slider to 0.85 to pull approximately 15% of the color saturation, giving the vase a subtly muted, editorial look. Also connect the output of this node to the Viewer node so you can preview the change.
Graph is now: Render Layers → Hue/Sat/Value → Composite, with a branch to Viewer.
4
Step 4 — Add a Vignette with Ellipse Mask and MixAdd a Mask → Ellipse Mask node (Shift+A → Mask → Ellipse Mask). Set Width and Height to approximately 0.9 to leave a soft border. Add a Filter → Blur node after the mask and set it to about 200 px in both X and Y to soften the mask edge. Now add a Color → Mix node set to Multiply. Plug the Hue/Sat output into the top Image socket of Mix, and the blurred ellipse mask into the Factor (or second Image) socket. This darkens the edges of the frame.
The Viewer now shows the desaturated render with a smooth vignette darkening the corners.
5
Step 5 — Render and Verify the Final OutputPress F12 to re-render (or, if the render is already cached, press Ctrl+F12 for animation render). Blender processes the scene, pipes the result through the compositor graph, and delivers the composited image to the Composite node. Save the output via Image → Save As in the Image Editor. Verify that the Composite node's 'Use Alpha' is set appropriately: checked if you want transparency preserved in PNG, unchecked if saving to JPEG.
Final output: a desaturated, vignetted render saved to disk, with the Viewer node confirming the result in real time.
💡 Node Wrangler Tip
Enable the Node Wrangler add-on (Edit → Preferences → Add-ons → Node Wrangler). With it active, Ctrl+Shift+Click on any node instantly routes that node's output to a Viewer node, allowing you to inspect intermediate results at any point in the graph without manually rewiring.

Strengths, Limitations & Comparisons

Blender's built-in compositor occupies a specific niche in the broader ecosystem of compositing tools. It excels at tight integration with the 3D pipeline — render passes flow directly into the node graph without any export/import step — but it has inherent limitations when compared to dedicated compositing applications. The following table contextualizes Blender's compositor against two industry-standard alternatives.

Blender Compositor vs. Industry Alternatives
CriterionBlender CompositorDaVinci Resolve FusionThe Foundry Nuke
CostFree and open sourceFree tier available; Studio ≈ $295Commercial license ≈ $5,000+/year
3D IntegrationSeamless — same application, no I/O overheadSeparate import required; 3D workspace availableStrong EXR/multi-pass support; separate application
PerformanceImproving; GPU compositing added in 3.5+GPU-accelerated; real-time on moderate graphsOptimized for large-scale VFX; multi-threaded
Node Variety~70 built-in nodes; limited tracking & roto~250+ nodes including advanced 3D, particles~400+ nodes; extensive plugin ecosystem
Best ForQuick post-process tweaks on 3D rendersIntegrated color grading & compositingFeature-film VFX pipelines
🔍 CONTEXT
Blender's compositor is not trying to replace Nuke on a Marvel film; rather, it is designed to handle the 80% of post-processing tasks that a 3D artist encounters during everyday production — color correction, glare, depth-of-field adjustments, lens distortion, and pass recombination — without ever leaving the application. For independent artists, students, and small studios, this integrated approach eliminates costly software licenses and complex file-transfer workflows, allowing rapid creative iteration directly on top of the render engine's output.

Connection to Advanced Compositing Techniques

The three basic nodes you have learned — Render Layers, Composite, and Viewer — form the skeleton upon which every advanced compositing technique is built. As you progress, you will encounter increasingly sophisticated node categories: filter nodes (Blur, Glare, Denoise), color nodes (Color Balance, Curves, Color Ramp), converter nodes (Separate/Combine RGBA, Map Range), and vector nodes (Map UV, Normal). All of these simply plug into the pipeline between the Render Layers source and the Composite/Viewer outputs.

Progression from Basic to Advanced Compositing
Concept LevelBasic (This Lesson)IntermediateAdvanced
Node Graph Complexity3 nodes (Render Layers, Composite, Viewer)10–20 nodes with branching and merging streams50+ nodes, node groups, multiple render layers, scene references
Typical OperationsPass-through preview; single color adjustmentMulti-pass recombination, glare, depth-based blur, maskingCryptomatte isolation, multi-scene compositing, procedural lens effects, motion-vector blur
Render Pass UsageCombined image onlyZ-depth, Normal, Ambient OcclusionAll light passes, Object/Material Index, Cryptomatte
File FormatPNG / JPEG (8-bit)OpenEXR (16-bit half-float)Multi-layer EXR (32-bit float per channel)

Looking ahead, you should also be aware that Blender's geometry nodes, shader nodes, and compositing nodes share the same underlying node-system architecture. Skills you develop in the compositor — understanding data flow, socket types, and node grouping — transfer directly to material creation and procedural modeling. Additionally, Blender's development team is actively working on a real-time compositor that evaluates the node graph during viewport rendering, blurring the line between live 3D interaction and post-production. Mastering the foundational trio now positions you to exploit these capabilities as they mature.

Practice Problems

PROBLEM 1CONCEPTUAL
Explain the functional difference between the Composite node and the Viewer node. Why does Blender include both in the compositor, and what would happen to your workflow if only the Composite node existed?
PROBLEM 2BASIC
You open Blender's Compositing workspace and see an empty editor with no nodes visible. List, in order, the exact steps you must take to create a minimal working compositing graph that both saves the render and displays a live preview.
PROBLEM 3INTERMEDIATE
You have enabled the Depth (Z) and Normal passes in View Layer Properties. After rendering, you notice that the Render Layers node shows new output sockets, but when you connect the Depth output to a Viewer node, the image appears almost entirely white. Diagnose this issue and describe how to fix the preview so you can see meaningful depth information.
PROBLEM 4APPLIED
You are compositing an architectural interior render that has two view layers: 'Room' (containing walls, floor, ceiling, and furniture) and 'Window_Light' (containing only the window glass and exterior environment visible through it). Describe, using specific node names and connections, how you would set up a compositor graph that allows you to independently adjust the brightness of the window light before combining it with the room layer, then output the combined result.
PROBLEM 5CRITICAL THINKING
Blender's compositor processes the node graph after the render is complete, operating on cached pixel buffers. Given this architecture, analyze why Blender's compositor is inherently non-destructive and explain the implications for an iterative creative workflow. Then, propose a scenario where the compositor's post-render-only evaluation model becomes a limitation, and suggest how you might work around it.

Lesson Summary

Blender's node-based compositor transforms a static render into a flexible, non-destructive creative workspace. Activating it requires enabling the Use Nodes checkbox in the Compositing workspace, which generates the default Render LayersComposite connection. The Render Layers node is the source of all image data; it exposes the combined beauty render plus optional passes (Depth, Normal, Diffuse, Glossy, and more) that can be individually manipulated. The Composite node is the terminal output that determines what is written to disk, while the Viewer node provides an indispensable real-time preview for iterative adjustments.

Data flows through the graph via color-coded sockets and noodles — yellow for RGBA color, gray for float values, purple for vectors — ensuring type safety across the pipeline. All processing occurs in linear color space at 32-bit float precision, preserving HDR information. Between the Render Layers source and the Composite/Viewer outputs, you can insert any number of processing nodes — color corrections, filters, masks, and blending operations — to refine the final image without re-rendering. This non-destructive, post-render workflow is the conceptual foundation upon which all advanced compositing in Blender is built.

Varsity Tutors • Blender • Basic Compositing Nodes — Enable compositing and use basic nodes (render layers, composite, viewer)