星光2.6|视频超分(v2.6.0-rh1)
It says Starlight 2.6 on the box; the engine inside is SeedVR2
- image
- dit
- vae
- IMAGE
Let's get the branding out of the way first, because it will save you a confused hour. This node's Chinese display name is 星光2.6|视频超分 - "Starlight 2.6, video super-resolution" - but open the package and every file inside says SeedVR2. What you've installed is ByteDance's one-step diffusion restoration model, forked from the community-standard numz/ComfyUI-SeedVR2_VideoUpscaler nodes and re-branded for RunningHub's GPU-cloud workflow market. Not a scam - the upscaling is real and genuinely good - it just means every bit of SeedVR2 wisdom you already have transfers directly. You're not learning a new model; you're learning a new wrapper around the best-known one.
What it's actually for
This is the detail-adding kind of upscaling, not the "make it bigger" kind. Feed it a low-resolution clip and it runs a diffusion pass over the latent space to invent plausible detail - fabric weave, pores, fine texture - the way a Lanczos or ESRGAN pass never can. It shines on video that's genuinely low-res: SeedVR2 consistently beats FlashVSR on the big lifts, like 256px to 1024px. For a source that's already decent it's overkill - a cheap pixel upscaler is faster and can't hallucinate.
The uncomfortable part: this is a slog on consumer hardware - the community figure is 12 minutes for a 720p→4K clip on a rented 48GB L40S. Keep the batch small and the clip short and a 3060 can do it; for long footage, rent a GPU or run it on RunningHub, where the weights are already mounted.
How it works
The node expects three things wired in: your frames as an image batch, plus a dit and a vae configuration from the pack's other two nodes - Starlight26LoadDiTModel and Starlight26LoadVAEModel. It runs a four-phase pipeline: VAE-encode the frames, diffuse-upscale them with the DiT, decode, then color-correct.
This fork earns its keep on video, where per-frame upscaling fails in a classic way: consecutive frames disagree on how to resolve fine repeating texture, and you get shimmering wallpaper. The node processes frames in batches shaped 4n+1 (1, 5, 9, 13…), the temporal window the model's video VAE was trained on. temporal_overlap re-feeds a few frames across batch boundaries and blends them so seams don't appear, and uniform_batch_size pads a short final batch so the tail doesn't wobble. prepend_frames runs a few reversed lead-in frames and trims them, cleaning up artifacts at the start of the clip. All of it exists to make adjacent frames agree.
The output is a single IMAGE - the upscaled frame batch in the same RGB/RGBA format as your input, normalized to [0, 1] for ComfyUI. Wire it into a save-video or preview node.
The inputs that matter
resolution(default 1080): target for the shortest edge, aspect ratio kept. The number you'll actually change.batch_size(default 121): frames per batch, and it must follow 4n+1. Bigger means better temporal consistency and faster throughput but more VRAM; smaller shrinks the footprint.color_correction: SeedVR2 famously lifts contrast and shifts color. This pass grades the output back toward your input -labis the tooltip's recommended pick,waveletthe shipped default,nonefor the raw upscale.max_resolution(default 3840): a safety cap on the longest edge so extreme aspect ratios don't blow your VRAM.
Seed, the two noise sliders, and offload_device are the fiddly rest. Leave them alone until something misbehaves.
Installing it
Through ComfyUI Manager, search for the pack title or starlight26-runninghub. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/284951641/ComfyUI-LHStarlight26
Then restart ComfyUI. Manager installs the pip deps from requirements.txt - diffusers, peft, omegaconf, gguf, opencv - so the first install is chunky. Two gotchas. First, this pack is written against ComfyUI's newer V3 node API, so an old ComfyUI won't register the nodes - update before you try. Second, the README's only real warning: model weights are not included. Weights go in ComfyUI/models/SEEDVR2/ (the folder is literally named SEEDVR2); the defaults expect a starlight26_dit_3b_bf16.safetensors plus a matching VAE. On RunningHub those are mounted for you; locally you have to fetch them. The standard numz/AInVFX SeedVR2 3B/7B .safetensors and .gguf files work in this fork too.
Common issues
OOM. This is SeedVR2's earned reputation. Drop batch_size to 5, set the upscaler's offload_device to cpu, and turn on the loader nodes' tiled encode/decode or block-swap options.
"It upscaled fine but looks bad." Ask which weights you ran. FP16/bf16 is clean; GGUF quant is known to damage skin texture and FP8 can leave tiling-grid artifacts - the bf16 defaults are the safe ones. And on a close-up face, don't trust a single pass: the community's harshest SeedVR2 verdict is "human to lizard upscaler" on skin. Give faces their own pass.
Jitter between batches. Bump temporal_overlap to 1–4 and keep uniform_batch_size on.
If the node errors on a missing model file, the answer is boring and always the same: models/SEEDVR2/ is empty. Put the weights in there and it runs.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Input video frames as image batch. Accepts both RGB (3-channel) and RGBA (4-channel) formats. Output format will match input format. | |
| dit | SEEDVR2_DIT | DiT model configuration from SeedVR2 (Down)Load DiT Model node | |
| vae | SEEDVR2_VAE | VAE model configuration from SeedVR2 (Down)Load VAE Model node | |
| seed | INT | 320–4294967295 | Random seed for reproducible generation (default: 42). Same seed with same inputs produces identical output. |
| resolution | INT | 108016–16384 | Target resolution for the shortest edge in pixels (default: 1080). Automatically maintains aspect ratio of input. Even values required for optimal processing. |
| max_resolution | INT | 38400–16384 | Maximum resolution limit for any dimension (default: 0, no limit). If any edge exceeds this after applying resolution, both dimensions are scaled down proportionally. Useful to prevent excessive VRAM usage on extreme aspect ratios. |
| batch_size | INT | 1211–16384 | Number of frames processed together per batch (default: 5). Must follow pattern 4n+1: 1, 5, 9, 13, 17, 21, ... • Higher values: Better temporal consistency and faster processing • Lower values: Reduced VRAM usage Ideally match to shot length for best quality. |
| uniform_batch_size | BOOLEAN | true | Pad final batch to match batch_size (default: False). Prevents temporal artifacts caused by small final batch. Add extra compute but recommended for optimal quality. |
| color_correction | COMBO | wavelet | Corrects color shifts in upscaled output to match original input (default: lab). The upscaling process may alter colors; this applies color grading to restore them. • lab: Perceptual color matching with detail preservation (recommended) • wavelet: Frequency-based natural colors, preserves fine details • wavelet_adaptive: Wavelet base with targeted saturation correction • hsv: Hue-conditional saturation matching • adain: Statistical style transfer approach • none: No color correction applied |
| temporal_overlapopt | INT | 210–64 | Overlapping frames between consecutive batches (default: 0, disabled). Improves temporal consistency across batch boundaries through blending. Values 1-4 work well for most content. |
| prepend_framesopt | INT | 00–32 | Number of frames to prepend (reversed from start) before processing (default: 0). Helps reduce artifacts at video beginning. Prepended frames are automatically removed from final output. |
| input_noise_scaleopt | FLOAT | 0.0000–1 | Input noise injection scale (default: 0.0, disabled). Adds controlled variation to input images before encoding. Range: 0.0 (no noise) to 1.0 (maximum noise). Can help with certain types of artifacts. |
| latent_noise_scaleopt | FLOAT | 0.0000–1 | Latent space noise injection scale (default: 0.0, disabled). Adds controlled variation during the diffusion process. Range: 0.0 (no noise) to 1.0 (maximum noise). Can soften details if input_noise_scale doesn't help. |
| offload_deviceopt | COMBO | cpu | Device for storing intermediate tensors between processing phases (default: cpu). • 'none': Keep all tensors on inference device (fastest but highest VRAM usage) • 'cpu': Offload to system RAM (recommended for long videos, slower transfers) • 'cuda:X': Offload to another GPU (good balance if available, faster than CPU) |
| enable_debugopt | BOOLEAN | false | Enable detailed debug logging (default: False). Shows memory usage, timing information, and processing details. Useful for troubleshooting errors and performance issues. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | Upscaled video frames with color correction applied. Format (RGB/RGBA) matches input. Range [0, 1] normalized for ComfyUI compatibility. |