Resolution
One dropdown that sets your resolution, latent channels, and even video length
- latent
- width
- height
- channels
- info
- frame_rate
- frame_count
- latent_format
- duration_sec
- crop_bbox
The boring-but-constant ComfyUI task is getting your empty latent to the right resolution and the right channel count. Get the resolution wrong and you waste VRAM; get the channels wrong and you get noise or flat color instead of an image, because a 16-channel Flux latent fed to a 4-channel SDXL setup doesn't gracefully degrade. ◎ Radiance Resolution bundles both decisions into one node: pick a preset, and it hands you a correctly-dimensioned, correctly-channelled empty latent plus every number you might need downstream.
If you've been hand-typing width and height into Empty Latent Image every time, this is the upgrade. It's the kind of node you don't miss until you realize you've memorized "1024x1024, 16 channels, Flux" as a sequence you type into three different widgets.
How it works
It's a resolution calculator that returns a ready-made empty LATENT. Pick a preset from 43 built-ins - 4K DCI, 2K DCI, anamorphic 2.39:1, Super 35, IMAX, plus Flux/SDXL/SD1.5 quick picks and social ratios - and the node aligns the dimensions to 8-pixel steps, selects the right channel count from model_type (Flux/SD3 = 16 channels, SDXL/SD 1.5 = 4), and builds the latent tensor. An internal preview card shows you the aspect ratio, megapixels, and latent info before you commit.
Three clever optional modes: orientation overrides a preset's native orientation (flip a landscape preset to portrait), scale_factor multiplies the whole thing (0.5 for a half-res test pass), and mp_target + mp_aspect_ratio let you say "give me 2 megapixels at 16:9" and have it solve for width and height. There's also a video mode: flip enable_video on and the same node produces a frame-count latent with a frame_rate, so a single node feeds both image and video pipelines.
The inputs that matter
preset- the big dropdown. Set it and thewidth/heightwidgets are ignored (they only apply when preset isCustom).model_type-Auto (Flux 16ch),Flux / SD3 (16ch), orSDXL / SD 1.5 (4ch). Get this right; it decides the latent channels.batch_size- frames in the batch for images; flipenable_videoand instead setvideo_framesandframe_rate.
Outputs: the latent itself, then a small library of useful numbers - width, height, channels, info (a human-readable string), frame_rate, frame_count, duration_sec, and latent_format (a string like flux_16ch that you wire into Radiance Sampler Pro or Unified Loader's latent_format input so the sampler can validate channels).
How to install it
Part of the radiance pack. ComfyUI Manager → search "Radiance", or:
cd ComfyUI/custom_nodes
git clone https://github.com/fxtdstudios/radiance.git
cd radiance
pip install -r requirements_windows.txt
Restart, and it's under FXTD Studios/Radiance/Image. It has an internal preview, so if that card isn't rendering, a hard refresh of your browser tab usually fixes it.
Common issues
Channel confusion is the classic trap, and it's worth spelling out because it's the reason this node exists: a 1024x1024 latent is meaningless without its channel count. If your output comes back as noise or a color wash, check that model_type matches the checkpoint you loaded - this is the modern, labeled version of the old "you loaded the wrong VAE" moment from the KB's VAE essay. Also note mp_target silently overrides preset and manual W/H whenever it's above 0, so if the node "ignores" your preset, a leftover megapixel target is why.
For single-image tinkerers this is a convenience. For video or multi-res pipelines - where resolution, channels, and frame count all have to agree - it turns three error-prone widgets into one.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| preset | COMBO | Custom | Resolution preset (Cinema or Social). The final width/height are automatically aligned for the selected 'model_type'. Select 'Custom' to use manual width/height. |
| width | INT | 102464–16384 | Custom width (only used when preset is 'Custom'). Auto-aligned to 8px (32px for LTX Video). |
| height | INT | 102464–16384 | Custom height (only used when preset is 'Custom'). Auto-aligned to 8px (32px for LTX Video). |
| orientation | COMBO | As Preset | Override orientation. 'As Preset' uses the preset's native orientation. |
| model_type | COMBO | Manual | Drives pixel alignment, video-latent shape, frame-count rules, latent_format, and the Est. VRAM readout. Flux/SD3/Cosmos = 16ch. SDXL/SD 1.5 = 4ch. Mochi = 12ch. MiniMax H3 = 24ch video-only (fixed 24fps, 17k+5 frame grid); pair with an audio latent + 'Concat AV Latent' for the full AV pipeline. 'Manual': no alignment/frame-count constraints; use 'latent_channels' for experimental/unlisted models. With model_meta connected it follows the Loader (🧲); a manual choice shows ✎. Est. VRAM assumes a full load; actual usage may be lower with DynamicVRAM/CPU offload active. |
| batch_size | INT | 11–64 | Number of latent frames in batch. |
| scale_factoropt | FLOAT | 1.000.1–4 | Scale the resolution by this factor after preset/custom. 0.5 = half res, 2.0 = double res. Applied before alignment. |
| latent_channelsopt | INT | 00–256 | Override latent channel count. 0 = use model_type default. Common: 4 (SD/SDXL), 12 (Mochi), 16 (Flux/SD3/Cosmos). Set manually for custom architectures. |
| mp_targetopt | FLOAT | 0.00–64 | MEGAPIXEL TARGET: When > 0, auto-calculates W×H from this MP target and mp_aspect_ratio. Overrides preset and custom W/H. 0 = disabled. |
| mp_aspect_ratioopt | COMBO | 16:9 | Aspect ratio for megapixel target mode (only used when mp_target > 0). |
| enable_videoopt | BOOLEAN | false | Enable video sequence mode (replaces batch parameter). |
| crop_to_resopt | BOOLEAN | false | Make crop_bbox the requested size inside the model-aligned one (e.g. 1920x1080 in LTX's 1920x1088, its 32px grid), so VAE Decode (HDR)'s crop_bbox input crops the alignment padding off. Off: crop_bbox is the full frame. |
| frame_computationopt | COMBO | Manual (Frames) | How the video frame count is set (video only). Manual uses video_frames as typed; Auto (Seconds) uses duration_seconds x frame_rate snapped to the model's stride*k+1 grid. |
| duration_secondsopt | FLOAT | 5.00.1–100000 | Target video duration in seconds (used when frame_computation = 'Auto (Seconds)'). Combined with frame_rate this must stay within video_frames' 100000 ceiling; a longer request is clamped with a warning. |
| video_framesopt | INT | 811–100000 | Total number of video frames. 5D-latent models require (stride*k+1) — e.g. 4k+1 for WAN/HunyuanVideo (1, 5, 9, 13...), 8k+1 for LTXV (1, 9, 17...), 6k+1 for Mochi (1, 7, 13...). MiniMax H3 uses its own 17k+5 grid instead (5, 22, 39, 56...). A warning is logged if this constraint is violated. Ignored when frame_computation = 'Auto (Seconds)'. |
| frame_rateopt | FLOAT | 241–120 | Playback frame rate. |
| model_metaopt | STRING | Optional: connect the Loader's model_meta output, and model_type follows the loaded model. |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | Empty latent tensor at the selected resolution. |
| width | INT | Final image width (pixels). |
| height | INT | Final image height (pixels). |
| channels | INT | Latent channel count. |
| info | STRING | Resolution info string. |
| frame_rate | FLOAT | Playback frame rate. Always the widget value — never 0.0. |
| frame_count | INT | Total video frames (or batch size for images). |
| latent_format | STRING | Latent format string, for reference. |
| duration_sec | FLOAT | Duration in seconds (video_frames / frame_rate). 0.0 for images. |
| crop_bbox | BOUNDING_BOX | Crop box {x, y, width, height} to remove model-alignment padding. Wire into RadianceHDRVAEDecode's crop_bbox input. |