Grain
Adds animated film grain noise to an image.
Category: Effects Menu path: Effects > Grain
Ports
| Port | Type | Direction | Description |
|---|---|---|---|
in | imageRgba16f | input | Input image |
out | imageRgba16f | output | Image with grain applied |
Parameters
| Param | Type | Default | Description |
|---|---|---|---|
amount | scalar | 0.3 | Grain intensity. 0 = no grain, 1 = very heavy grain. Keyframeable. |
size | scalar | 1.0 | Grain particle size in pixels. 1 = per-pixel grain, higher values produce coarser clumps. Keyframeable. |
monochrome | boolean | true | When true, grain is the same on all channels (luminance noise). When false, each RGB channel gets independent noise (chromatic grain). |
speed | scalar | 1.0 | Animation speed. 0 = static grain (same every frame), 1 = normal, higher = faster variation. |
Expose Channels
When enabled (E button on node header), adds input ports that override params via edge connections:
| Port | Type | Overrides |
|---|---|---|
amount_in | scalar | amount |
size_in | scalar | size |
How It Works
The shader generates hash-based white noise seeded by the quantized pixel position and a time-varying seed derived from the current frame and speed parameter. Noise is added to the unpremultiplied RGB channels (scaled by amount), then repremultiplied with the source alpha. Transparent pixels stay transparent -- grain only appears where the source has content.
When monochrome is enabled, a single noise value is used for all three channels, producing neutral gray grain. When disabled, three independent noise values create color speckle.
The grain pattern changes every frame when speed > 0. The cache key includes comp_frame for animated grain, ensuring each frame produces unique noise.
Usage Examples
Basic: Film-like grain overlay
- Add a Grain node as the last effect before Output
- Set amount to 0.15 and monochrome to true
- Adds a subtle analog film texture to the image
Creative: Heavy chromatic grain
- Set monochrome to false for colored noise
- Increase amount to 0.5 and size to 2.0
- Creates a gritty, lo-fi video aesthetic
Advanced: Grain that fades with brightness
- Use a Levels node upstream to isolate dark areas
- Feed the result into
amount_invia expose channels - Grain appears only in shadows (where film grain is most visible)
Tips
- Apply grain after all other effects -- it should be the last step before Output
- Amount values of 0.1-0.2 add subtle texture; above 0.5 is very aggressive
- Set speed to 0 for static grain (same pattern every frame), useful for stills or freeze frames
- Grain size above 3-4 starts looking like blocky artifacts rather than film grain
Related Nodes
- Noise -- procedural noise generator (not applied to an image, generates a full texture)
- Blur -- apply before grain to create a softer base for the grain to sit on
- ColorCorrect -- adjust contrast/saturation alongside grain for a complete film look