Tiled Setup Node
The one that does the VRAM math so your tiled render doesn't explode
- render_config
- log
- tile_str
Tiled Setup Node is where the real thinking in VK Nodes happens. While Tiled Config just picks presets, this node computes the actual render layout: how big each cell has to be, how many render cells that implies, and - crucially - whether the whole thing fits under your VRAM budget. Every other node in the pack downstream treats its render_config JSON as ground truth.
What it does
You hand it the source resolution, the final output resolution, and a tiling strategy, and it works out a workable render scale. The mechanism, from the code:
- It parses
tiling_strategyas a 2D JSON grid -"[[1,2,3],[4,5,6]]"means 2 rows of 3 cells. The number of rows and columns comes straight from that grid. - It then iterates a
scalefactor from 4.0 downward in 0.01 steps, computing per-cell tile dimensions at each step, until the number of render cells per tile drops under yourmax_render_cellsceiling. Render cells snap to 64×64 blocks. - The dimension it finally hands to the sampler is 4× the tile size - it renders each cell at a multiple of the final size and lets the scale-down do the sharpening, the same "generate big, downscale" instinct that powers hi-res fix in the upscaling world.
The inputs that matter
start_width/start_height(default 960×960) - the resolution your source content is generated at.output_width/output_height(default 1920×1080) - the finished video size.tiling_strategy- the JSON grid, e.g."[[1,3],[4,6]]"for four cells. This is the field Tiled Config Node exists to fill for you.max_render_cells(default 64) - the VRAM governor. Lower it if you're getting OOM during renders; each render cell is a 64×64 block being diffused, so this caps how much work happens per tile.max_tile_size(default 960) - the cap on any single tile's dimensions.
Outputs
render_config- the JSON blob everything else consumes. Wire this into both Tiled Crop Node and Tiled Render Node; keep the same instance for both or the numbers will disagree.log- a human-readable breakdown of the chosen layout, plus the full config. Ignore the scary part (below).tile_str- a compact string like6x4describing the render cells; it becomes part of the folder names the render node searches.
The one thing that will confuse you
The log output always contains the line "ERROR: Only exact tiling is possible now" - even when your grid is perfectly valid and rectangular. This is not an error. It's a fixed string the code writes whenever a row length matches the column count, which, for any exact rectangular grid, is every row. The pack only supports rectangular tilings, and it tells you so in the most alarming way possible. Once you know it's boilerplate, it stops being a scare and starts being funny.
Install
Same as the rest of the pack: ComfyUI Manager → "VK Nodes", or
cd ComfyUI/custom_nodes
git clone https://github.com/VK/vk-nodes
then restart. No model files download with this pack - the only real system dependency is ffmpeg, and that's for the audio and render nodes, not this one. The README's "to run" block is all about the optional headless worker.py and can be ignored if you're rendering locally.
One last tip: the tiling strategy you feed here has to match how you actually render each cell, and it's JSON - a stray unquoted bracket makes the whole config parse as garbage downstream. If Tiled Crop starts returning zeroed outputs, check the JSON first.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| start_width | INT | 960 | — |
| start_height | INT | 960 | — |
| output_width | INT | 1920 | — |
| output_height | INT | 1080 | — |
| tiling_strategy | STRING | [[1,2,3],[4,5,6]] | — |
| max_render_cells | INT | 64 | — |
| max_tile_size | INT | 960 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| render_config | STRING | — |
| log | STRING | — |
| tile_str | STRING | — |