Nodes/radiance/◎ Radiance QC Pro
ComfyUI Node

◎ Radiance QC Pro

The automated check that catches what your eyeballs miss

By fxtdstudios·Created 7 months ago·Updated 9 days ago· 242
◎ Radiance QC Pro
  • image
  • overlay_image
  • qc_report_text
  • qc_report_json
  • status
black_threshold0.000
white_threshold1.00
overlay_opacity0.5
banding_threshold5.0
enable_focus_checkfalse
enable_artifacts_checktrue
enable_noise_checktrue
fail_on_errorsfalse

You've looked at a render for twenty minutes and decided it's fine. A QC tool looks at the same pixels for a tenth of a second and tells you 0.4% of the blacks are crushed, 1.1% of the whites are clipped past gamut, and there's a banding risk in the sky gradient. That's the whole pitch of ◎ Radiance QC Pro: it's the boring, repeatable, embarrassing-to-fail-on checks done automatically, so you stop trusting your tired eyes.

Radiance is FXTD Studios' 32-bit float color-science suite for ComfyUI, and QC Pro is its quality gate. If you're delivering frames to a client, a pipeline, or even just your own "no banding, ever" standard, you drop this after the VAE decode or the grade and read the verdict instead of squinting.

How it works

The node runs a batch of vectorized checks against your image tensor. Always on: level analysis (crushed blacks against black_threshold, clipped whites against white_threshold), gamut checking (pixels outside the [0,1] SDR range), and banding/posterization detection with a sensitivity dial. Then three optional checks you toggle on as you need them: noise, compression artifacts, and focus/sharpness analysis.

Each frame gets a PASS/FAIL per check, everything rolls up into an overall status, and you get the result in three flavors plus a picture. The code is structured around defects.analyze_levels, check_gamut, detect_banding, analyze_noise, detect_compression_artifacts, and analyze_focus - each returns per-frame percentages, and the report is built from them.

The inputs that matter

Only image is required. The three you'll actually touch:

  • black_threshold (default 0) - below this counts as crushed black. Leave it at 0 for SDR.
  • white_threshold (default 1) - above this counts as clipped white. If you're QCing scene-linear or HDR material where highlights legitimately sit above 1.0, raise it; a default 1.0 will flag every specular as a failure.
  • banding_threshold (default 5) - how aggressive banding detection is.

Then enable_focus_check, enable_artifacts_check, and enable_noise_check are the check toggles (focus is off by default since it's the priciest), and fail_on_errors makes any FAIL flip the whole status.

Outputs, in the order that matters: overlay_image (the image with issues highlighted in color, at overlay_opacity), qc_report_text (human-readable), qc_report_json (machine-readable - wire this straight into Radiance Export QC Report to write files), and status (the pass/fail string you can feed into logic).

How to install it

This node ships in the radiance pack, so installing the pack installs QC. Via ComfyUI Manager, search "Radiance". Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/fxtdstudios/radiance.git
cd radiance
pip install -r requirements_windows.txt   # or requirements_linux.txt / requirements_mac_silicon.txt

Restart ComfyUI, and QC Pro lives under FXTD Studios/Radiance/Analyze. On Linux, install libopenexr-dev first - QC itself doesn't need it, but the pack's IO nodes do, and it's easier to do it once.

Common issues

The honest caveat, straight from the pack's own docs: QC can only report what's in the data. A white_threshold of 1.0 on an 8-bit PNG that already clipped its sky in compression will scream "clipped whites" forever - and it's right, it's just reporting on damage you can't undo. If that annoys you, either lower the bar for SDR delivery or work from 32-bit/EXR sources so the highlights are actually there. Also: the default QC node will happily analyze any IMAGE you feed it, including 8-bit previews, so match the thresholds to what you're actually delivering.

A tool like this is overkill if you're posting to socials. If you're grading a shot that has to hold up next to real footage, it's the difference between "looks fine to me" and a pass/fail report you can hand someone.

CategoryFXTD Studios/Radiance/Analyze

Inputs (9)

NameTypeDefaultDescription
imageIMAGE
black_thresholdoptFLOAT0.000-0.1–0.1
white_thresholdoptFLOAT1.000.8–2
overlay_opacityoptFLOAT0.50–1
banding_thresholdoptFLOAT5.00–20
enable_focus_checkoptBOOLEANfalse
enable_artifacts_checkoptBOOLEANtrue
enable_noise_checkoptBOOLEANtrue
fail_on_errorsoptBOOLEANfalse

Outputs (4)

NameTypeDescription
overlay_imageIMAGE
qc_report_textSTRING
qc_report_jsonSTRING
statusSTRING