Batch Brightness Curve (U-Shape) (CRT)
A U-shaped fade across an image batch
- images
- IMAGE
If you're generating video frame-by-frame in ComfyUI - a Wan or LTX batch, an AnimateDiff sequence, anything that comes out as a stack of IMAGE tensors rather than a single picture - you eventually want to fade brightness in and out across that stack rather than leaving every frame flat. This node does exactly that in one pass: brightness starts at one level, eases toward a different level at the exact center of the batch, and eases back out toward a third level by the last frame.
What it's for
Think fade-from-black-into-a-scene-then-fade-back-out, applied as a brightness curve across a whole batch rather than something you'd otherwise fake with a dozen separate ImageBlend nodes and manual per-frame masks. It's built for video/animation batches specifically - the "U-shape" in the display name refers to the curve's classic parabolic dip (or peak) at the midpoint, not a one-directional fade.
The node treats your batch as a timeline: frame 0 gets start_level, the middle frame gets mid_level, the last frame gets end_level, and everything in between is interpolated along a curve whose steepness you control.
The inputs and outputs that matter
images- requiredIMAGEbatch input.start_level(default 0, range 0–5) - "Brightness at the very first frame," per the node's own tooltip.mid_level(default 1, range 0–5) - "Brightness at the exact center of the video."end_level(default 0, range 0–5) - "Brightness at the very last frame."q_factor(default 2, range 0.1–10) - the curve shape. Per the node's tooltip: "1.0=Linear, 2.0=Parabolic (Smooth). Higher values = Stays closer to Mid Level longer." In practice, lowq_factorgives you a sharp, quick fade in and out; highq_factorholds the mid-brightness plateau for most of the clip and only fades right at the edges.
Note the levels default to 0/1/0 - a fade-from-black-to-normal-back-to-black - which is the classic use case, but nothing stops you from setting start_level and end_level to something above 1 for a flash/overexposure effect instead.
Output: a single IMAGE batch, same shape as the input.
Installing it
One of twelve nodes in CRT-Nodes' CRT/Image category (alongside things like Chroma Key Overlay and Percentage Crop Calculator), part of PGCRT's broader CRT-Nodes pack.
ComfyUI Manager - search CRT-Nodes, install, restart.
Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/PGCRT/CRT-Nodes.git
pip install -r requirements.txt
Restart ComfyUI. This is batch-tensor math on top of the pack's base numpy/opencv stack - nothing extra to install specifically for it.
Common issues
- Fade looks too abrupt or too gradual - that's
q_factor, not the level values. If your fade snaps in too fast at the start and end, raiseq_factorso the curve holds the mid-level plateau longer; lower it for a more even, linear fade across the whole clip. - No visible change at all - double-check
imagesis actually a multi-frame batch and not a single image; a batch of one frame has no "start," "middle," and "end" to interpolate between, so the curve has nothing to do. - Brightness clips or washes out at the peak -
mid_level(orstart_level/end_levelif you've pushed them above 1) can genuinely overexpose the frame since the range goes up to 5, well past a normal 0–1 brightness multiplier. Keep values near 1 unless you're deliberately going for a blown-out flash effect. - Applied to a batch that isn't actually sequential/temporal - this node assumes "first frame, middle frame, last frame" means something in time. If you're running it on a batch of unrelated images (say, four different seeds of the same prompt), the U-shape will still apply mechanically by index, but it won't read as a meaningful fade since there's no real timeline underneath it.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| start_level | FLOAT | 0.000–5 | Brightness at the very first frame. |
| mid_level | FLOAT | 1.000–5 | Brightness at the exact center of the video. |
| end_level | FLOAT | 0.000–5 | Brightness at the very last frame. |
| q_factor | FLOAT | 2.00.1–10 | Curve Shape. 1.0=Linear, 2.0=Parabolic (Smooth). Higher values = Stays closer to Mid Level longer. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |