Nodes/radiance/◎ Radiance Image To Float32
ComfyUI Node

◎ Radiance Image To Float32

Get your image out of 8-bit jail

By fxtdstudios·Created 7 months ago·Updated 9 days ago· 242
◎ Radiance Image To Float32
  • image
  • image
normalizefalse
source_gamma1.00

Every Radiance workflow worth building starts in the same place: an image in float32. Standard ComfyUI images are clamped, 8-bit-ish tensors where 1.0 is white and there is nowhere to go above it - fine for display, useless for HDR work. ImageToFloat32 is the pack's front door: it converts your image to 32-bit float so the whole chain downstream can carry super-whites and negative values without anyone clamping them.

It's a two-knob node, and the source notes it's been through real bugfixes - the normalize flag was fixed to work per-frame (the old version divided the whole batch by the brightest pixel in any frame, so one hot frame would crush the rest), and source_gamma was actually wired up in v2.1 after being declared-but-unused. That's the level of care to expect.

The inputs

  • image - required. Whatever you have; it'll be widened to fp32.
  • source_gamma (0.1–4, default 1.0) - the gamma of your source, used to linearize it. 1.0 = assume already linear, 2.2 = sRGB-ish, 2.6 = DCI. If your source is a typical sRGB generation, 2.2 is the honest setting; if it's already linear (a VAE decode or an EXR), leave it at 1.0.
  • normalize (default false) - per-frame rescale so data sits in [0,1]. Leave off for true HDR work (you don't want to squish your highlights into a range), turn on when your upstream node handed you absurdly spread values and you just want to see them.

Output: a single image, float32, unclamped.

The honest limits

This node is the entry point, not the magic. It converts precision - the values that exist come through in full fp32 - but it cannot add range. If your source is an 8-bit PNG, you get a float32 version of the same 8 bits of information; the banding in the sky is already baked in. That's the pack's own standing warning, and it's the single most important thing to internalize about Radiance: float gives you headroom to grade, not detail to recover. For genuine HDR, feed it EXR or a float VAE output.

It's also the right node to drop before any of the pack's grading (Float32ColorCorrect, the Grade nodes) or analysis tools (HDRHistogram), because those read float data properly. In fact, for most of the color nodes the conversion happens implicitly - but making it explicit keeps the intent visible in the graph, and it's the one place you set source_gamma once for the whole chain.

Install

Part of Radiance - ComfyUI Manager → search Radiance, or:

cd ComfyUI/custom_nodes
git clone https://github.com/fxtdstudios/radiance.git
cd radiance
pip install -r requirements.txt

Restart. Under FXTD Studios/Radiance/Color.

CategoryFXTD Studios/Radiance/Color

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
normalizeoptBOOLEANfalseNormalize each frame independently to [0,1] range.
source_gammaoptFLOAT1.000.1–4Source gamma to linearize. 1.0 = already linear, 2.2 = sRGB-ish, 2.6 = DCI.

Outputs (1)

NameTypeDescription
imageIMAGE