◎ Radiance DNA Writer
Stamp your renders with an invisible, lossless signature
- image
- image
- success
- status
Every ComfyUI image carries its workflow in PNG text chunks - until someone re-encodes it, at which point the workflow is gone and so is your provenance. Radiance DNA Writer is the pack's answer to that fragility: it signs an image by hiding metadata inside the pixel values themselves, encoded into the least-significant bits of the floats. The signature is invisible, lossless, and survives things that kill PNG chunks, because it isn't in a sidecar or a chunk - it's in the data.
That's an unusual and genuinely clever trick, and it's worth understanding before you trust it: float32 values have 23 bits of mantissa, and the lowest few of those bits carry almost no perceptual information. Flip them and the image looks identical, but you've carved out room to store text. Radiance's implementation is careful about one thing in particular - it "preserves HDR special values" like infinities and NaNs that would break a naive bit-twiddling encoder. For a pack that markets itself on 32-bit float data, that care is the difference between a parlor trick and something you can put in a real pipeline.
What you're setting
- image - the frames to sign.
- project, artist, notes - the metadata payload. Project and artist are one-line strings, notes is multiline. This is what gets embedded; the Reader and Validator pull it back out.
Outputs: image (the signed frames, ready to save - the signature rides along when you write the file), success (a BOOLEAN confirming the sign worked), and status (a human-readable string with the result, for wiring to a text preview or a QC branch).
Where it fits in a workflow
Sign early, verify late. The intended pattern: put DNA Writer after your grade or at the end of your render chain, stamp project/artist/notes in, then use DNA Validator downstream as a QC gate - it can even block unsigned images if you set require_signed. It's also the provenance play: if you distribute frames, the Reader tells you later exactly which project, artist, and notes a frame came from, regardless of filename or folder. That's the kind of thing that saves a real argument on a shared project.
The honest caveats
It's a convention, not a standard. A DNA signature means something to Radiance's own nodes and nothing to anything else, and it's not a security feature - anyone who knows the scheme could read or forge it. And it only survives while the data stays float: the moment your signed image passes through an 8-bit re-encode, the LSBs are destroyed and the signature silently vanishes. That's not a bug, it's the physics of the trick, and it means the Writer belongs on the float side of your pipeline, not after a JPEG save. The pack's own community reception was mixed on its bigger claims, but the DNA trio is one of the more original ideas in the pack and behaves as documented.
Install
In fxtdstudios/radiance - Manager search "Radiance", or:
cd ComfyUI/custom_nodes
git clone https://github.com/fxtdstudios/radiance.git
cd radiance
pip install -r requirements_linux.txt # or windows/mac_silicon
Restart after; Linux needs libopenexr-dev before pip, and the heavy dependency set (OpenEXR, OpenColorIO, colour-science, transformers) makes first boot slow.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| projectopt | STRING | — | |
| artistopt | STRING | — | |
| notesopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| success | BOOLEAN | — |
| status | STRING | — |