Affine Bayer Noise Options
Ordered dithering as a mask, one knob
- noise_options
Bayer is the ordered-dithering pattern - the structured dot grid printers used before halftones got fancy. In WAS Affine it appears as a bayer mask pattern, and Affine Bayer Noise Options is the single-knob node that tunes it, outputting a noise_options DICT.
The knob
- bayer_size (default 2) - the Bayer matrix size. And here's the author's own advice in the tooltip, which is worth quoting: use small values, like 2, "to act as fine noise instead of obvious dithering." A 2x2 Bayer threshold matrix produces a fine, ordered texture that reads as subtle grain; bigger sizes (4, 8, 16) produce the visible dither-grid look.
Output: noise_options DICT → noise_options input of Latent Affine, an affine sampler, or Affine Pattern Noise.
When you'd use it
The interesting thing about a Bayer mask is that it's ordered - every pixel's threshold comes from a fixed matrix, so the mask is deterministic and evenly distributed, not random. That makes it a good "safe" geometric noise: fine bayer gives you texture coverage without the clumping that pure random noise tends to produce. If you want the affine effect to touch everything evenly at a fine grain - a uniform "bump detail" across the whole frame - small bayer is a reasonable pick. At larger sizes it leans stylized/retro, more of an aesthetic choice.
There's honestly not much else to say about a one-input node. The real tuning lives in what you do after the mask: pair it with blur from the common options to soften the grid, or with mask_strength to decide how hard the affine bites.
Installing
Part of WAS Affine by WASasquatch. ComfyUI Manager → Install Custom Nodes → search "WAS Affine" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was_affine
Restart ComfyUI. ComfyUI 1.0.0+, torch and numpy.
Common issues
At larger bayer sizes the ordered grid becomes visible in the output - if you see a repeating dot matrix in your renders, that's the mask, not your model. Shrink bayer_size back toward 2, or blur it. And as with all the options nodes: no wire to an affine node's noise_options, no effect. The Super Options node also carries bayer_size if you'd rather not add this one to the graph.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| bayer_size | INT | 22–64 | Bayer matrix size. Use small values (e.g., 2) to act as fine noise instead of obvious dithering. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| noise_options | DICT | — |