Nodes/Lumina_NIVR2/SeedVR2 Text Conditioning
ComfyUI Node

SeedVR2 Text Conditioning

SeedVR2 Text Conditioning, decoded

By Luminatrixx·Created about a month ago·Updated about a month ago· 2
SeedVR2 Text Conditioning
    • positive
    • negative

    The name is a lie, and in the best way. SeedVR2 Text Conditioning has no prompt field, no CLIP model, nothing you can type into - because SeedVR2 doesn't work that way. ByteDance's one-step restoration model was trained with two fixed "quality anchor" embeddings, one for the positive direction and one for the negative, and they're constant for every image you'll ever run through it. This node just loads those two fixed tensors and hands them to the graph as standard CONDITIONING. It's the smallest node in the Luminatrixx/NIVR2 pack, and it exists to satisfy a wiring requirement rather than to give you control.

    Why it exists

    If you've built a SeedVR2 graph with native nodes, you've hit the awkward part: KSampler expects conditioning on its positive and negative inputs, but there's no text encoder anywhere in this pipeline. The pack solves it the same way the original seedvr2_videoupscaler did - with a pair of pre-computed embedding files, pos_emb.pt and neg_emb.pt. The node loads them and presents them as CONDITIONING, so wiring-wise it behaves like a CLIPTextEncode you never need to touch. Instead of tokens going in, you just get positive and negative out, ready to connect to SeedVR2 DiT Settings or straight into a KSampler.

    It's genuinely two outputs and nothing else:

    • positive - the fixed positive quality-anchor embedding.
    • negative - the fixed negative one.

    No inputs, no settings, no model selection. That's the whole node.

    What to wire it into

    In the pack's intended graph, both outputs go into SeedVR2 DiT Settings, which repackages them (and attaches your condition latent) for KSampler. If you're building your own graph you can also feed them directly into a native KSampler's positive/negative sockets - the tensor shape is standard conditioning, it doesn't care where it came from.

    One quiet detail that explains a lot: at cfg = 1.0, the setting the one-step recipe demands, ComfyUI's sampler skips evaluating the negative branch entirely. So in the stock workflow the negative embedding is effectively never used. That's expected behavior, not a bug - the original wrapper hardcoded cfg = 1.0 and the negative branch never fired there either. Wire it anyway, because the DiT Settings node and KSampler both expect the connection to exist, but don't spend any time agonizing over what the negative "does."

    Install

    Part of the standard pack install:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Luminatrixx/NIVR2
    python -m pip install einops opencv-python numpy
    

    Restart, then look in the pack's assets/ folder. The two .pt files are tiny, and the node will try to download them automatically on first use if they're missing, with a couple of fallback mirrors (the same fixed-conditioning assets distributed by the numz and AInVFX SeedVR2_comfyUI repos, per the pack's credits). That auto-download is the one thing that can go wrong, and it's the entire troubleshooting section for this node.

    Troubleshooting

    • An error about pos_emb.pt / neg_emb.pt not being found, or a failed download - your environment blocked the runtime download, or you're offline. The fix is manual and boring: grab the two files and drop them into the pack's assets/ folder yourself before launching. The README calls this out explicitly, so if you're on a locked-down setup, just do it preemptively and skip the surprise.
    • The node "does nothing" - that's correct. It has no knobs. If your output looks wrong, the problem is upstream in the KSampler settings or the condition latent, not this node.

    This is the node people most often confuse for something with a text field. If you came here expecting to prompt SeedVR2 - don't. The model is SR-only, deliberately; the "text" is a fixed quality anchor that's the same for every image. Once you accept that, this is the most frictionless node in the pack: install once, wire once, never look at it again.

    CategoryLumina NIVR2

    Inputs (0)

    No inputs

    Outputs (2)

    NameTypeDescription
    positiveCONDITIONING
    negativeCONDITIONING