Nodes/ComfyUI-BCNodes/PostFx Custom Look
ComfyUI Node

PostFx Custom Look

Your own grade, or one knob on top of a stock

By 0xBeycan·Created 25 days ago·Updated 5 days ago· 2
PostFx Custom Look
  • look
  • look
◄temp0.00►
◄tint0.00►
◄exposure0.00►
◄contrast0.00►
◄vibrance0.00►
◄saturation1.00►
◄grain0.000►
◄grain_size1.5►
◄vignette0.00►
◄halation0.00►
◄clarity0.00►

Film presets are a starting point, not a finish. This is where you make one yours: eleven sliders covering the standard photographic moves, and an optional input so you can apply them on top of a stock instead of from scratch.

What it is

Eleven FLOAT controls - temperature, tint, exposure, contrast, vibrance, saturation, grain, grain size, vignette, halation, clarity - and a look output on the POSTFX_LOOK socket. With a look connected, the node treats that look as its base.

Here's the rule that makes it useful, in the author's own words: only the controls you move off neutral override it; the rest pass through. So a theme plus one moved slider changes exactly that one thing. Everything else about the stock survives.

Neutral is not zero for all of them, and the defaults tell you which is which: saturation defaults to 1 (unchanged), grain_size to 1.5 px, and everything else to 0. Leave a slider where it is and it doesn't touch the incoming look.

What each control actually does

| Control | Range | What it moves | |---|---|---| | temp | −1 to 1 | White balance. Above 0 warm, below 0 cool | | tint | −1 to 1 | Above 0 magenta, below 0 green | | exposure | −3 to 3 | Stops of light | | contrast | 0 to 1 | S-curve strength, not a levels stretch | | vibrance | −1 to 1 | Lifts low-saturation pixels and protects skin | | saturation | 0 to 2 | Uniform saturation - the blunt one | | grain | 0 to 0.1 | Luma grain amount | | grain_size | 0.5 to 4 | Grain size in px at a 1024 px long edge | | vignette | 0 to 1 | Edge darkening | | halation | 0 to 2 | Highlight bloom - the red-ish glow around blown highlights | | clarity | −1 to 1 | Local contrast; negative softens |

Two of those are worth the price of admission on their own. vibrance over saturation is the standard photographic choice, and the reason is in the tooltip: it lifts low-saturation pixels and leaves skin alone, whereas pushing saturation turns every complexion orange.

And halation is the effect that makes a flash photo read as film rather than as a phone snapshot - night shots with blown highlights and a soft bloom around them. Pair it with condition = night_flash on Apply and a little grain, and you've got the look that half the amateur-film prompting advice in the KB is trying to describe in words.

How it chains

Every look node in this pack has an optional look input, so order is yours:

PostFx Theme (portra_400) -> PostFx Custom Look (grain 0.03, halation 0.4) -> PostFx Apply

or the standalone version, with nothing wired in, where the node builds a look from a neutral base and every slider you moved is the whole grade.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/0xBeycan/ComfyUI-BCNodes
pip install -r ComfyUI-BCNodes/requirements.txt

postfx is the requirement; without it the pack still loads and only the PostFx nodes are absent. With ComfyUI Manager, search ComfyUI-BCNodes and install - it handles the pip step. Restart, reload the tab, look under BCNodes/postfx.

Where people get burned

Neutral is passthrough, not subtraction. Going by the node's own rule - only controls moved off neutral override the base - you can't use this to remove something an incoming look added, because leaving a slider alone hands it through untouched. If you need to dial a stock's texture down rather than add to it, that's strength on Apply.

grain_size does nothing until grain is above 0. The default of 1.5 is a size waiting for an amount.

Watch the sliders that interact. contrast and clarity both push local contrast; vibrance and saturation both push colour. Move one at a time or you'll end up with a look you can't explain and can't undo.

Pixel-size controls scale with the image. grain_size is quoted at a 1024 px long edge, so grain that reads fine on a 1024 still disappears on a 4K upscale. If grain keeps vanishing, size up rather than amount up.

CategoryBCNodes/postfx

Inputs (12)

NameTypeDefaultDescription
tempFLOAT0.00-1–1White balance: >0 warm, <0 cool.
tintFLOAT0.00-1–1>0 magenta, <0 green.
exposureFLOAT0.00-3–3Stops of light.
contrastFLOAT0.000–1S-curve contrast strength.
vibranceFLOAT0.00-1–1Lifts low-sat pixels, protects skin.
saturationFLOAT1.000–2Uniform saturation (1 = unchanged).
grainFLOAT0.0000–0.1Luma grain amount.
grain_sizeFLOAT1.50.5–4Grain size (px @ 1024 edge).
vignetteFLOAT0.000–1Edge darkening amount.
halationFLOAT0.000–2Highlight bloom strength.
clarityFLOAT0.00-1–1Local contrast; <0 softens.
lookoptPOSTFX_LOOKBase look to override on top of (e.g. a theme).

Outputs (1)

NameTypeDescription
lookPOSTFX_LOOK—