- rename Smart Category Config → Smart Profile Switch 🧩 (code, JS, locales, demo workflow)
- add banner.svg and embed it at the top of README
- replace fragile OpenFileDialog folder-browse hack with native IFileDialog/FOS_PICKFOLDERS picker — fixes wrong-folder bug on single-click select
- flip Smart Resize's upscale_if_smaller default to true — node now resizes to target by default, as the name implies
- add width/height source tooltip to Smart Resolution Multiplier's image input
- fix stale widgets_values in smart_batch_resize_demo.json (10 fields → 13 after prefix/counter fields were added)
- full README rewrite: correct inputs/defaults/outputs for all 5 nodes, new Smart Profile Switch section, Example workflows section, expanded "Why these nodes?"
- add new example workflow (seedvr2_smartresize_demo.json), updated screenshots
- add assets/*.ai to .gitignore
- bump version to 1.0.2
229 lines
9.9 KiB
JSON
229 lines
9.9 KiB
JSON
{
|
||
"last_node_id": 9,
|
||
"last_link_id": 7,
|
||
"nodes": [
|
||
{
|
||
"id": 1,
|
||
"type": "Note",
|
||
"pos": [0, -240],
|
||
"size": {"0": 1840, "1": 190},
|
||
"flags": {},
|
||
"order": 7,
|
||
"mode": 0,
|
||
"inputs": [],
|
||
"outputs": [],
|
||
"properties": {},
|
||
"widgets_values": ["CraftKit × SeedVR2 — Smart Upscale\n\nPattern:\n1. SmartResolutionMultiplier calculates the 2× target resolution from the input image automatically\n2. ImageScaleBy pre-downscales the input (0.75×) so SeedVR2 has room to work\n3. SeedVR2 upscales to the computed target resolution (connected from SmartResolutionMultiplier → resolution)\n4. SmartResize normalizes the output to a consistent longest side\n\nChange multiplier on SmartResolutionMultiplier to control the upscale factor. Change longest_side on SmartResize to control output size."],
|
||
"color": "#2a3a2a",
|
||
"bgcolor": "#1a2a1a"
|
||
},
|
||
{
|
||
"id": 2,
|
||
"type": "LoadImage",
|
||
"pos": [0, -10],
|
||
"size": {"0": 280, "1": 320},
|
||
"flags": {},
|
||
"order": 0,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{"name": "image", "type": "COMBO", "widget": {"name": "image"}, "link": null},
|
||
{"name": "upload", "type": "IMAGEUPLOAD", "widget": {"name": "upload"}, "link": null}
|
||
],
|
||
"outputs": [
|
||
{"name": "IMAGE", "type": "IMAGE", "links": [1, 2], "slot_index": 0},
|
||
{"name": "MASK", "type": "MASK", "links": null, "slot_index": 1}
|
||
],
|
||
"properties": {"cnr_id": "comfy-core", "Node name for S&R": "LoadImage"},
|
||
"widgets_values": ["example.png", "image"]
|
||
},
|
||
{
|
||
"id": 3,
|
||
"type": "SmartResolutionMultiplier",
|
||
"pos": [320, -10],
|
||
"size": {"0": 320, "1": 150},
|
||
"flags": {},
|
||
"order": 1,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{"name": "image", "type": "IMAGE", "link": 1}
|
||
],
|
||
"outputs": [
|
||
{"name": "width", "type": "INT", "links": null, "slot_index": 0},
|
||
{"name": "height", "type": "INT", "links": null, "slot_index": 1},
|
||
{"name": "resolution", "type": "INT", "links": [3], "slot_index": 2}
|
||
],
|
||
"properties": {"cnr_id": "comfyui-craftkit", "Node name for S&R": "SmartResolutionMultiplier"},
|
||
"widgets_values": [2.0, 8]
|
||
},
|
||
{
|
||
"id": 4,
|
||
"type": "ImageScaleBy",
|
||
"pos": [320, 180],
|
||
"size": {"0": 270, "1": 130},
|
||
"flags": {},
|
||
"order": 2,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{"name": "image", "type": "IMAGE", "link": 2}
|
||
],
|
||
"outputs": [
|
||
{"name": "IMAGE", "type": "IMAGE", "links": [4], "slot_index": 0}
|
||
],
|
||
"title": "Pre-downscale (0.75×)",
|
||
"properties": {"cnr_id": "comfy-core", "Node name for S&R": "ImageScaleBy"},
|
||
"widgets_values": ["lanczos", 0.75]
|
||
},
|
||
{
|
||
"id": 5,
|
||
"type": "SeedVR2LoadDiTModel",
|
||
"pos": [680, -10],
|
||
"size": {"0": 380, "1": 260},
|
||
"flags": {},
|
||
"order": 3,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{"name": "torch_compile_args", "shape": 7, "type": "TORCH_COMPILE_ARGS", "link": null},
|
||
{"name": "model", "type": "COMBO", "widget": {"name": "model"}, "link": null},
|
||
{"name": "device", "type": "COMBO", "widget": {"name": "device"}, "link": null},
|
||
{"name": "blocks_to_swap", "shape": 7, "type": "INT", "widget": {"name": "blocks_to_swap"}, "link": null},
|
||
{"name": "swap_io_components", "shape": 7, "type": "BOOLEAN", "widget": {"name": "swap_io_components"}, "link": null},
|
||
{"name": "offload_device", "shape": 7, "type": "COMBO", "widget": {"name": "offload_device"}, "link": null},
|
||
{"name": "cache_model", "shape": 7, "type": "BOOLEAN", "widget": {"name": "cache_model"}, "link": null},
|
||
{"name": "attention_mode", "shape": 7, "type": "COMBO", "widget": {"name": "attention_mode"}, "link": null}
|
||
],
|
||
"outputs": [
|
||
{"name": "SEEDVR2_DIT", "type": "SEEDVR2_DIT", "links": [5], "slot_index": 0}
|
||
],
|
||
"properties": {"cnr_id": "seedvr2_videoupscaler", "Node name for S&R": "SeedVR2LoadDiTModel"},
|
||
"widgets_values": ["seedvr2_ema_3b_fp8_e4m3fn.safetensors", "cuda:0", 0, false, "none", false, "sdpa"]
|
||
},
|
||
{
|
||
"id": 6,
|
||
"type": "SeedVR2LoadVAEModel",
|
||
"pos": [680, 300],
|
||
"size": {"0": 380, "1": 300},
|
||
"flags": {},
|
||
"order": 4,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{"name": "torch_compile_args", "shape": 7, "type": "TORCH_COMPILE_ARGS", "link": null},
|
||
{"name": "model", "type": "COMBO", "widget": {"name": "model"}, "link": null},
|
||
{"name": "device", "type": "COMBO", "widget": {"name": "device"}, "link": null},
|
||
{"name": "encode_tiled", "shape": 7, "type": "BOOLEAN", "widget": {"name": "encode_tiled"}, "link": null},
|
||
{"name": "encode_tile_size", "shape": 7, "type": "INT", "widget": {"name": "encode_tile_size"}, "link": null},
|
||
{"name": "encode_tile_overlap", "shape": 7, "type": "INT", "widget": {"name": "encode_tile_overlap"}, "link": null},
|
||
{"name": "decode_tiled", "shape": 7, "type": "BOOLEAN", "widget": {"name": "decode_tiled"}, "link": null},
|
||
{"name": "decode_tile_size", "shape": 7, "type": "INT", "widget": {"name": "decode_tile_size"}, "link": null},
|
||
{"name": "decode_tile_overlap", "shape": 7, "type": "INT", "widget": {"name": "decode_tile_overlap"}, "link": null},
|
||
{"name": "tile_debug", "shape": 7, "type": "COMBO", "widget": {"name": "tile_debug"}, "link": null},
|
||
{"name": "offload_device", "shape": 7, "type": "COMBO", "widget": {"name": "offload_device"}, "link": null},
|
||
{"name": "cache_model", "shape": 7, "type": "BOOLEAN", "widget": {"name": "cache_model"}, "link": null}
|
||
],
|
||
"outputs": [
|
||
{"name": "SEEDVR2_VAE", "type": "SEEDVR2_VAE", "links": [6], "slot_index": 0}
|
||
],
|
||
"properties": {"cnr_id": "seedvr2_videoupscaler", "Node name for S&R": "SeedVR2LoadVAEModel"},
|
||
"widgets_values": ["ema_vae_fp16.safetensors", "cuda:0", true, 1024, 128, true, 1024, 128, "false", "cpu", false]
|
||
},
|
||
{
|
||
"id": 7,
|
||
"type": "SeedVR2VideoUpscaler",
|
||
"pos": [1100, -10],
|
||
"size": {"0": 380, "1": 560},
|
||
"flags": {},
|
||
"order": 5,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{"name": "image", "type": "IMAGE", "link": 4},
|
||
{"name": "dit", "type": "SEEDVR2_DIT", "link": 5},
|
||
{"name": "vae", "type": "SEEDVR2_VAE", "link": 6},
|
||
{"name": "seed", "type": "INT", "widget": {"name": "seed"}, "link": null},
|
||
{"name": "resolution", "type": "INT", "widget": {"name": "resolution"}, "link": 3},
|
||
{"name": "max_resolution", "type": "INT", "widget": {"name": "max_resolution"}, "link": null},
|
||
{"name": "batch_size", "type": "INT", "widget": {"name": "batch_size"}, "link": null},
|
||
{"name": "uniform_batch_size", "type": "BOOLEAN", "widget": {"name": "uniform_batch_size"}, "link": null},
|
||
{"name": "color_correction", "type": "COMBO", "widget": {"name": "color_correction"}, "link": null},
|
||
{"name": "temporal_overlap", "shape": 7, "type": "INT", "widget": {"name": "temporal_overlap"}, "link": null},
|
||
{"name": "prepend_frames", "shape": 7, "type": "INT", "widget": {"name": "prepend_frames"}, "link": null},
|
||
{"name": "input_noise_scale", "shape": 7, "type": "FLOAT", "widget": {"name": "input_noise_scale"}, "link": null},
|
||
{"name": "latent_noise_scale", "shape": 7, "type": "FLOAT", "widget": {"name": "latent_noise_scale"}, "link": null},
|
||
{"name": "offload_device", "shape": 7, "type": "COMBO", "widget": {"name": "offload_device"}, "link": null},
|
||
{"name": "enable_debug", "shape": 7, "type": "BOOLEAN", "widget": {"name": "enable_debug"}, "link": null}
|
||
],
|
||
"outputs": [
|
||
{"name": "IMAGE", "type": "IMAGE", "links": [7], "slot_index": 0}
|
||
],
|
||
"properties": {"cnr_id": "seedvr2_videoupscaler", "Node name for S&R": "SeedVR2VideoUpscaler"},
|
||
"widgets_values": [42, "fixed", 0, 1, false, "lab", 0, 0, 0.0, 0.0, "cpu", false]
|
||
},
|
||
{
|
||
"id": 8,
|
||
"type": "SmartResize",
|
||
"pos": [1520, -10],
|
||
"size": {"0": 320, "1": 240},
|
||
"flags": {},
|
||
"order": 6,
|
||
"mode": 0,
|
||
"inputs": [
|
||
{"name": "image", "type": "IMAGE", "link": 7}
|
||
],
|
||
"outputs": [
|
||
{"name": "image", "type": "IMAGE", "links": [], "slot_index": 0},
|
||
{"name": "width", "type": "INT", "links": [], "slot_index": 1},
|
||
{"name": "height", "type": "INT", "links": [], "slot_index": 2}
|
||
],
|
||
"properties": {"cnr_id": "comfyui-craftkit", "Node name for S&R": "SmartResize"},
|
||
"widgets_values": [1024, 8, "lanczos", false]
|
||
},
|
||
{
|
||
"id": 9,
|
||
"type": "Note",
|
||
"pos": [1520, 260],
|
||
"size": {"0": 320, "1": 310},
|
||
"flags": {},
|
||
"order": 8,
|
||
"mode": 0,
|
||
"inputs": [],
|
||
"outputs": [],
|
||
"properties": {},
|
||
"widgets_values": ["Outputs:\n\n→ image (SmartResize)\n connect to PreviewImage or SaveImage\n\nTweak:\n• multiplier on SmartResolutionMultiplier\n 2.0 = double, 1.5 = 50% bigger\n• scale_by on Pre-downscale\n lower = more room for SeedVR2 to\n reconstruct detail\n• longest_side on SmartResize\n target output size after upscale\n\nModel options:\n• 3b fp8 — fast, less VRAM\n• 7b fp16 — best quality, high VRAM"],
|
||
"color": "#2a3a2a",
|
||
"bgcolor": "#1a2a1a"
|
||
}
|
||
],
|
||
"links": [
|
||
[1, 2, 0, 3, 0, "IMAGE"],
|
||
[2, 2, 0, 4, 0, "IMAGE"],
|
||
[3, 3, 2, 7, 4, "INT"],
|
||
[4, 4, 0, 7, 0, "IMAGE"],
|
||
[5, 5, 0, 7, 1, "SEEDVR2_DIT"],
|
||
[6, 6, 0, 7, 2, "SEEDVR2_VAE"],
|
||
[7, 7, 0, 8, 0, "IMAGE"]
|
||
],
|
||
"groups": [
|
||
{
|
||
"title": "Input",
|
||
"bounding": [-20, -30, 640, 390],
|
||
"color": "#4a2d5a",
|
||
"font_size": 24
|
||
},
|
||
{
|
||
"title": "SeedVR2 Models",
|
||
"bounding": [660, -30, 420, 640],
|
||
"color": "#1e3d5a",
|
||
"font_size": 24
|
||
},
|
||
{
|
||
"title": "Upscale + Output",
|
||
"bounding": [1080, -30, 800, 630],
|
||
"color": "#1e4a4a",
|
||
"font_size": 24
|
||
}
|
||
],
|
||
"config": {},
|
||
"extra": {
|
||
"ds": {"scale": 0.6, "offset": [-20, 230]}
|
||
},
|
||
"version": 0.4
|
||
}
|