diff --git a/README.md b/README.md index 0f1c335..3d952a2 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,29 @@ ComfyUI-LTXVideo is a collection of custom nodes for ComfyUI, designed to provid The model itself is supported in the core ComfyUI [code](https://github.com/comfyanonymous/ComfyUI/tree/master/comfy/ldm/lightricks). The main LTXVideo repository can be found [here](https://github.com/Lightricks/LTX-Video). + + +# ⭐ 16.07.2025 - LTXV 0.9.8 Release ⭐ + +### πŸš€ What's New +1. **LTXV 0.9.8 Model**
+ The new model and its distilled variants offer improved prompt understanding and detail generation
+ πŸ‘‰ [13B Distilled model](https://huggingface.co/Lightricks/LTX-Video/blob/main/ltxv-13b-0.9.8-distilled.safetensors)
+ πŸ‘‰ [13B Distilled model 8-bit](https://huggingface.co/Lightricks/LTX-Video/blob/main/ltxv-13b-0.9.8-distilled-fp8.safetensors)
+ πŸ‘‰ [2B from 13B Distilled model](https://huggingface.co/Lightricks/LTX-Video/blob/main/ltxv-2b-0.9.8-distilled.safetensors)
+ πŸ‘‰ [2B from 13B Distilled model 8-bit](https://huggingface.co/Lightricks/LTX-Video/blob/main/ltxv-2b-0.9.8-distilled-fp8.safetensors)
+ πŸ‘‰ [IC Lora Detailer](https://huggingface.co/Lightricks/LTX-Video-ICLoRA-detailer-13b-0.9.8/resolve/main/ltxv-098-ic-lora-detailer-comfyui.safetensors)
+ + +2. **Autoregressive Generation** + Introducing new ComfyUI nodes that enable virtually infinite video generation. The new **LTXV Looping Sampler** node allows generation of videos with arbitrary length and consistent motion. **ICLoRAs** are supported as wellβ€”by providing guidance from existing videos (e.g., depth, pose, or Canny edges), you can generate long videos in a video-to-video manner. + πŸ‘‰ [Long Img2Video Generation Flow](#long-video-generation) + πŸ‘‰ [Long Video2Video Generation Flow](#long-video-generation) + +3. **Detailer ICLoRA** + Introducing the **Detailer ICLoRA**, which enhances generated latents with fine details by applying a few additional diffusion steps. This results in significantly more detailed generations. + πŸ‘‰ [Detailer ICLoRA Flow](#video-upscaling) + # ⭐ 8.07.2025 - LTXVideo ICLora Release ⭐ ### πŸš€ What's New in LTXVideo ICLoRA @@ -165,6 +188,13 @@ For portable ComfyUI installations, run Note that to run the example workflows, you need to have some additional custom nodes, like [ComfyUI-VideoHelperSuite](https://github.com/kosinkadink/ComfyUI-VideoHelperSuite) and others, installed. You can do it by pressing "Install Missing Custom Nodes" button in ComfyUI Manager. +### Long Video Generation +🧩 [Image to Video Long Video](example_workflows/ltxv-13b-i2v-long-multi-prompt.json): Long video generation with support for multiple prompts along the video duration. +🧩 [Video to Video Long Video](example_workflows/ltxv-13b-v2v-long-depth.json): Long video-to-video generation. Given a guiding videoβ€”such as depth, pose, or edgesβ€”the flow generates a new video. + +### Video Upscaling +🧩 [Video Upscaling](example_workflows/ltxv-13b-upscale.json): Upscales and adds fine details to any given video, increasing its spatial resolution by 2Γ—. + ### Easy to use multi scale generation workflows 🧩 [Image to video mixed](example_workflows/ltxv13b-i2v-mixed-multiscale.json): mixed flow with full and distilled model for best quality and speed trade-off.
diff --git a/__init__.py b/__init__.py index 940067c..d77e324 100644 --- a/__init__.py +++ b/__init__.py @@ -10,6 +10,7 @@ from .guide import LTXVAddGuideAdvanced from .latent_adain import LTXVAdainLatent from .latent_upsampler import LTXVLatentUpsampler from .latents import LTXVSelectLatents, LTXVSetVideoLatentNoiseMasks +from .looping_sampler import LTXVLoopingSampler, MultiPromptProvider from .masks import LTXVPreprocessMasks from .nodes_registry import NODE_CLASS_MAPPINGS as RUNTIME_NODE_CLASS_MAPPINGS from .nodes_registry import ( @@ -24,7 +25,8 @@ from .stg import ( STGGuiderAdvancedNode, STGGuiderNode, ) -from .tiled_sampler import LTXVLoopingSampler, LTXVTiledSampler, MultiPromptProvider +from .tiled_sampler import LTXVTiledSampler +from .tiled_vae_decode import LTXVTiledVAEDecode from .tricks import NODE_CLASS_MAPPINGS as TRICKS_NODE_CLASS_MAPPINGS from .tricks import NODE_DISPLAY_NAME_MAPPINGS as TRICKS_NODE_DISPLAY_NAME_MAPPINGS from .utiltily_nodes import ImageToCPU @@ -52,6 +54,7 @@ NODE_CLASS_MAPPINGS = { "LTXVSetVideoLatentNoiseMasks": LTXVSetVideoLatentNoiseMasks, "LTXVTiledSampler": LTXVTiledSampler, "LTXVLoopingSampler": LTXVLoopingSampler, + "LTXVTiledVAEDecode": LTXVTiledVAEDecode, "STGAdvancedPresets": STGAdvancedPresetsNode, "STGGuiderAdvanced": STGGuiderAdvancedNode, "STGGuiderNode": STGGuiderNode, diff --git a/easy_samplers.py b/easy_samplers.py index 0a4f50a..b42e905 100644 --- a/easy_samplers.py +++ b/easy_samplers.py @@ -5,12 +5,7 @@ import comfy_extras import nodes import torch from comfy_extras.nodes_custom_sampler import SamplerCustomAdvanced -from comfy_extras.nodes_lt import ( - EmptyLTXVLatentVideo, - LTXVAddGuide, - LTXVCropGuides, - LTXVImgToVideo, -) +from comfy_extras.nodes_lt import EmptyLTXVLatentVideo, LTXVAddGuide, LTXVCropGuides from nodes import VAEEncode from .guide import blur_internal @@ -130,6 +125,10 @@ class LTXVBaseSampler: crop="disabled", crf=35, blur=0, + optional_negative_index_latents=None, + optional_negative_index=-1, + optional_negative_index_strength=1.0, + optional_initialization_latents=None, ): if optional_cond_images is not None: @@ -167,26 +166,36 @@ class LTXVBaseSampler: "Please use STGGuiderAdvanced." ) - if optional_cond_images is None: + if optional_initialization_latents is None: (latents,) = EmptyLTXVLatentVideo().generate(width, height, num_frames, 1) - elif optional_cond_images.shape[0] == 1 and optional_cond_indices[0] == 0: - ( - positive, - negative, - latents, - ) = LTXVImgToVideo().generate( - positive=positive, - negative=negative, - vae=vae, - image=optional_cond_images[0].unsqueeze(0), - width=width, - height=height, - length=num_frames, - batch_size=1, - strength=strength, - ) else: - (latents,) = EmptyLTXVLatentVideo().generate(width, height, num_frames, 1) + latents = optional_initialization_latents + + if ( + optional_cond_images is not None + and optional_cond_images.shape[0] == 1 + and optional_cond_indices[0] == 0 + ): + pixels = comfy.utils.common_upscale( + optional_cond_images[0].unsqueeze(0).movedim(-1, 1), + width, + height, + "bilinear", + "center", + ).movedim(1, -1) + encode_pixels = pixels[:, :, :, :3] + t = vae.encode(encode_pixels) + latents["samples"][:, :, : t.shape[2]] = t + + conditioning_latent_frames_mask = torch.ones( + (1, 1, latents["samples"].shape[2], 1, 1), + dtype=torch.float32, + device=latents["samples"].device, + ) + conditioning_latent_frames_mask[:, :, : t.shape[2]] = 1.0 - strength + latents["noise_mask"] = conditioning_latent_frames_mask + + elif optional_cond_images is not None: for cond_image, cond_idx in zip( optional_cond_images, optional_cond_indices ): @@ -204,6 +213,21 @@ class LTXVBaseSampler: strength=strength, ) + if optional_negative_index_latents is not None: + ( + positive, + negative, + latents, + ) = LTXVAddLatentGuide().generate( + vae=vae, + positive=positive, + negative=negative, + latent=latents, + guiding_latent=optional_negative_index_latents, + latent_idx=optional_negative_index, + strength=optional_negative_index_strength, + ) + guider = copy.copy(guider) guider.set_conds(positive, negative) @@ -247,7 +271,7 @@ class LTXVExtendSampler: "default": 80, "min": -1, "max": nodes.MAX_RESOLUTION, - "step": 8, + "step": 1, "tooltip": "If -1, the number of frames will be based on the number of frames in the optional_guiding_latents.", }, ), @@ -306,6 +330,7 @@ class LTXVExtendSampler: guiding_strength=1.0, optional_guiding_latents=None, optional_reference_latents=None, + optional_initialization_latents=None, adain_factor=0.0, optional_negative_index_latents=None, optional_negative_index=-1, @@ -336,12 +361,19 @@ class LTXVExtendSampler: latents, -overlap, -1 ) - new_latents = EmptyLTXVLatentVideo().generate( - width=width * width_scale_factor, - height=height * height_scale_factor, - length=overlap * time_scale_factor + num_new_frames, - batch_size=1, - )[0] + if optional_initialization_latents is None: + new_latents = EmptyLTXVLatentVideo().generate( + width=width * width_scale_factor, + height=height * height_scale_factor, + length=overlap * time_scale_factor + num_new_frames, + batch_size=1, + )[0] + else: + new_latents = optional_initialization_latents + + last_overlap_latents["samples"] = last_overlap_latents["samples"].to( + new_latents["samples"].device + ) ( positive, @@ -486,8 +518,13 @@ class LTXVInContextSampler: guiding_latents, optional_cond_image=None, num_frames=0, + optional_initialization_latents=None, + optional_negative_index_latents=None, + optional_negative_index=-1, + optional_negative_index_strength=1.0, + optional_cond_strength=1.0, + optional_guiding_strength=1.0, ): - try: positive, negative = guider.raw_conds except AttributeError: @@ -504,12 +541,15 @@ class LTXVInContextSampler: if num_frames != -1: frames = (num_frames - 1) // time_scale_factor + 1 - new_latents = EmptyLTXVLatentVideo().generate( - width=width * width_scale_factor, - height=height * height_scale_factor, - length=(frames - 1) * time_scale_factor + 1, - batch_size=1, - )[0] + if optional_initialization_latents is not None: + new_latents = optional_initialization_latents + else: + new_latents = EmptyLTXVLatentVideo().generate( + width=width * width_scale_factor, + height=height * height_scale_factor, + length=(frames - 1) * time_scale_factor + 1, + batch_size=1, + )[0] if optional_cond_image is not None: optional_cond_image = ( @@ -535,7 +575,7 @@ class LTXVInContextSampler: latent=new_latents, guiding_latent=cond_image_latent, latent_idx=0, - strength=1.0, + strength=optional_cond_strength, ) if optional_cond_image is not None: @@ -553,9 +593,23 @@ class LTXVInContextSampler: negative=negative, latent=new_latents, guiding_latent=guiding_latents, - latent_idx=0 if optional_cond_image is None else 1, - strength=1.0, + latent_idx=1 if optional_cond_image is not None else 0, + strength=optional_guiding_strength, ) + if optional_negative_index_latents is not None: + ( + positive, + negative, + new_latents, + ) = LTXVAddLatentGuide().generate( + vae=vae, + positive=positive, + negative=negative, + latent=new_latents, + guiding_latent=optional_negative_index_latents, + latent_idx=optional_negative_index, + strength=optional_negative_index_strength, + ) guider = copy.copy(guider) guider.set_conds(positive, negative) diff --git a/example_workflows/13b-distilled/ltxv-13b-dist-i2v-base-fp8.json b/example_workflows/13b-distilled/ltxv-13b-dist-i2v-base-fp8.json index e098bda..a1e3754 100644 --- a/example_workflows/13b-distilled/ltxv-13b-dist-i2v-base-fp8.json +++ b/example_workflows/13b-distilled/ltxv-13b-dist-i2v-base-fp8.json @@ -182,7 +182,7 @@ "Node name for S&R": "LTXVLatentUpsamplerModelLoader" }, "widgets_values": [ - "ltxv-spatial-upscaler-0.9.7.safetensors", + "ltxv-spatial-upscaler-0.9.8.safetensors", true, false ] @@ -3113,7 +3113,7 @@ }, "1828": { "inputs": { - "upscale_model": "ltxv-spatial-upscaler-0.9.7.safetensors", + "upscale_model": "ltxv-spatial-upscaler-0.9.8.safetensors", "spatial_upsample": true, "temporal_upsample": false }, diff --git a/example_workflows/13b-distilled/ltxv-13b-dist-i2v-base.json b/example_workflows/13b-distilled/ltxv-13b-dist-i2v-base.json index 93fc092..3951fd7 100644 --- a/example_workflows/13b-distilled/ltxv-13b-dist-i2v-base.json +++ b/example_workflows/13b-distilled/ltxv-13b-dist-i2v-base.json @@ -182,7 +182,7 @@ "Node name for S&R": "LTXVLatentUpsamplerModelLoader" }, "widgets_values": [ - "ltxv-spatial-upscaler-0.9.7.safetensors", + "ltxv-spatial-upscaler-0.9.8.safetensors", true, false ] @@ -3056,7 +3056,7 @@ }, "1828": { "inputs": { - "upscale_model": "ltxv-spatial-upscaler-0.9.7.safetensors", + "upscale_model": "ltxv-spatial-upscaler-0.9.8.safetensors", "spatial_upsample": true, "temporal_upsample": false }, diff --git a/example_workflows/13b-distilled/ltxv-13b-dist-i2v-extend.json b/example_workflows/13b-distilled/ltxv-13b-dist-i2v-extend.json index a708227..fd7ac74 100644 --- a/example_workflows/13b-distilled/ltxv-13b-dist-i2v-extend.json +++ b/example_workflows/13b-distilled/ltxv-13b-dist-i2v-extend.json @@ -182,7 +182,7 @@ "Node name for S&R": "LTXVLatentUpsamplerModelLoader" }, "widgets_values": [ - "ltxv-spatial-upscaler-0.9.7.safetensors", + "ltxv-spatial-upscaler-0.9.8.safetensors", true, false ] @@ -3501,7 +3501,7 @@ }, "1828": { "inputs": { - "upscale_model": "ltxv-spatial-upscaler-0.9.7.safetensors", + "upscale_model": "ltxv-spatial-upscaler-0.9.8.safetensors", "spatial_upsample": true, "temporal_upsample": false }, diff --git a/example_workflows/13b-distilled/ltxv-13b-dist-i2v-keyframes.json b/example_workflows/13b-distilled/ltxv-13b-dist-i2v-keyframes.json index 05c4e9c..07ec106 100644 --- a/example_workflows/13b-distilled/ltxv-13b-dist-i2v-keyframes.json +++ b/example_workflows/13b-distilled/ltxv-13b-dist-i2v-keyframes.json @@ -250,7 +250,7 @@ "Node name for S&R": "LTXVLatentUpsamplerModelLoader" }, "widgets_values": [ - "ltxv-spatial-upscaler-0.9.7.safetensors", + "ltxv-spatial-upscaler-0.9.8.safetensors", true, false ] @@ -3275,7 +3275,7 @@ }, "1828": { "inputs": { - "upscale_model": "ltxv-spatial-upscaler-0.9.7.safetensors", + "upscale_model": "ltxv-spatial-upscaler-0.9.8.safetensors", "spatial_upsample": true, "temporal_upsample": false }, diff --git a/example_workflows/chimpanzee.webp b/example_workflows/chimpanzee.webp new file mode 100644 index 0000000..6085d15 Binary files /dev/null and b/example_workflows/chimpanzee.webp differ diff --git a/example_workflows/depth-surfing.mp4 b/example_workflows/depth-surfing.mp4 new file mode 100644 index 0000000..c59e91b --- /dev/null +++ b/example_workflows/depth-surfing.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d177d33a43e5f7b87dfa24726f55a0aa698f06d7dad255b759560d1b23e2e3be +size 1481235 diff --git a/example_workflows/ic_lora/ic-lora.json b/example_workflows/ic_lora/ic-lora.json index 142cc7f..d9440e4 100644 --- a/example_workflows/ic_lora/ic-lora.json +++ b/example_workflows/ic_lora/ic-lora.json @@ -4272,7 +4272,7 @@ "Node name for S&R": "LTXVLatentUpsamplerModelLoader" }, "widgets_values": [ - "ltxv-spatial-upscaler-0.9.7.safetensors", + "ltxv-spatial-upscaler-0.9.8.safetensors", true, false ] @@ -5749,7 +5749,7 @@ }, "1828": { "inputs": { - "upscale_model": "ltxv-spatial-upscaler-0.9.7.safetensors", + "upscale_model": "ltxv-spatial-upscaler-0.9.8.safetensors", "spatial_upsample": true, "temporal_upsample": false }, diff --git a/example_workflows/ltxv-13b-i2v-base-fp8.json b/example_workflows/ltxv-13b-i2v-base-fp8.json index 52f7874..298d6e3 100644 --- a/example_workflows/ltxv-13b-i2v-base-fp8.json +++ b/example_workflows/ltxv-13b-i2v-base-fp8.json @@ -214,7 +214,7 @@ "Node name for S&R": "LTXVLatentUpsamplerModelLoader" }, "widgets_values": [ - "ltxv-spatial-upscaler-0.9.7.safetensors", + "ltxv-spatial-upscaler-0.9.8.safetensors", true, false ] @@ -2396,7 +2396,7 @@ }, "1828": { "inputs": { - "upscale_model": "ltxv-spatial-upscaler-0.9.7.safetensors", + "upscale_model": "ltxv-spatial-upscaler-0.9.8.safetensors", "spatial_upsample": true, "temporal_upsample": false }, diff --git a/example_workflows/ltxv-13b-i2v-base.json b/example_workflows/ltxv-13b-i2v-base.json index 3e4df62..e96dc78 100644 --- a/example_workflows/ltxv-13b-i2v-base.json +++ b/example_workflows/ltxv-13b-i2v-base.json @@ -214,7 +214,7 @@ "Node name for S&R": "LTXVLatentUpsamplerModelLoader" }, "widgets_values": [ - "ltxv-spatial-upscaler-0.9.7.safetensors", + "ltxv-spatial-upscaler-0.9.8.safetensors", true, false ] @@ -2397,7 +2397,7 @@ }, "1828": { "inputs": { - "upscale_model": "ltxv-spatial-upscaler-0.9.7.safetensors", + "upscale_model": "ltxv-spatial-upscaler-0.9.8.safetensors", "spatial_upsample": true, "temporal_upsample": false }, diff --git a/example_workflows/ltxv-13b-i2v-extend.json b/example_workflows/ltxv-13b-i2v-extend.json index ce7f717..a79876b 100644 --- a/example_workflows/ltxv-13b-i2v-extend.json +++ b/example_workflows/ltxv-13b-i2v-extend.json @@ -243,7 +243,7 @@ "Node name for S&R": "LTXVLatentUpsamplerModelLoader" }, "widgets_values": [ - "ltxv-spatial-upscaler-0.9.7.safetensors", + "ltxv-spatial-upscaler-0.9.8.safetensors", true, false ] @@ -2744,7 +2744,7 @@ }, "1828": { "inputs": { - "upscale_model": "ltxv-spatial-upscaler-0.9.7.safetensors", + "upscale_model": "ltxv-spatial-upscaler-0.9.8.safetensors", "spatial_upsample": true, "temporal_upsample": false }, diff --git a/example_workflows/ltxv-13b-i2v-keyframes.json b/example_workflows/ltxv-13b-i2v-keyframes.json index 42a1ca1..c3fc7cb 100644 --- a/example_workflows/ltxv-13b-i2v-keyframes.json +++ b/example_workflows/ltxv-13b-i2v-keyframes.json @@ -214,7 +214,7 @@ "Node name for S&R": "LTXVLatentUpsamplerModelLoader" }, "widgets_values": [ - "ltxv-spatial-upscaler-0.9.7.safetensors", + "ltxv-spatial-upscaler-0.9.8.safetensors", true, false ] @@ -2619,7 +2619,7 @@ }, "1828": { "inputs": { - "upscale_model": "ltxv-spatial-upscaler-0.9.7.safetensors", + "upscale_model": "ltxv-spatial-upscaler-0.9.8.safetensors", "spatial_upsample": true, "temporal_upsample": false }, diff --git a/example_workflows/ltxv-13b-i2v-long-multi-prompt.json b/example_workflows/ltxv-13b-i2v-long-multi-prompt.json new file mode 100644 index 0000000..8cb0cdc --- /dev/null +++ b/example_workflows/ltxv-13b-i2v-long-multi-prompt.json @@ -0,0 +1,4726 @@ +{ + "id": "394ed254-7306-42a2-9ae6-aa880ce4456d", + "revision": 0, + "last_node_id": 2145, + "last_link_id": 5985, + "nodes": [ + { + "id": 1335, + "type": "VAEDecode", + "pos": [ + 4524.71875, + 2618.7578125 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 48, + "mode": 0, + "inputs": [ + { + "localized_name": "samples", + "name": "samples", + "type": "LATENT", + "link": 5884 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5363 + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 3578 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.29", + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 1926, + "type": "KSamplerSelect", + "pos": [ + 7169.62451171875, + 2627.34912109375 + ], + "size": [ + 251.94110107421875, + 58 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [ + { + "localized_name": "sampler_name", + "name": "sampler_name", + "type": "COMBO", + "widget": { + "name": "sampler_name" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "SAMPLER", + "name": "SAMPLER", + "type": "SAMPLER", + "links": [ + 5904 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "KSamplerSelect" + }, + "widgets_values": [ + "euler_ancestral" + ] + }, + { + "id": 2038, + "type": "Reroute", + "pos": [ + 6695.60791015625, + 2234.832763671875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 42, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5742 + } + ], + "outputs": [ + { + "name": "", + "type": "CONDITIONING", + "links": [ + 5740 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2037, + "type": "Reroute", + "pos": [ + 6693.35400390625, + 2192.606689453125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 41, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5741 + } + ], + "outputs": [ + { + "name": "", + "type": "CONDITIONING", + "links": [ + 5739 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2073, + "type": "FloatToSigmas", + "pos": [ + 7252.814453125, + 2838.02490234375 + ], + "size": [ + 216.59999084472656, + 26 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "localized_name": "float_list", + "name": "float_list", + "type": "FLOAT", + "link": 5782 + } + ], + "outputs": [ + { + "localized_name": "SIGMAS", + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 5905 + ] + } + ], + "properties": { + "Node name for S&R": "FloatToSigmas", + "cnr_id": "comfyui-kjnodes", + "ver": "1.0.8" + }, + "widgets_values": [] + }, + { + "id": 1952, + "type": "StringToFloatList", + "pos": [ + 3031.37158203125, + 2693.744384765625 + ], + "size": [ + 290, + 130 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "localized_name": "string", + "name": "string", + "type": "STRING", + "widget": { + "name": "string" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "FLOAT", + "name": "FLOAT", + "type": "FLOAT", + "links": [ + 5567 + ] + } + ], + "properties": { + "Node name for S&R": "StringToFloatList", + "cnr_id": "comfyui-kjnodes", + "ver": "0addfc6101f7a834c7fb6e0a1b26529360ab5350" + }, + "widgets_values": [ + "1.0000, 0.9937, 0.9875, 0.9812, 0.9750, 0.9094, 0.7250, 0.4219, 0.0\n" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 1598, + "type": "RandomNoise", + "pos": [ + 7239.3369140625, + 2308.76806640625 + ], + "size": [ + 210, + 82 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "localized_name": "noise_seed", + "name": "noise_seed", + "type": "INT", + "widget": { + "name": "noise_seed" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "NOISE", + "name": "NOISE", + "type": "NOISE", + "links": [ + 5903 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.30", + "Node name for S&R": "RandomNoise" + }, + "widgets_values": [ + 1625, + "fixed" + ] + }, + { + "id": 2101, + "type": "Reroute", + "pos": [ + 4516.3046875, + 2895.996337890625 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 49, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5885 + } + ], + "outputs": [ + { + "name": "", + "type": "LATENT", + "links": [ + 5838 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 1973, + "type": "VHS_VideoCombine", + "pos": [ + 8381.2939453125, + 2244.07470703125 + ], + "size": [ + 770.2554931640625, + 848.1703491210938 + ], + "flags": {}, + "order": 57, + "mode": 0, + "inputs": [ + { + "localized_name": "images", + "name": "images", + "type": "IMAGE", + "link": 5920 + }, + { + "localized_name": "audio", + "name": "audio", + "shape": 7, + "type": "AUDIO", + "link": null + }, + { + "localized_name": "meta_batch", + "name": "meta_batch", + "shape": 7, + "type": "VHS_BatchManager", + "link": null + }, + { + "localized_name": "vae", + "name": "vae", + "shape": 7, + "type": "VAE", + "link": null + }, + { + "localized_name": "frame_rate", + "name": "frame_rate", + "type": "FLOAT", + "widget": { + "name": "frame_rate" + }, + "link": null + }, + { + "localized_name": "loop_count", + "name": "loop_count", + "type": "INT", + "widget": { + "name": "loop_count" + }, + "link": null + }, + { + "localized_name": "filename_prefix", + "name": "filename_prefix", + "type": "STRING", + "widget": { + "name": "filename_prefix" + }, + "link": null + }, + { + "localized_name": "format", + "name": "format", + "type": "COMBO", + "widget": { + "name": "format" + }, + "link": null + }, + { + "localized_name": "pingpong", + "name": "pingpong", + "type": "BOOLEAN", + "widget": { + "name": "pingpong" + }, + "link": null + }, + { + "localized_name": "save_output", + "name": "save_output", + "type": "BOOLEAN", + "widget": { + "name": "save_output" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "Filenames", + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 24, + "loop_count": 0, + "filename_prefix": "ltxv-ic-lora", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "ltxv-ic-lora_00001.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 24, + "workflow": "ltxv-ic-lora_00001.png", + "fullpath": "/opt/ComfyUI/output/ltxv-ic-lora_00001.mp4" + } + } + } + }, + { + "id": 2116, + "type": "STGAdvancedPresets", + "pos": [ + 6526.765625, + 2525.401123046875 + ], + "size": [ + 292.0787048339844, + 58 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "localized_name": "preset", + "name": "preset", + "type": "COMBO", + "widget": { + "name": "preset" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "STG_ADVANCED_PRESET", + "name": "STG_ADVANCED_PRESET", + "type": "STG_ADVANCED_PRESET", + "links": [ + 5873 + ] + } + ], + "properties": { + "Node name for S&R": "STGAdvancedPresets" + }, + "widgets_values": [ + "13b Distilled" + ] + }, + { + "id": 2117, + "type": "Set VAE Decoder Noise", + "pos": [ + 7948.51708984375, + 2248.662841796875 + ], + "size": [ + 294.1568298339844, + 130 + ], + "flags": {}, + "order": 50, + "mode": 0, + "inputs": [ + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5874 + }, + { + "localized_name": "timestep", + "name": "timestep", + "type": "FLOAT", + "widget": { + "name": "timestep" + }, + "link": null + }, + { + "localized_name": "scale", + "name": "scale", + "type": "FLOAT", + "widget": { + "name": "scale" + }, + "link": null + }, + { + "localized_name": "seed", + "name": "seed", + "type": "INT", + "widget": { + "name": "seed" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "VAE", + "name": "VAE", + "type": "VAE", + "links": [ + 5917 + ] + } + ], + "properties": { + "Node name for S&R": "Set VAE Decoder Noise" + }, + "widgets_values": [ + 0.05, + 0.025, + 42, + "fixed" + ] + }, + { + "id": 2096, + "type": "Reroute", + "pos": [ + 3950, + 2050 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5829 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 5831, + 5876 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2072, + "type": "StringToFloatList", + "pos": [ + 6769.21875, + 2838.73681640625 + ], + "size": [ + 395.74224853515625, + 88 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "localized_name": "string", + "name": "string", + "type": "STRING", + "widget": { + "name": "string" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "FLOAT", + "name": "FLOAT", + "type": "FLOAT", + "links": [ + 5782 + ] + } + ], + "properties": { + "Node name for S&R": "StringToFloatList", + "cnr_id": "comfyui-kjnodes", + "ver": "0addfc6101f7a834c7fb6e0a1b26529360ab5350" + }, + "widgets_values": [ + "0.99, 0.9094, 0.0" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 1871, + "type": "STGGuiderAdvanced", + "pos": [ + 6852.89599609375, + 2435.40283203125 + ], + "size": [ + 278.79998779296875, + 262 + ], + "flags": {}, + "order": 46, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 5896 + }, + { + "localized_name": "positive", + "name": "positive", + "type": "CONDITIONING", + "link": 5739 + }, + { + "localized_name": "negative", + "name": "negative", + "type": "CONDITIONING", + "link": 5740 + }, + { + "localized_name": "preset", + "name": "preset", + "shape": 7, + "type": "STG_ADVANCED_PRESET", + "link": 5873 + }, + { + "localized_name": "skip_steps_sigma_threshold", + "name": "skip_steps_sigma_threshold", + "type": "FLOAT", + "widget": { + "name": "skip_steps_sigma_threshold" + }, + "link": null + }, + { + "localized_name": "cfg_star_rescale", + "name": "cfg_star_rescale", + "type": "BOOLEAN", + "widget": { + "name": "cfg_star_rescale" + }, + "link": null + }, + { + "localized_name": "sigmas", + "name": "sigmas", + "type": "STRING", + "widget": { + "name": "sigmas" + }, + "link": null + }, + { + "localized_name": "cfg_values", + "name": "cfg_values", + "type": "STRING", + "widget": { + "name": "cfg_values" + }, + "link": null + }, + { + "localized_name": "stg_scale_values", + "name": "stg_scale_values", + "type": "STRING", + "widget": { + "name": "stg_scale_values" + }, + "link": null + }, + { + "localized_name": "stg_rescale_values", + "name": "stg_rescale_values", + "type": "STRING", + "widget": { + "name": "stg_rescale_values" + }, + "link": null + }, + { + "localized_name": "stg_layers_indices", + "name": "stg_layers_indices", + "type": "STRING", + "widget": { + "name": "stg_layers_indices" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "GUIDER", + "name": "GUIDER", + "type": "GUIDER", + "links": [ + 5906 + ] + } + ], + "properties": { + "Node name for S&R": "STGGuiderAdvanced" + }, + "widgets_values": [ + 0.9970000000000002, + true, + "1", + "1", + "0", + "1", + "[42]" + ] + }, + { + "id": 2124, + "type": "LTXVLoopingSampler", + "pos": [ + 7551.111328125, + 2227.607177734375 + ], + "size": [ + 365.21484375, + 522 + ], + "flags": {}, + "order": 55, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 5901 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5902 + }, + { + "localized_name": "noise", + "name": "noise", + "type": "NOISE", + "link": 5903 + }, + { + "localized_name": "sampler", + "name": "sampler", + "type": "SAMPLER", + "link": 5904 + }, + { + "localized_name": "sigmas", + "name": "sigmas", + "type": "SIGMAS", + "link": 5905 + }, + { + "localized_name": "guider", + "name": "guider", + "type": "GUIDER", + "link": 5906 + }, + { + "localized_name": "latents", + "name": "latents", + "type": "LATENT", + "link": 5961 + }, + { + "localized_name": "optional_cond_image", + "name": "optional_cond_image", + "shape": 7, + "type": "IMAGE", + "link": null + }, + { + "localized_name": "optional_guiding_latents", + "name": "optional_guiding_latents", + "shape": 7, + "type": "LATENT", + "link": 5912 + }, + { + "localized_name": "optional_positive_conditionings", + "name": "optional_positive_conditionings", + "shape": 7, + "type": "CONDITIONING", + "link": null + }, + { + "localized_name": "optional_negative_index_latents", + "name": "optional_negative_index_latents", + "shape": 7, + "type": "LATENT", + "link": null + }, + { + "localized_name": "guiding_strength", + "name": "guiding_strength", + "type": "FLOAT", + "widget": { + "name": "guiding_strength" + }, + "link": null + }, + { + "localized_name": "temporal_tile_size", + "name": "temporal_tile_size", + "type": "INT", + "widget": { + "name": "temporal_tile_size" + }, + "link": null + }, + { + "localized_name": "temporal_overlap", + "name": "temporal_overlap", + "type": "INT", + "widget": { + "name": "temporal_overlap" + }, + "link": null + }, + { + "localized_name": "temporal_overlap_cond_strength", + "name": "temporal_overlap_cond_strength", + "type": "FLOAT", + "widget": { + "name": "temporal_overlap_cond_strength" + }, + "link": null + }, + { + "localized_name": "horizontal_tiles", + "name": "horizontal_tiles", + "type": "INT", + "widget": { + "name": "horizontal_tiles" + }, + "link": null + }, + { + "localized_name": "vertical_tiles", + "name": "vertical_tiles", + "type": "INT", + "widget": { + "name": "vertical_tiles" + }, + "link": null + }, + { + "localized_name": "spatial_overlap", + "name": "spatial_overlap", + "type": "INT", + "widget": { + "name": "spatial_overlap" + }, + "link": null + }, + { + "localized_name": "adain_factor", + "name": "adain_factor", + "shape": 7, + "type": "FLOAT", + "widget": { + "name": "adain_factor" + }, + "link": null + }, + { + "localized_name": "optional_negative_index", + "name": "optional_negative_index", + "shape": 7, + "type": "INT", + "widget": { + "name": "optional_negative_index" + }, + "link": null + }, + { + "localized_name": "optional_negative_index_strength", + "name": "optional_negative_index_strength", + "shape": 7, + "type": "FLOAT", + "widget": { + "name": "optional_negative_index_strength" + }, + "link": null + }, + { + "localized_name": "per_tile_seed_offsets", + "name": "per_tile_seed_offsets", + "shape": 7, + "type": "STRING", + "widget": { + "name": "per_tile_seed_offsets" + }, + "link": null + }, + { + "localized_name": "per_tile_use_negative_latents", + "name": "per_tile_use_negative_latents", + "shape": 7, + "type": "STRING", + "widget": { + "name": "per_tile_use_negative_latents" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "denoised_output", + "name": "denoised_output", + "type": "LATENT", + "links": [ + 5918 + ] + } + ], + "properties": { + "Node name for S&R": "LTXVLoopingSampler" + }, + "widgets_values": [ + 1, + 80, + 24, + 0.5, + 1, + 1, + 1, + 0, + -1, + 1, + "0", + "1" + ] + }, + { + "id": 2127, + "type": "LTXVTiledVAEDecode", + "pos": [ + 7952.56640625, + 2443.8046875 + ], + "size": [ + 290.6636657714844, + 150 + ], + "flags": {}, + "order": 56, + "mode": 0, + "inputs": [ + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5917 + }, + { + "localized_name": "latents", + "name": "latents", + "type": "LATENT", + "link": 5918 + }, + { + "localized_name": "horizontal_tiles", + "name": "horizontal_tiles", + "type": "INT", + "widget": { + "name": "horizontal_tiles" + }, + "link": null + }, + { + "localized_name": "vertical_tiles", + "name": "vertical_tiles", + "type": "INT", + "widget": { + "name": "vertical_tiles" + }, + "link": null + }, + { + "localized_name": "overlap", + "name": "overlap", + "type": "INT", + "widget": { + "name": "overlap" + }, + "link": null + }, + { + "localized_name": "last_frame_fix", + "name": "last_frame_fix", + "type": "BOOLEAN", + "widget": { + "name": "last_frame_fix" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "image", + "name": "image", + "type": "IMAGE", + "links": [ + 5920 + ] + } + ], + "properties": { + "Node name for S&R": "LTXVTiledVAEDecode" + }, + "widgets_values": [ + 2, + 2, + 5, + false + ] + }, + { + "id": 2090, + "type": "Reroute", + "pos": [ + 1915.3045654296875, + 2041.6649169921875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 23, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5818 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 5829 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2088, + "type": "Reroute", + "pos": [ + 2018.0771484375, + 2067.719970703125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 29, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5938 + } + ], + "outputs": [ + { + "name": "", + "type": "MODEL", + "links": [ + 5815 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2129, + "type": "Reroute", + "pos": [ + 2004.1419677734375, + 2654.619873046875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5941 + } + ], + "outputs": [ + { + "name": "", + "type": "MODEL", + "links": [ + 5938 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2094, + "type": "Reroute", + "pos": [ + 2371.384765625, + 2891.617919921875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5825 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 5826, + 5979 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2122, + "type": "LoraLoaderModelOnly", + "pos": [ + 6476.05859375, + 2317.96484375 + ], + "size": [ + 270, + 82 + ], + "flags": {}, + "order": 43, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 5898 + }, + { + "localized_name": "lora_name", + "name": "lora_name", + "type": "COMBO", + "widget": { + "name": "lora_name" + }, + "link": null + }, + { + "localized_name": "strength_model", + "name": "strength_model", + "type": "FLOAT", + "widget": { + "name": "strength_model" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "MODEL", + "name": "MODEL", + "type": "MODEL", + "links": [ + 5896, + 5901 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.44", + "Node name for S&R": "LoraLoaderModelOnly" + }, + "widgets_values": [ + "ltx-video-ICLoRA-detailer-13B-0.9.8", + 1 + ] + }, + { + "id": 2091, + "type": "Reroute", + "pos": [ + 5967.08837890625, + 2053.210205078125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 38, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5831 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 5820, + 5821 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2125, + "type": "Reroute", + "pos": [ + 7255.9951171875, + 2484.927001953125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 54, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5971 + } + ], + "outputs": [ + { + "name": "", + "type": "LATENT", + "links": [ + 5912, + 5961 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 38, + "type": "CLIPLoader", + "pos": [ + 1916.6739501953125, + 2303.91259765625 + ], + "size": [ + 245.33026123046875, + 106 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "localized_name": "clip_name", + "name": "clip_name", + "type": "COMBO", + "widget": { + "name": "clip_name" + }, + "link": null + }, + { + "localized_name": "type", + "name": "type", + "type": "COMBO", + "widget": { + "name": "type" + }, + "link": null + }, + { + "localized_name": "device", + "name": "device", + "shape": 7, + "type": "COMBO", + "widget": { + "name": "device" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "CLIP", + "name": "CLIP", + "type": "CLIP", + "slot_index": 0, + "links": [ + 5603, + 5964, + 5966 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "CLIPLoader" + }, + "widgets_values": [ + "t5xxl_fp16.safetensors", + "ltxv", + "default" + ] + }, + { + "id": 1949, + "type": "PrintSigmas", + "pos": [ + 3674.795654296875, + 2763.217529296875 + ], + "size": [ + 210, + 26 + ], + "flags": {}, + "order": 27, + "mode": 0, + "inputs": [ + { + "localized_name": "sigmas", + "name": "sigmas", + "type": "SIGMAS", + "link": 5641 + } + ], + "outputs": [ + { + "localized_name": "SIGMAS", + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 5881 + ] + } + ], + "properties": { + "Node name for S&R": "PrintSigmas" + }, + "widgets_values": [] + }, + { + "id": 1953, + "type": "FloatToSigmas", + "pos": [ + 3391.44384765625, + 2769.8349609375 + ], + "size": [ + 216.59999084472656, + 26 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "localized_name": "float_list", + "name": "float_list", + "type": "FLOAT", + "link": 5567 + } + ], + "outputs": [ + { + "localized_name": "SIGMAS", + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 5641 + ] + } + ], + "properties": { + "Node name for S&R": "FloatToSigmas", + "cnr_id": "comfyui-kjnodes", + "ver": "1.0.8" + }, + "widgets_values": [] + }, + { + "id": 2022, + "type": "Reroute", + "pos": [ + 3229.825439453125, + 1977.3233642578125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 34, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5715 + } + ], + "outputs": [ + { + "name": "", + "type": "CONDITIONING", + "links": [ + 5741 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2023, + "type": "Reroute", + "pos": [ + 3223.71728515625, + 2017.1053466796875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 36, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5716 + } + ], + "outputs": [ + { + "name": "", + "type": "CONDITIONING", + "links": [ + 5742 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2097, + "type": "Note", + "pos": [ + 2233.589111328125, + 2181.5400390625 + ], + "size": [ + 285.2653503417969, + 88 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "Leave the positive conditioning text blank. Use multi prompt provider node on the right." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 2095, + "type": "Reroute", + "pos": [ + 3925.002197265625, + 2883.0654296875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5826 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 5828 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 73, + "type": "KSamplerSelect", + "pos": [ + 3586.90478515625, + 2493.794189453125 + ], + "size": [ + 251.94110107421875, + 58 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "localized_name": "sampler_name", + "name": "sampler_name", + "type": "COMBO", + "widget": { + "name": "sampler_name" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "SAMPLER", + "name": "SAMPLER", + "type": "SAMPLER", + "links": [ + 5879 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "KSamplerSelect" + }, + "widgets_values": [ + "euler_ancestral" + ] + }, + { + "id": 2131, + "type": "Reroute", + "pos": [ + 3853.322021484375, + 2818.027587890625 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5970 + } + ], + "outputs": [ + { + "name": "", + "type": "MODEL", + "links": [ + 5952 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 1896, + "type": "CheckpointLoaderSimple", + "pos": [ + 1923.9993896484375, + 2810.05615234375 + ], + "size": [ + 315, + 98 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "localized_name": "ckpt_name", + "name": "ckpt_name", + "type": "COMBO", + "widget": { + "name": "ckpt_name" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "MODEL", + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 5941, + 5969, + 5970 + ] + }, + { + "localized_name": "CLIP", + "name": "CLIP", + "type": "CLIP", + "links": null + }, + { + "localized_name": "VAE", + "name": "VAE", + "type": "VAE", + "slot_index": 2, + "links": [ + 5818, + 5825 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": [ + "ltxv-13b-0.9.8-distilled.safetensors" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 1870, + "type": "Set VAE Decoder Noise", + "pos": [ + 4506.759765625, + 2418.0849609375 + ], + "size": [ + 235.1999969482422, + 130 + ], + "flags": {}, + "order": 39, + "mode": 0, + "inputs": [ + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5828 + }, + { + "localized_name": "timestep", + "name": "timestep", + "type": "FLOAT", + "widget": { + "name": "timestep" + }, + "link": null + }, + { + "localized_name": "scale", + "name": "scale", + "type": "FLOAT", + "widget": { + "name": "scale" + }, + "link": null + }, + { + "localized_name": "seed", + "name": "seed", + "type": "INT", + "widget": { + "name": "seed" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "VAE", + "name": "VAE", + "type": "VAE", + "links": [ + 5363 + ] + } + ], + "properties": { + "Node name for S&R": "Set VAE Decoder Noise" + }, + "widgets_values": [ + 0.05000000000000001, + 0.025000000000000005, + 42, + "fixed" + ] + }, + { + "id": 1336, + "type": "VHS_VideoCombine", + "pos": [ + 4850.5517578125, + 2275.85302734375 + ], + "size": [ + 430.260498046875, + 621.5070190429688 + ], + "flags": {}, + "order": 51, + "mode": 0, + "inputs": [ + { + "localized_name": "images", + "name": "images", + "type": "IMAGE", + "link": 3578 + }, + { + "localized_name": "audio", + "name": "audio", + "shape": 7, + "type": "AUDIO", + "link": null + }, + { + "localized_name": "meta_batch", + "name": "meta_batch", + "shape": 7, + "type": "VHS_BatchManager", + "link": null + }, + { + "localized_name": "vae", + "name": "vae", + "shape": 7, + "type": "VAE", + "link": null + }, + { + "localized_name": "frame_rate", + "name": "frame_rate", + "type": "FLOAT", + "widget": { + "name": "frame_rate" + }, + "link": null + }, + { + "localized_name": "loop_count", + "name": "loop_count", + "type": "INT", + "widget": { + "name": "loop_count" + }, + "link": null + }, + { + "localized_name": "filename_prefix", + "name": "filename_prefix", + "type": "STRING", + "widget": { + "name": "filename_prefix" + }, + "link": null + }, + { + "localized_name": "format", + "name": "format", + "type": "COMBO", + "widget": { + "name": "format" + }, + "link": null + }, + { + "localized_name": "pingpong", + "name": "pingpong", + "type": "BOOLEAN", + "widget": { + "name": "pingpong" + }, + "link": null + }, + { + "localized_name": "save_output", + "name": "save_output", + "type": "BOOLEAN", + "widget": { + "name": "save_output" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "Filenames", + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 24, + "loop_count": 0, + "filename_prefix": "ltxv-base", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": false, + "trim_to_audio": false, + "pingpong": false, + "save_output": false, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "ltxv-base_00001.mp4", + "subfolder": "", + "type": "temp", + "format": "video/h264-mp4", + "frame_rate": 24, + "workflow": "ltxv-base_00001.png", + "fullpath": "/opt/ComfyUI/temp/ltxv-base_00001.mp4" + } + } + } + }, + { + "id": 1507, + "type": "RandomNoise", + "pos": [ + 3535.158203125, + 2604.37841796875 + ], + "size": [ + 239.2462158203125, + 82 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "localized_name": "noise_seed", + "name": "noise_seed", + "type": "INT", + "widget": { + "name": "noise_seed" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "NOISE", + "name": "NOISE", + "type": "NOISE", + "slot_index": 0, + "links": [ + 5880 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "RandomNoise" + }, + "widgets_values": [ + 0, + "fixed" + ] + }, + { + "id": 2083, + "type": "Note", + "pos": [ + 1389.35400390625, + 2180.90380859375 + ], + "size": [ + 301.8587951660156, + 88.58767700195312 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "If you want to generate in text-to-video mode, simply bypass the conditioning reference image" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 7, + "type": "CLIPTextEncode", + "pos": [ + 2199.7548828125, + 2475.3994140625 + ], + "size": [ + 324.2440490722656, + 138.9625701904297 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + { + "localized_name": "clip", + "name": "clip", + "type": "CLIP", + "link": 5603 + }, + { + "localized_name": "text", + "name": "text", + "type": "STRING", + "widget": { + "name": "text" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "CONDITIONING", + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 3365 + ] + } + ], + "title": "CLIP Text Encode (Negative Prompt)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "low quality, worst quality, deformed, distorted, disfigured, motion smear, motion artifacts, fused fingers, bad anatomy, weird hand, ugly" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 2137, + "type": "CLIPTextEncode", + "pos": [ + 2207.601806640625, + 2326.387451171875 + ], + "size": [ + 306.794921875, + 108.2911605834961 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [ + { + "localized_name": "clip", + "name": "clip", + "type": "CLIP", + "link": 5966 + }, + { + "localized_name": "text", + "name": "text", + "type": "STRING", + "widget": { + "name": "text" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "CONDITIONING", + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 5967 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.44", + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "" + ] + }, + { + "id": 1241, + "type": "LTXVConditioning", + "pos": [ + 2554.75439453125, + 2188.283203125 + ], + "size": [ + 328.21636962890625, + 78 + ], + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + { + "localized_name": "positive", + "name": "positive", + "type": "CONDITIONING", + "link": 5967 + }, + { + "localized_name": "negative", + "name": "negative", + "type": "CONDITIONING", + "link": 3365 + }, + { + "localized_name": "frame_rate", + "name": "frame_rate", + "type": "FLOAT", + "widget": { + "name": "frame_rate" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "positive", + "name": "positive", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 5584, + 5715 + ] + }, + { + "localized_name": "negative", + "name": "negative", + "type": "CONDITIONING", + "slot_index": 1, + "links": [ + 5585, + 5716 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "LTXVConditioning" + }, + "widgets_values": [ + 24.000000000000004 + ] + }, + { + "id": 1921, + "type": "STGGuiderAdvanced", + "pos": [ + 3237.193359375, + 2187.70556640625 + ], + "size": [ + 278.79998779296875, + 262 + ], + "flags": {}, + "order": 35, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 5969 + }, + { + "localized_name": "positive", + "name": "positive", + "type": "CONDITIONING", + "link": 5584 + }, + { + "localized_name": "negative", + "name": "negative", + "type": "CONDITIONING", + "link": 5585 + }, + { + "localized_name": "preset", + "name": "preset", + "shape": 7, + "type": "STG_ADVANCED_PRESET", + "link": 5613 + }, + { + "localized_name": "skip_steps_sigma_threshold", + "name": "skip_steps_sigma_threshold", + "type": "FLOAT", + "widget": { + "name": "skip_steps_sigma_threshold" + }, + "link": null + }, + { + "localized_name": "cfg_star_rescale", + "name": "cfg_star_rescale", + "type": "BOOLEAN", + "widget": { + "name": "cfg_star_rescale" + }, + "link": null + }, + { + "localized_name": "sigmas", + "name": "sigmas", + "type": "STRING", + "widget": { + "name": "sigmas" + }, + "link": null + }, + { + "localized_name": "cfg_values", + "name": "cfg_values", + "type": "STRING", + "widget": { + "name": "cfg_values" + }, + "link": null + }, + { + "localized_name": "stg_scale_values", + "name": "stg_scale_values", + "type": "STRING", + "widget": { + "name": "stg_scale_values" + }, + "link": null + }, + { + "localized_name": "stg_rescale_values", + "name": "stg_rescale_values", + "type": "STRING", + "widget": { + "name": "stg_rescale_values" + }, + "link": null + }, + { + "localized_name": "stg_layers_indices", + "name": "stg_layers_indices", + "type": "STRING", + "widget": { + "name": "stg_layers_indices" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "GUIDER", + "name": "GUIDER", + "type": "GUIDER", + "links": [ + 5878 + ] + } + ], + "properties": { + "Node name for S&R": "STGGuiderAdvanced" + }, + "widgets_values": [ + 0.9970000000000002, + true, + "1", + "1", + "0,0,0,0,0,0", + "1", + "[25]" + ] + }, + { + "id": 2119, + "type": "EmptyLTXVLatentVideo", + "pos": [ + 3248.267578125, + 2490.9853515625 + ], + "size": [ + 270, + 130 + ], + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [ + { + "localized_name": "width", + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": 5973 + }, + { + "localized_name": "height", + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": 5974 + }, + { + "localized_name": "length", + "name": "length", + "type": "INT", + "widget": { + "name": "length" + }, + "link": null + }, + { + "localized_name": "batch_size", + "name": "batch_size", + "type": "INT", + "widget": { + "name": "batch_size" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "LATENT", + "name": "LATENT", + "type": "LATENT", + "links": [ + 5895 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.44", + "Node name for S&R": "EmptyLTXVLatentVideo" + }, + "widgets_values": [ + 768, + 512, + 361, + 1 + ] + }, + { + "id": 2142, + "type": "ImageResizeKJ", + "pos": [ + 2788.995361328125, + 2546.055419921875 + ], + "size": [ + 210, + 238 + ], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ + { + "localized_name": "image", + "name": "image", + "type": "IMAGE", + "link": 5982 + }, + { + "localized_name": "width_input", + "name": "width_input", + "shape": 7, + "type": "INT", + "link": 5976 + }, + { + "localized_name": "height_input", + "name": "height_input", + "shape": 7, + "type": "INT", + "link": 5977 + }, + { + "localized_name": "get_image_size", + "name": "get_image_size", + "shape": 7, + "type": "IMAGE", + "link": null + }, + { + "localized_name": "width", + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": null + }, + { + "localized_name": "height", + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": null + }, + { + "localized_name": "upscale_method", + "name": "upscale_method", + "type": "COMBO", + "widget": { + "name": "upscale_method" + }, + "link": null + }, + { + "localized_name": "keep_proportion", + "name": "keep_proportion", + "type": "BOOLEAN", + "widget": { + "name": "keep_proportion" + }, + "link": null + }, + { + "localized_name": "divisible_by", + "name": "divisible_by", + "type": "INT", + "widget": { + "name": "divisible_by" + }, + "link": null + }, + { + "localized_name": "crop", + "name": "crop", + "shape": 7, + "type": "COMBO", + "widget": { + "name": "crop" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 5978 + ] + }, + { + "localized_name": "width", + "name": "width", + "type": "INT", + "links": null + }, + { + "localized_name": "height", + "name": "height", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "ImageResizeKJ", + "cnr_id": "comfyui-kjnodes", + "ver": "1.0.8" + }, + "widgets_values": [ + 512, + 512, + "bilinear", + false, + 32, + "center" + ] + }, + { + "id": 2143, + "type": "VAEEncode", + "pos": [ + 3093.18896484375, + 2610.00048828125 + ], + "size": [ + 140, + 46 + ], + "flags": {}, + "order": 40, + "mode": 0, + "inputs": [ + { + "localized_name": "pixels", + "name": "pixels", + "type": "IMAGE", + "link": 5978 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5979 + } + ], + "outputs": [ + { + "localized_name": "LATENT", + "name": "LATENT", + "type": "LATENT", + "links": [ + 5980 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.43", + "Node name for S&R": "VAEEncode" + }, + "widgets_values": [] + }, + { + "id": 2141, + "type": "PrimitiveInt", + "pos": [ + 2528.516357421875, + 2724.28271484375 + ], + "size": [ + 210, + 82 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "localized_name": "value", + "name": "value", + "type": "INT", + "widget": { + "name": "value" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "INT", + "name": "INT", + "type": "INT", + "links": [ + 5974, + 5977 + ] + } + ], + "title": "Height", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.43", + "Node name for S&R": "PrimitiveInt" + }, + "widgets_values": [ + 512, + "fixed" + ] + }, + { + "id": 1828, + "type": "LTXVLatentUpsamplerModelLoader", + "pos": [ + 5633.87890625, + 2243.88720703125 + ], + "size": [ + 349.8224792480469, + 113.41394805908203 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "localized_name": "upscale_model", + "name": "upscale_model", + "type": "COMBO", + "widget": { + "name": "upscale_model" + }, + "link": null + }, + { + "localized_name": "spatial_upsample", + "name": "spatial_upsample", + "type": "BOOLEAN", + "widget": { + "name": "spatial_upsample" + }, + "link": null + }, + { + "localized_name": "temporal_upsample", + "name": "temporal_upsample", + "type": "BOOLEAN", + "widget": { + "name": "temporal_upsample" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "UPSCALE_MODEL", + "name": "UPSCALE_MODEL", + "type": "UPSCALE_MODEL", + "links": [ + 5303 + ] + } + ], + "properties": { + "Node name for S&R": "LTXVLatentUpsamplerModelLoader" + }, + "widgets_values": [ + "ltxv-spatial-upscaler-0.9.8.safetensors", + true, + false + ] + }, + { + "id": 1691, + "type": "LTXVLatentUpsampler", + "pos": [ + 6005.61767578125, + 2431.710205078125 + ], + "size": [ + 235.1999969482422, + 66 + ], + "flags": {}, + "order": 53, + "mode": 0, + "inputs": [ + { + "localized_name": "samples", + "name": "samples", + "type": "LATENT", + "link": 5839 + }, + { + "localized_name": "upscale_model", + "name": "upscale_model", + "type": "UPSCALE_MODEL", + "link": 5303 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5820 + } + ], + "outputs": [ + { + "localized_name": "LATENT", + "name": "LATENT", + "type": "LATENT", + "links": [ + 5971 + ] + } + ], + "properties": { + "Node name for S&R": "LTXVLatentUpsampler" + }, + "widgets_values": [] + }, + { + "id": 2089, + "type": "Reroute", + "pos": [ + 6366.45947265625, + 2080.94482421875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 37, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5815 + } + ], + "outputs": [ + { + "name": "", + "type": "MODEL", + "links": [ + 5898 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2092, + "type": "Reroute", + "pos": [ + 7432.23681640625, + 2050.378173828125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 44, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5821 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 5823, + 5902 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2093, + "type": "Reroute", + "pos": [ + 7849.55517578125, + 2052.93408203125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 47, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5823 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 5874 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2102, + "type": "Reroute", + "pos": [ + 5431.9970703125, + 2652.271240234375 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 52, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5838 + } + ], + "outputs": [ + { + "name": "", + "type": "LATENT", + "links": [ + 5839 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 1967, + "type": "STGAdvancedPresets", + "pos": [ + 2984.207275390625, + 2431.851318359375 + ], + "size": [ + 232.07870483398438, + 58 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "localized_name": "preset", + "name": "preset", + "type": "COMBO", + "widget": { + "name": "preset" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "STG_ADVANCED_PRESET", + "name": "STG_ADVANCED_PRESET", + "type": "STG_ADVANCED_PRESET", + "links": [ + 5613 + ] + } + ], + "properties": { + "Node name for S&R": "STGAdvancedPresets" + }, + "widgets_values": [ + "13b Distilled" + ] + }, + { + "id": 2144, + "type": "Reroute", + "pos": [ + 1959.7939453125, + 2957.10400390625 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 26, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5983 + } + ], + "outputs": [ + { + "name": "", + "type": "IMAGE", + "links": [ + 5982, + 5984 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2145, + "type": "Reroute", + "pos": [ + 3833.28857421875, + 2968.962646484375 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 33, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5984 + } + ], + "outputs": [ + { + "name": "", + "type": "IMAGE", + "links": [ + 5985 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2140, + "type": "PrimitiveInt", + "pos": [ + 2536.9140625, + 2594.824462890625 + ], + "size": [ + 210, + 82 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "localized_name": "value", + "name": "value", + "type": "INT", + "widget": { + "name": "value" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "INT", + "name": "INT", + "type": "INT", + "links": [ + 5973, + 5976 + ] + } + ], + "title": "Width", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.43", + "Node name for S&R": "PrimitiveInt" + }, + "widgets_values": [ + 768, + "fixed" + ] + }, + { + "id": 1960, + "type": "LoadImage", + "pos": [ + 1113.742919921875, + 2334.58203125 + ], + "size": [ + 741.6028442382812, + 428.4986877441406 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "localized_name": "image", + "name": "image", + "type": "COMBO", + "widget": { + "name": "image" + }, + "link": null + }, + { + "localized_name": "choose file to upload", + "name": "upload", + "type": "IMAGEUPLOAD", + "widget": { + "name": "upload" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 5983 + ] + }, + { + "localized_name": "MASK", + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.30", + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "chimpanzee.webp", + "image" + ] + }, + { + "id": 2118, + "type": "LTXVLoopingSampler", + "pos": [ + 4011.846923828125, + 2252.72412109375 + ], + "size": [ + 365.21484375, + 522 + ], + "flags": {}, + "order": 45, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 5952 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5876 + }, + { + "localized_name": "noise", + "name": "noise", + "type": "NOISE", + "link": 5880 + }, + { + "localized_name": "sampler", + "name": "sampler", + "type": "SAMPLER", + "link": 5879 + }, + { + "localized_name": "sigmas", + "name": "sigmas", + "type": "SIGMAS", + "link": 5881 + }, + { + "localized_name": "guider", + "name": "guider", + "type": "GUIDER", + "link": 5878 + }, + { + "localized_name": "latents", + "name": "latents", + "type": "LATENT", + "link": 5895 + }, + { + "localized_name": "optional_cond_image", + "name": "optional_cond_image", + "shape": 7, + "type": "IMAGE", + "link": 5985 + }, + { + "localized_name": "optional_guiding_latents", + "name": "optional_guiding_latents", + "shape": 7, + "type": "LATENT", + "link": null + }, + { + "localized_name": "optional_positive_conditionings", + "name": "optional_positive_conditionings", + "shape": 7, + "type": "CONDITIONING", + "link": 5968 + }, + { + "localized_name": "optional_negative_index_latents", + "name": "optional_negative_index_latents", + "shape": 7, + "type": "LATENT", + "link": 5980 + }, + { + "localized_name": "guiding_strength", + "name": "guiding_strength", + "type": "FLOAT", + "widget": { + "name": "guiding_strength" + }, + "link": null + }, + { + "localized_name": "temporal_tile_size", + "name": "temporal_tile_size", + "type": "INT", + "widget": { + "name": "temporal_tile_size" + }, + "link": null + }, + { + "localized_name": "temporal_overlap", + "name": "temporal_overlap", + "type": "INT", + "widget": { + "name": "temporal_overlap" + }, + "link": null + }, + { + "localized_name": "temporal_overlap_cond_strength", + "name": "temporal_overlap_cond_strength", + "type": "FLOAT", + "widget": { + "name": "temporal_overlap_cond_strength" + }, + "link": null + }, + { + "localized_name": "horizontal_tiles", + "name": "horizontal_tiles", + "type": "INT", + "widget": { + "name": "horizontal_tiles" + }, + "link": null + }, + { + "localized_name": "vertical_tiles", + "name": "vertical_tiles", + "type": "INT", + "widget": { + "name": "vertical_tiles" + }, + "link": null + }, + { + "localized_name": "spatial_overlap", + "name": "spatial_overlap", + "type": "INT", + "widget": { + "name": "spatial_overlap" + }, + "link": null + }, + { + "localized_name": "adain_factor", + "name": "adain_factor", + "shape": 7, + "type": "FLOAT", + "widget": { + "name": "adain_factor" + }, + "link": null + }, + { + "localized_name": "optional_negative_index", + "name": "optional_negative_index", + "shape": 7, + "type": "INT", + "widget": { + "name": "optional_negative_index" + }, + "link": null + }, + { + "localized_name": "optional_negative_index_strength", + "name": "optional_negative_index_strength", + "shape": 7, + "type": "FLOAT", + "widget": { + "name": "optional_negative_index_strength" + }, + "link": null + }, + { + "localized_name": "per_tile_seed_offsets", + "name": "per_tile_seed_offsets", + "shape": 7, + "type": "STRING", + "widget": { + "name": "per_tile_seed_offsets" + }, + "link": null + }, + { + "localized_name": "per_tile_use_negative_latents", + "name": "per_tile_use_negative_latents", + "shape": 7, + "type": "STRING", + "widget": { + "name": "per_tile_use_negative_latents" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "denoised_output", + "name": "denoised_output", + "type": "LATENT", + "links": [ + 5884, + 5885 + ] + } + ], + "properties": { + "Node name for S&R": "LTXVLoopingSampler" + }, + "widgets_values": [ + 1, + 120, + 32, + 0.5, + 1, + 1, + 1, + 0.25000000000000006, + -1, + 1, + "0", + "1" + ] + }, + { + "id": 2136, + "type": "MultiPromptProvider", + "pos": [ + 2547.635009765625, + 2312.775390625 + ], + "size": [ + 314.39056396484375, + 151.14501953125 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [ + { + "localized_name": "clip", + "name": "clip", + "type": "CLIP", + "link": 5964 + }, + { + "localized_name": "prompts", + "name": "prompts", + "type": "STRING", + "widget": { + "name": "prompts" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "conditionings", + "name": "conditionings", + "type": "CONDITIONING", + "links": [ + 5968 + ] + } + ], + "properties": { + "Node name for S&R": "MultiPromptProvider" + }, + "widgets_values": [ + "a chimpanzee walks in the jungle |\na chimpanzee stops and eats a snack |\na chimpanzee lays on the ground" + ] + } + ], + "links": [ + [ + 3365, + 7, + 0, + 1241, + 1, + "CONDITIONING" + ], + [ + 3578, + 1335, + 0, + 1336, + 0, + "IMAGE" + ], + [ + 5303, + 1828, + 0, + 1691, + 1, + "UPSCALE_MODEL" + ], + [ + 5363, + 1870, + 0, + 1335, + 1, + "VAE" + ], + [ + 5567, + 1952, + 0, + 1953, + 0, + "FLOAT" + ], + [ + 5584, + 1241, + 0, + 1921, + 1, + "CONDITIONING" + ], + [ + 5585, + 1241, + 1, + 1921, + 2, + "CONDITIONING" + ], + [ + 5603, + 38, + 0, + 7, + 0, + "CLIP" + ], + [ + 5613, + 1967, + 0, + 1921, + 3, + "STG_ADVANCED_PRESET" + ], + [ + 5641, + 1953, + 0, + 1949, + 0, + "SIGMAS" + ], + [ + 5715, + 1241, + 0, + 2022, + 0, + "*" + ], + [ + 5716, + 1241, + 1, + 2023, + 0, + "*" + ], + [ + 5739, + 2037, + 0, + 1871, + 1, + "CONDITIONING" + ], + [ + 5740, + 2038, + 0, + 1871, + 2, + "CONDITIONING" + ], + [ + 5741, + 2022, + 0, + 2037, + 0, + "*" + ], + [ + 5742, + 2023, + 0, + 2038, + 0, + "*" + ], + [ + 5782, + 2072, + 0, + 2073, + 0, + "FLOAT" + ], + [ + 5815, + 2088, + 0, + 2089, + 0, + "*" + ], + [ + 5818, + 1896, + 2, + 2090, + 0, + "*" + ], + [ + 5820, + 2091, + 0, + 1691, + 2, + "VAE" + ], + [ + 5821, + 2091, + 0, + 2092, + 0, + "*" + ], + [ + 5823, + 2092, + 0, + 2093, + 0, + "*" + ], + [ + 5825, + 1896, + 2, + 2094, + 0, + "*" + ], + [ + 5826, + 2094, + 0, + 2095, + 0, + "*" + ], + [ + 5828, + 2095, + 0, + 1870, + 0, + "VAE" + ], + [ + 5829, + 2090, + 0, + 2096, + 0, + "*" + ], + [ + 5831, + 2096, + 0, + 2091, + 0, + "*" + ], + [ + 5838, + 2101, + 0, + 2102, + 0, + "*" + ], + [ + 5839, + 2102, + 0, + 1691, + 0, + "LATENT" + ], + [ + 5873, + 2116, + 0, + 1871, + 3, + "STG_ADVANCED_PRESET" + ], + [ + 5874, + 2093, + 0, + 2117, + 0, + "VAE" + ], + [ + 5876, + 2096, + 0, + 2118, + 1, + "VAE" + ], + [ + 5878, + 1921, + 0, + 2118, + 5, + "GUIDER" + ], + [ + 5879, + 73, + 0, + 2118, + 3, + "SAMPLER" + ], + [ + 5880, + 1507, + 0, + 2118, + 2, + "NOISE" + ], + [ + 5881, + 1949, + 0, + 2118, + 4, + "SIGMAS" + ], + [ + 5884, + 2118, + 0, + 1335, + 0, + "LATENT" + ], + [ + 5885, + 2118, + 0, + 2101, + 0, + "*" + ], + [ + 5895, + 2119, + 0, + 2118, + 6, + "LATENT" + ], + [ + 5896, + 2122, + 0, + 1871, + 0, + "MODEL" + ], + [ + 5898, + 2089, + 0, + 2122, + 0, + "MODEL" + ], + [ + 5901, + 2122, + 0, + 2124, + 0, + "MODEL" + ], + [ + 5902, + 2092, + 0, + 2124, + 1, + "VAE" + ], + [ + 5903, + 1598, + 0, + 2124, + 2, + "NOISE" + ], + [ + 5904, + 1926, + 0, + 2124, + 3, + "SAMPLER" + ], + [ + 5905, + 2073, + 0, + 2124, + 4, + "SIGMAS" + ], + [ + 5906, + 1871, + 0, + 2124, + 5, + "GUIDER" + ], + [ + 5912, + 2125, + 0, + 2124, + 8, + "LATENT" + ], + [ + 5917, + 2117, + 0, + 2127, + 0, + "VAE" + ], + [ + 5918, + 2124, + 0, + 2127, + 1, + "LATENT" + ], + [ + 5920, + 2127, + 0, + 1973, + 0, + "IMAGE" + ], + [ + 5938, + 2129, + 0, + 2088, + 0, + "*" + ], + [ + 5941, + 1896, + 0, + 2129, + 0, + "*" + ], + [ + 5952, + 2131, + 0, + 2118, + 0, + "MODEL" + ], + [ + 5961, + 2125, + 0, + 2124, + 6, + "LATENT" + ], + [ + 5964, + 38, + 0, + 2136, + 0, + "CLIP" + ], + [ + 5966, + 38, + 0, + 2137, + 0, + "CLIP" + ], + [ + 5967, + 2137, + 0, + 1241, + 0, + "CONDITIONING" + ], + [ + 5968, + 2136, + 0, + 2118, + 9, + "CONDITIONING" + ], + [ + 5969, + 1896, + 0, + 1921, + 0, + "MODEL" + ], + [ + 5970, + 1896, + 0, + 2131, + 0, + "*" + ], + [ + 5971, + 1691, + 0, + 2125, + 0, + "*" + ], + [ + 5973, + 2140, + 0, + 2119, + 0, + "INT" + ], + [ + 5974, + 2141, + 0, + 2119, + 1, + "INT" + ], + [ + 5976, + 2140, + 0, + 2142, + 1, + "INT" + ], + [ + 5977, + 2141, + 0, + 2142, + 2, + "INT" + ], + [ + 5978, + 2142, + 0, + 2143, + 0, + "IMAGE" + ], + [ + 5979, + 2094, + 0, + 2143, + 1, + "VAE" + ], + [ + 5980, + 2143, + 0, + 2118, + 10, + "LATENT" + ], + [ + 5982, + 2144, + 0, + 2142, + 0, + "IMAGE" + ], + [ + 5983, + 1960, + 0, + 2144, + 0, + "*" + ], + [ + 5984, + 2144, + 0, + 2145, + 0, + "*" + ], + [ + 5985, + 2145, + 0, + 2118, + 7, + "IMAGE" + ] + ], + "groups": [ + { + "id": 34, + "title": "Latent Upscaler", + "bounding": [ + 5585.8896484375, + 2108.431640625, + 720.9568481445312, + 582.6881103515625 + ], + "color": "#a1309b", + "font_size": 24, + "flags": {}, + "nodes": [ + 1828, + 1691 + ] + }, + { + "id": 42, + "title": "Add Details", + "bounding": [ + 6335.14013671875, + 2116.384521484375, + 2866.58203125, + 1085.7049560546875 + ], + "color": "#a1309b", + "font_size": 24, + "flags": {}, + "nodes": [ + 1926, + 2038, + 2037, + 2073, + 1598, + 1973, + 2116, + 2117, + 2072, + 1871, + 2124, + 2127, + 2122, + 2125 + ] + }, + { + "id": 46, + "title": "Reference Image", + "bounding": [ + 1103.742919921875, + 2107.3037109375, + 778.158203125, + 820.155029296875 + ], + "color": "#8A8", + "font_size": 24, + "flags": {}, + "nodes": [ + 2083, + 1960 + ] + }, + { + "id": 48, + "title": "LTXV Base Video", + "bounding": [ + 1902.1943359375, + 2103.927490234375, + 3663.2529296875, + 825.6270751953125 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {}, + "nodes": [ + 1335, + 1952, + 2101, + 2129, + 2094, + 38, + 1949, + 1953, + 2097, + 2095, + 73, + 2131, + 1896, + 1870, + 1336, + 1507, + 7, + 2137, + 1241, + 1921, + 2119, + 2142, + 2143, + 2141, + 2102, + 1967, + 2140, + 2118, + 2136 + ] + } + ], + "config": {}, + "extra": { + "ds": { + "scale": 0.8954302432552395, + "offset": [ + -2265.7314583089683, + -2087.6123877936175 + ] + }, + "frontendVersion": "1.17.11", + "VHS_latentpreview": true, + "VHS_latentpreviewrate": 0, + "VHS_MetadataImage": true, + "VHS_KeepIntermediate": true, + "prompt": { + "7": { + "inputs": { + "text": "low quality, worst quality, deformed, distorted, disfigured, motion smear, motion artifacts, fused fingers, bad anatomy, weird hand, ugly", + "clip": [ + "38", + 0 + ] + }, + "class_type": "CLIPTextEncode", + "_meta": { + "title": "CLIP Text Encode (Negative Prompt)" + } + }, + "38": { + "inputs": { + "clip_name": "t5xxl_fp16.safetensors", + "type": "ltxv", + "device": "default" + }, + "class_type": "CLIPLoader", + "_meta": { + "title": "Load CLIP" + } + }, + "73": { + "inputs": { + "sampler_name": "euler_ancestral" + }, + "class_type": "KSamplerSelect", + "_meta": { + "title": "KSamplerSelect" + } + }, + "1241": { + "inputs": { + "frame_rate": 24.000000000000004, + "positive": [ + "2137", + 0 + ], + "negative": [ + "7", + 0 + ] + }, + "class_type": "LTXVConditioning", + "_meta": { + "title": "LTXVConditioning" + } + }, + "1335": { + "inputs": { + "samples": [ + "2118", + 0 + ], + "vae": [ + "1870", + 0 + ] + }, + "class_type": "VAEDecode", + "_meta": { + "title": "VAE Decode" + } + }, + "1336": { + "inputs": { + "frame_rate": 24, + "loop_count": 0, + "filename_prefix": "ltxv-base", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": false, + "trim_to_audio": false, + "pingpong": false, + "save_output": false, + "images": [ + "1335", + 0 + ] + }, + "class_type": "VHS_VideoCombine", + "_meta": { + "title": "Video Combine πŸŽ₯πŸ…₯πŸ…—πŸ…’" + } + }, + "1507": { + "inputs": { + "noise_seed": 0 + }, + "class_type": "RandomNoise", + "_meta": { + "title": "RandomNoise" + } + }, + "1598": { + "inputs": { + "noise_seed": 1625 + }, + "class_type": "RandomNoise", + "_meta": { + "title": "RandomNoise" + } + }, + "1691": { + "inputs": { + "samples": [ + "2118", + 0 + ], + "upscale_model": [ + "1828", + 0 + ], + "vae": [ + "1896", + 2 + ] + }, + "class_type": "LTXVLatentUpsampler", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ LTXV Latent Upsampler" + } + }, + "1828": { + "inputs": { + "upscale_model": "ltxv-spatial-upscaler-0.9.8.safetensors", + "spatial_upsample": true, + "temporal_upsample": false + }, + "class_type": "LTXVLatentUpsamplerModelLoader", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ LTXV Latent Upsampler Model Loader" + } + }, + "1870": { + "inputs": { + "timestep": 0.05000000000000001, + "scale": 0.025000000000000005, + "seed": 42, + "vae": [ + "1896", + 2 + ] + }, + "class_type": "Set VAE Decoder Noise", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ Set VAE Decoder Noise" + } + }, + "1871": { + "inputs": { + "skip_steps_sigma_threshold": 0.9970000000000002, + "cfg_star_rescale": true, + "sigmas": "1", + "cfg_values": "1", + "stg_scale_values": "0", + "stg_rescale_values": "1", + "stg_layers_indices": "[42]", + "model": [ + "2122", + 0 + ], + "positive": [ + "1241", + 0 + ], + "negative": [ + "1241", + 1 + ], + "preset": [ + "2116", + 0 + ] + }, + "class_type": "STGGuiderAdvanced", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ STG Guider Advanced" + } + }, + "1896": { + "inputs": { + "ckpt_name": "ltxv-13b-0.9.8-distilled.safetensors" + }, + "class_type": "CheckpointLoaderSimple", + "_meta": { + "title": "Load Checkpoint" + } + }, + "1921": { + "inputs": { + "skip_steps_sigma_threshold": 0.9970000000000002, + "cfg_star_rescale": true, + "sigmas": "1", + "cfg_values": "1", + "stg_scale_values": "0,0,0,0,0,0", + "stg_rescale_values": "1", + "stg_layers_indices": "[25]", + "model": [ + "1896", + 0 + ], + "positive": [ + "1241", + 0 + ], + "negative": [ + "1241", + 1 + ], + "preset": [ + "1967", + 0 + ] + }, + "class_type": "STGGuiderAdvanced", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ STG Guider Advanced" + } + }, + "1926": { + "inputs": { + "sampler_name": "euler_ancestral" + }, + "class_type": "KSamplerSelect", + "_meta": { + "title": "KSamplerSelect" + } + }, + "1949": { + "inputs": { + "sigmas": [ + "1953", + 0 + ] + }, + "class_type": "PrintSigmas", + "_meta": { + "title": "PrintSigmas" + } + }, + "1952": { + "inputs": { + "string": "1.0000, 0.9937, 0.9875, 0.9812, 0.9750, 0.9094, 0.7250, 0.4219, 0.0\n" + }, + "class_type": "StringToFloatList", + "_meta": { + "title": "String to Float List" + } + }, + "1953": { + "inputs": { + "float_list": [ + "1952", + 0 + ] + }, + "class_type": "FloatToSigmas", + "_meta": { + "title": "Float To Sigmas" + } + }, + "1960": { + "inputs": { + "image": "chimpanzee.webp" + }, + "class_type": "LoadImage", + "_meta": { + "title": "Load Image" + } + }, + "1967": { + "inputs": { + "preset": "13b Distilled" + }, + "class_type": "STGAdvancedPresets", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ STG Advanced Presets" + } + }, + "1973": { + "inputs": { + "frame_rate": 24, + "loop_count": 0, + "filename_prefix": "ltxv-ic-lora", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "images": [ + "2127", + 0 + ] + }, + "class_type": "VHS_VideoCombine", + "_meta": { + "title": "Video Combine πŸŽ₯πŸ…₯πŸ…—πŸ…’" + } + }, + "2072": { + "inputs": { + "string": "0.99, 0.9094, 0.0" + }, + "class_type": "StringToFloatList", + "_meta": { + "title": "String to Float List" + } + }, + "2073": { + "inputs": { + "float_list": [ + "2072", + 0 + ] + }, + "class_type": "FloatToSigmas", + "_meta": { + "title": "Float To Sigmas" + } + }, + "2116": { + "inputs": { + "preset": "13b Distilled" + }, + "class_type": "STGAdvancedPresets", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ STG Advanced Presets" + } + }, + "2117": { + "inputs": { + "timestep": 0.05, + "scale": 0.025, + "seed": 42, + "vae": [ + "1896", + 2 + ] + }, + "class_type": "Set VAE Decoder Noise", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ Set VAE Decoder Noise" + } + }, + "2118": { + "inputs": { + "guiding_strength": 1, + "temporal_tile_size": 120, + "temporal_overlap": 32, + "temporal_overlap_cond_strength": 0.5, + "horizontal_tiles": 1, + "vertical_tiles": 1, + "spatial_overlap": 1, + "adain_factor": 0.25000000000000006, + "optional_negative_index": -1, + "optional_negative_index_strength": 1, + "per_tile_seed_offsets": "0", + "per_tile_use_negative_latents": "1", + "model": [ + "1896", + 0 + ], + "vae": [ + "1896", + 2 + ], + "noise": [ + "1507", + 0 + ], + "sampler": [ + "73", + 0 + ], + "sigmas": [ + "1949", + 0 + ], + "guider": [ + "1921", + 0 + ], + "latents": [ + "2119", + 0 + ], + "optional_cond_image": [ + "1960", + 0 + ], + "optional_positive_conditionings": [ + "2136", + 0 + ], + "optional_negative_index_latents": [ + "2143", + 0 + ] + }, + "class_type": "LTXVLoopingSampler", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ LTXV Looping Sampler" + } + }, + "2119": { + "inputs": { + "width": [ + "2140", + 0 + ], + "height": [ + "2141", + 0 + ], + "length": 361, + "batch_size": 1 + }, + "class_type": "EmptyLTXVLatentVideo", + "_meta": { + "title": "EmptyLTXVLatentVideo" + } + }, + "2122": { + "inputs": { + "lora_name": "ltx-video-ICLoRA-detailer-13B-0.9.8", + "strength_model": 1, + "model": [ + "1896", + 0 + ] + }, + "class_type": "LoraLoaderModelOnly", + "_meta": { + "title": "LoraLoaderModelOnly" + } + }, + "2124": { + "inputs": { + "guiding_strength": 1, + "temporal_tile_size": 80, + "temporal_overlap": 24, + "temporal_overlap_cond_strength": 0.5, + "horizontal_tiles": 1, + "vertical_tiles": 1, + "spatial_overlap": 1, + "adain_factor": 0, + "optional_negative_index": -1, + "optional_negative_index_strength": 1, + "per_tile_seed_offsets": "0", + "per_tile_use_negative_latents": "1", + "model": [ + "2122", + 0 + ], + "vae": [ + "1896", + 2 + ], + "noise": [ + "1598", + 0 + ], + "sampler": [ + "1926", + 0 + ], + "sigmas": [ + "2073", + 0 + ], + "guider": [ + "1871", + 0 + ], + "latents": [ + "1691", + 0 + ], + "optional_guiding_latents": [ + "1691", + 0 + ] + }, + "class_type": "LTXVLoopingSampler", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ LTXV Looping Sampler" + } + }, + "2127": { + "inputs": { + "horizontal_tiles": 2, + "vertical_tiles": 2, + "overlap": 5, + "last_frame_fix": false, + "vae": [ + "2117", + 0 + ], + "latents": [ + "2124", + 0 + ] + }, + "class_type": "LTXVTiledVAEDecode", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ LTXV Tiled VAE Decode" + } + }, + "2136": { + "inputs": { + "prompts": "a chimpanzee walks in the jungle |\na chimpanzee stops and eats a snack |\na chimpanzee lays on the ground", + "clip": [ + "38", + 0 + ] + }, + "class_type": "MultiPromptProvider", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ Multi Prompt Provider" + } + }, + "2137": { + "inputs": { + "text": "", + "clip": [ + "38", + 0 + ] + }, + "class_type": "CLIPTextEncode", + "_meta": { + "title": "CLIP Text Encode (Prompt)" + } + }, + "2140": { + "inputs": { + "value": 768 + }, + "class_type": "PrimitiveInt", + "_meta": { + "title": "Width" + } + }, + "2141": { + "inputs": { + "value": 512 + }, + "class_type": "PrimitiveInt", + "_meta": { + "title": "Height" + } + }, + "2142": { + "inputs": { + "width": 512, + "height": 512, + "upscale_method": "bilinear", + "keep_proportion": false, + "divisible_by": 32, + "crop": "center", + "image": [ + "1960", + 0 + ], + "width_input": [ + "2140", + 0 + ], + "height_input": [ + "2141", + 0 + ] + }, + "class_type": "ImageResizeKJ", + "_meta": { + "title": "Resize Image" + } + }, + "2143": { + "inputs": { + "pixels": [ + "2142", + 0 + ], + "vae": [ + "1896", + 2 + ] + }, + "class_type": "VAEEncode", + "_meta": { + "title": "VAE Encode" + } + } + }, + "comfy_fork_version": "develop@ba9dad4", + "workspace_info": { + "id": "elBQFQknIoLYTEwIloQuw" + }, + "node_versions": { + "comfy-core": "0.3.20" + } + }, + "version": 0.4 +} diff --git a/example_workflows/ltxv-13b-i2v-mixed-multiscale.json b/example_workflows/ltxv-13b-i2v-mixed-multiscale.json index 36d9c74..d2a583b 100644 --- a/example_workflows/ltxv-13b-i2v-mixed-multiscale.json +++ b/example_workflows/ltxv-13b-i2v-mixed-multiscale.json @@ -116,7 +116,7 @@ "Node name for S&R": "LTXVLatentUpsamplerModelLoader" }, "widgets_values": [ - "ltxv-spatial-upscaler-0.9.7.safetensors", + "ltxv-spatial-upscaler-0.9.8.safetensors", true, false ] @@ -3049,7 +3049,7 @@ }, "1828": { "inputs": { - "upscale_model": "ltxv-spatial-upscaler-0.9.7.safetensors", + "upscale_model": "ltxv-spatial-upscaler-0.9.8.safetensors", "spatial_upsample": true, "temporal_upsample": false }, diff --git a/example_workflows/ltxv-13b-upscale.json b/example_workflows/ltxv-13b-upscale.json new file mode 100644 index 0000000..2ab6787 --- /dev/null +++ b/example_workflows/ltxv-13b-upscale.json @@ -0,0 +1,2604 @@ +{ + "id": "394ed254-7306-42a2-9ae6-aa880ce4456d", + "revision": 0, + "last_node_id": 2008, + "last_link_id": 5770, + "nodes": [ + { + "id": 7, + "type": "CLIPTextEncode", + "pos": [ + 722.5008544921875, + 2398.3359375 + ], + "size": [ + 317.832275390625, + 213.2843780517578 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "localized_name": "clip", + "name": "clip", + "type": "CLIP", + "link": 75 + }, + { + "localized_name": "text", + "name": "text", + "type": "STRING", + "widget": { + "name": "text" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "CONDITIONING", + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 3365 + ] + } + ], + "title": "CLIP Text Encode (Negative Prompt)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "low quality, worst quality, deformed, distorted, disfigured, motion smear, motion artifacts, fused fingers, bad anatomy, weird hand, ugly" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 1894, + "type": "LTXVLoopingSampler", + "pos": [ + 2618.935791015625, + 2138.807861328125 + ], + "size": [ + 305.21484375, + 474 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 5447 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5456 + }, + { + "localized_name": "noise", + "name": "noise", + "type": "NOISE", + "link": 5453 + }, + { + "localized_name": "sampler", + "name": "sampler", + "type": "SAMPLER", + "link": 5751 + }, + { + "localized_name": "sigmas", + "name": "sigmas", + "type": "SIGMAS", + "link": 5449 + }, + { + "localized_name": "guider", + "name": "guider", + "type": "GUIDER", + "link": 5452 + }, + { + "localized_name": "latents", + "name": "latents", + "type": "LATENT", + "link": 5744 + }, + { + "localized_name": "optional_cond_image", + "name": "optional_cond_image", + "shape": 7, + "type": "IMAGE", + "link": null + }, + { + "localized_name": "optional_guiding_latents", + "name": "optional_guiding_latents", + "shape": 7, + "type": "LATENT", + "link": 5745 + }, + { + "localized_name": "optional_positive_conditionings", + "name": "optional_positive_conditionings", + "shape": 7, + "type": "CONDITIONING", + "link": null + }, + { + "localized_name": "optional_negative_index_latents", + "name": "optional_negative_index_latents", + "shape": 7, + "type": "LATENT", + "link": null + }, + { + "localized_name": "guiding_strength", + "name": "guiding_strength", + "type": "FLOAT", + "widget": { + "name": "guiding_strength" + }, + "link": null + }, + { + "localized_name": "temporal_tile_size", + "name": "temporal_tile_size", + "type": "INT", + "widget": { + "name": "temporal_tile_size" + }, + "link": null + }, + { + "localized_name": "temporal_overlap", + "name": "temporal_overlap", + "type": "INT", + "widget": { + "name": "temporal_overlap" + }, + "link": null + }, + { + "localized_name": "temporal_overlap_cond_strength", + "name": "temporal_overlap_cond_strength", + "type": "FLOAT", + "widget": { + "name": "temporal_overlap_cond_strength" + }, + "link": null + }, + { + "localized_name": "horizontal_tiles", + "name": "horizontal_tiles", + "type": "INT", + "widget": { + "name": "horizontal_tiles" + }, + "link": null + }, + { + "localized_name": "vertical_tiles", + "name": "vertical_tiles", + "type": "INT", + "widget": { + "name": "vertical_tiles" + }, + "link": null + }, + { + "localized_name": "spatial_overlap", + "name": "spatial_overlap", + "type": "INT", + "widget": { + "name": "spatial_overlap" + }, + "link": null + }, + { + "localized_name": "adain_factor", + "name": "adain_factor", + "shape": 7, + "type": "FLOAT", + "widget": { + "name": "adain_factor" + }, + "link": null + }, + { + "localized_name": "optional_negative_index", + "name": "optional_negative_index", + "shape": 7, + "type": "INT", + "widget": { + "name": "optional_negative_index" + }, + "link": null + }, + { + "localized_name": "optional_negative_index_strength", + "name": "optional_negative_index_strength", + "shape": 7, + "type": "FLOAT", + "widget": { + "name": "optional_negative_index_strength" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "denoised_output", + "name": "denoised_output", + "type": "LATENT", + "links": [ + 5762 + ] + } + ], + "properties": { + "Node name for S&R": "LTXVLoopingSampler" + }, + "widgets_values": [ + 1, + 64, + 16, + 0.25000000000000006, + 2, + 2, + 3, + 0.25000000000000006, + -1, + 1 + ] + }, + { + "id": 1998, + "type": "LTXVLatentUpsamplerModelLoader", + "pos": [ + 1485.9312744140625, + 2118.88525390625 + ], + "size": [ + 344.3999938964844, + 106 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [ + { + "localized_name": "upscale_model", + "name": "upscale_model", + "type": "COMBO", + "widget": { + "name": "upscale_model" + }, + "link": null + }, + { + "localized_name": "spatial_upsample", + "name": "spatial_upsample", + "type": "BOOLEAN", + "widget": { + "name": "spatial_upsample" + }, + "link": null + }, + { + "localized_name": "temporal_upsample", + "name": "temporal_upsample", + "type": "BOOLEAN", + "widget": { + "name": "temporal_upsample" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "UPSCALE_MODEL", + "name": "UPSCALE_MODEL", + "type": "UPSCALE_MODEL", + "links": [ + 5753 + ] + } + ], + "properties": { + "Node name for S&R": "LTXVLatentUpsamplerModelLoader" + }, + "widgets_values": [ + "ltxv-spatial-upscaler-0.9.8.safetensors", + true, + false + ] + }, + { + "id": 1999, + "type": "LTXVLatentUpsampler", + "pos": [ + 1555.3997802734375, + 2777.468017578125 + ], + "size": [ + 235.1999969482422, + 66 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "localized_name": "samples", + "name": "samples", + "type": "LATENT", + "link": 5754 + }, + { + "localized_name": "upscale_model", + "name": "upscale_model", + "type": "UPSCALE_MODEL", + "link": 5753 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5755 + } + ], + "outputs": [ + { + "localized_name": "LATENT", + "name": "LATENT", + "type": "LATENT", + "links": [ + 5756 + ] + } + ], + "properties": { + "Node name for S&R": "LTXVLatentUpsampler" + }, + "widgets_values": [] + }, + { + "id": 1996, + "type": "VAEEncode", + "pos": [ + 1146.9952392578125, + 2610.52783203125 + ], + "size": [ + 140, + 46 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "localized_name": "pixels", + "name": "pixels", + "type": "IMAGE", + "link": 5749 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5748 + } + ], + "outputs": [ + { + "localized_name": "LATENT", + "name": "LATENT", + "type": "LATENT", + "links": [ + 5754 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.44", + "Node name for S&R": "VAEEncode" + }, + "widgets_values": [] + }, + { + "id": 6, + "type": "CLIPTextEncode", + "pos": [ + 717.5663452148438, + 2114.04638671875 + ], + "size": [ + 307.2346496582031, + 204.2556610107422 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "localized_name": "clip", + "name": "clip", + "type": "CLIP", + "link": 74 + }, + { + "localized_name": "text", + "name": "text", + "type": "STRING", + "widget": { + "name": "text" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "CONDITIONING", + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 3364 + ] + } + ], + "title": "CLIP Text Encode (Positive Prompt)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "" + ], + "color": "#232", + "bgcolor": "#353" + }, + { + "id": 1241, + "type": "LTXVConditioning", + "pos": [ + 1082.930419921875, + 2271.91064453125 + ], + "size": [ + 328.21636962890625, + 78 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "localized_name": "positive", + "name": "positive", + "type": "CONDITIONING", + "link": 3364 + }, + { + "localized_name": "negative", + "name": "negative", + "type": "CONDITIONING", + "link": 3365 + }, + { + "localized_name": "frame_rate", + "name": "frame_rate", + "type": "FLOAT", + "widget": { + "name": "frame_rate" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "positive", + "name": "positive", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 5274 + ] + }, + { + "localized_name": "negative", + "name": "negative", + "type": "CONDITIONING", + "slot_index": 1, + "links": [ + 5275 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "LTXVConditioning" + }, + "widgets_values": [ + 24.000000000000004 + ] + }, + { + "id": 38, + "type": "CLIPLoader", + "pos": [ + 365.0711975097656, + 2209.521484375 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "localized_name": "clip_name", + "name": "clip_name", + "type": "COMBO", + "widget": { + "name": "clip_name" + }, + "link": null + }, + { + "localized_name": "type", + "name": "type", + "type": "COMBO", + "widget": { + "name": "type" + }, + "link": null + }, + { + "localized_name": "device", + "name": "device", + "shape": 7, + "type": "COMBO", + "widget": { + "name": "device" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "CLIP", + "name": "CLIP", + "type": "CLIP", + "slot_index": 0, + "links": [ + 74, + 75 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "CLIPLoader" + }, + "widgets_values": [ + "t5xxl_fp8.safetensors", + "ltxv", + "default" + ] + }, + { + "id": 1990, + "type": "LTXVTiledVAEDecode", + "pos": [ + 3016.148193359375, + 2142.771728515625 + ], + "size": [ + 290.6636657714844, + 150 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [ + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5769 + }, + { + "localized_name": "latents", + "name": "latents", + "type": "LATENT", + "link": 5762 + }, + { + "localized_name": "horizontal_tiles", + "name": "horizontal_tiles", + "type": "INT", + "widget": { + "name": "horizontal_tiles" + }, + "link": null + }, + { + "localized_name": "vertical_tiles", + "name": "vertical_tiles", + "type": "INT", + "widget": { + "name": "vertical_tiles" + }, + "link": null + }, + { + "localized_name": "overlap", + "name": "overlap", + "type": "INT", + "widget": { + "name": "overlap" + }, + "link": null + }, + { + "localized_name": "last_frame_fix", + "name": "last_frame_fix", + "type": "BOOLEAN", + "widget": { + "name": "last_frame_fix" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "image", + "name": "image", + "type": "IMAGE", + "links": [ + 5711 + ] + } + ], + "properties": { + "Node name for S&R": "LTXVTiledVAEDecode" + }, + "widgets_values": [ + 2, + 2, + 5, + false + ] + }, + { + "id": 1599, + "type": "VHS_VideoCombine", + "pos": [ + 3926.94921875, + 2162.355224609375 + ], + "size": [ + 610.8043212890625, + 741.8695678710938 + ], + "flags": {}, + "order": 23, + "mode": 0, + "inputs": [ + { + "localized_name": "images", + "name": "images", + "type": "IMAGE", + "link": 5739 + }, + { + "localized_name": "audio", + "name": "audio", + "shape": 7, + "type": "AUDIO", + "link": null + }, + { + "localized_name": "meta_batch", + "name": "meta_batch", + "shape": 7, + "type": "VHS_BatchManager", + "link": null + }, + { + "localized_name": "vae", + "name": "vae", + "shape": 7, + "type": "VAE", + "link": null + }, + { + "localized_name": "frame_rate", + "name": "frame_rate", + "type": "FLOAT", + "widget": { + "name": "frame_rate" + }, + "link": null + }, + { + "localized_name": "loop_count", + "name": "loop_count", + "type": "INT", + "widget": { + "name": "loop_count" + }, + "link": null + }, + { + "localized_name": "filename_prefix", + "name": "filename_prefix", + "type": "STRING", + "widget": { + "name": "filename_prefix" + }, + "link": null + }, + { + "localized_name": "format", + "name": "format", + "type": "COMBO", + "widget": { + "name": "format" + }, + "link": null + }, + { + "localized_name": "pingpong", + "name": "pingpong", + "type": "BOOLEAN", + "widget": { + "name": "pingpong" + }, + "link": null + }, + { + "localized_name": "save_output", + "name": "save_output", + "type": "BOOLEAN", + "widget": { + "name": "save_output" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "Filenames", + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine", + "cnr_id": "comfyui-videohelpersuite", + "ver": "2c25b8b53835aaeb63f831b3137c705cf9f85dce" + }, + "widgets_values": { + "frame_rate": 24, + "loop_count": 0, + "filename_prefix": "ltxv-hd", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 18, + "save_metadata": false, + "trim_to_audio": false, + "pingpong": false, + "save_output": false, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "ltxv-hd_00001.mp4", + "subfolder": "", + "type": "temp", + "format": "video/h264-mp4", + "frame_rate": 24, + "workflow": "ltxv-hd_00001.png", + "fullpath": "/home/michael/src/comfyui_worker_serving/src/comfyui/temp/ltxv-hd_00001.mp4" + }, + "muted": true + } + } + }, + { + "id": 2003, + "type": "Reroute", + "pos": [ + 3891.437255859375, + 2089.540283203125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5763 + } + ], + "outputs": [ + { + "name": "", + "type": "IMAGE", + "links": [ + 5765 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2004, + "type": "Reroute", + "pos": [ + 4466.16455078125, + 2084.887939453125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5765 + } + ], + "outputs": [ + { + "name": "", + "type": "IMAGE", + "links": [ + 5766 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 1992, + "type": "Reroute", + "pos": [ + 2468.88232421875, + 2783.16748046875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5756 + } + ], + "outputs": [ + { + "name": "", + "type": "LATENT", + "links": [ + 5744, + 5745 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 1598, + "type": "RandomNoise", + "pos": [ + 1930.61865234375, + 2137.015625 + ], + "size": [ + 210, + 82 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "localized_name": "noise_seed", + "name": "noise_seed", + "type": "INT", + "widget": { + "name": "noise_seed" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "NOISE", + "name": "NOISE", + "type": "NOISE", + "links": [ + 5453 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.30", + "Node name for S&R": "RandomNoise" + }, + "widgets_values": [ + 1256, + "fixed" + ] + }, + { + "id": 1813, + "type": "STGGuiderAdvanced", + "pos": [ + 1941.501953125, + 2278.861083984375 + ], + "size": [ + 278.79998779296875, + 262 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 5448 + }, + { + "localized_name": "positive", + "name": "positive", + "type": "CONDITIONING", + "link": 5274 + }, + { + "localized_name": "negative", + "name": "negative", + "type": "CONDITIONING", + "link": 5275 + }, + { + "localized_name": "preset", + "name": "preset", + "shape": 7, + "type": "STG_ADVANCED_PRESET", + "link": null + }, + { + "localized_name": "skip_steps_sigma_threshold", + "name": "skip_steps_sigma_threshold", + "type": "FLOAT", + "widget": { + "name": "skip_steps_sigma_threshold" + }, + "link": null + }, + { + "localized_name": "cfg_star_rescale", + "name": "cfg_star_rescale", + "type": "BOOLEAN", + "widget": { + "name": "cfg_star_rescale" + }, + "link": null + }, + { + "localized_name": "sigmas", + "name": "sigmas", + "type": "STRING", + "widget": { + "name": "sigmas" + }, + "link": null + }, + { + "localized_name": "cfg_values", + "name": "cfg_values", + "type": "STRING", + "widget": { + "name": "cfg_values" + }, + "link": null + }, + { + "localized_name": "stg_scale_values", + "name": "stg_scale_values", + "type": "STRING", + "widget": { + "name": "stg_scale_values" + }, + "link": null + }, + { + "localized_name": "stg_rescale_values", + "name": "stg_rescale_values", + "type": "STRING", + "widget": { + "name": "stg_rescale_values" + }, + "link": null + }, + { + "localized_name": "stg_layers_indices", + "name": "stg_layers_indices", + "type": "STRING", + "widget": { + "name": "stg_layers_indices" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "GUIDER", + "name": "GUIDER", + "type": "GUIDER", + "links": [ + 5452 + ] + } + ], + "properties": { + "Node name for S&R": "STGGuiderAdvanced" + }, + "widgets_values": [ + 0.9970000000000002, + true, + "1", + "1", + "0", + "1", + "[42]" + ] + }, + { + "id": 1989, + "type": "StringToFloatList", + "pos": [ + 1954.6505126953125, + 2621.100830078125 + ], + "size": [ + 210, + 88 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "localized_name": "string", + "name": "string", + "type": "STRING", + "widget": { + "name": "string" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "FLOAT", + "name": "FLOAT", + "type": "FLOAT", + "links": [ + 5740 + ] + } + ], + "properties": { + "cnr_id": "comfyui-kjnodes", + "ver": "0addfc6101f7a834c7fb6e0a1b26529360ab5350", + "Node name for S&R": "StringToFloatList" + }, + "widgets_values": [ + "0.99, 0.9094, 0.0" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 1889, + "type": "FloatToSigmas", + "pos": [ + 2219.18115234375, + 2627.6787109375 + ], + "size": [ + 216.59999084472656, + 26 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "localized_name": "float_list", + "name": "float_list", + "type": "FLOAT", + "link": 5740 + } + ], + "outputs": [ + { + "localized_name": "SIGMAS", + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 5449 + ] + } + ], + "properties": { + "cnr_id": "comfyui-kjnodes", + "ver": "1.0.8", + "Node name for S&R": "FloatToSigmas" + }, + "widgets_values": [] + }, + { + "id": 1997, + "type": "KSamplerSelect", + "pos": [ + 2223.688232421875, + 2715.1572265625 + ], + "size": [ + 270, + 58 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "localized_name": "sampler_name", + "name": "sampler_name", + "type": "COMBO", + "widget": { + "name": "sampler_name" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "SAMPLER", + "name": "SAMPLER", + "type": "SAMPLER", + "links": [ + 5751 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.44", + "Node name for S&R": "KSamplerSelect" + }, + "widgets_values": [ + "euler_ancestral" + ] + }, + { + "id": 44, + "type": "CheckpointLoaderSimple", + "pos": [ + 700.7203369140625, + 2717.640625 + ], + "size": [ + 339.6689147949219, + 126.58426666259766 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "localized_name": "ckpt_name", + "name": "ckpt_name", + "type": "COMBO", + "widget": { + "name": "ckpt_name" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "MODEL", + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 5445 + ] + }, + { + "localized_name": "CLIP", + "name": "CLIP", + "type": "CLIP", + "links": [] + }, + { + "localized_name": "VAE", + "name": "VAE", + "type": "VAE", + "slot_index": 2, + "links": [ + 5456, + 5748, + 5755, + 5767 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": [ + "ltxv-13b-0.9.8-distilled.safetensors" + ] + }, + { + "id": 2006, + "type": "Reroute", + "pos": [ + 1307.743408203125, + 2852.38916015625 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5767 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 5768 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2007, + "type": "Reroute", + "pos": [ + 2954.07861328125, + 2859.37255859375 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5768 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 5769 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 1902, + "type": "VHS_VideoCombine", + "pos": [ + 4568.09326171875, + 2160.841796875 + ], + "size": [ + 1224.197998046875, + 749.3993530273438 + ], + "flags": {}, + "order": 26, + "mode": 0, + "inputs": [ + { + "localized_name": "images", + "name": "images", + "type": "IMAGE", + "link": 5766 + }, + { + "localized_name": "audio", + "name": "audio", + "shape": 7, + "type": "AUDIO", + "link": null + }, + { + "localized_name": "meta_batch", + "name": "meta_batch", + "shape": 7, + "type": "VHS_BatchManager", + "link": null + }, + { + "localized_name": "vae", + "name": "vae", + "shape": 7, + "type": "VAE", + "link": null + }, + { + "localized_name": "frame_rate", + "name": "frame_rate", + "type": "FLOAT", + "widget": { + "name": "frame_rate" + }, + "link": null + }, + { + "localized_name": "loop_count", + "name": "loop_count", + "type": "INT", + "widget": { + "name": "loop_count" + }, + "link": null + }, + { + "localized_name": "filename_prefix", + "name": "filename_prefix", + "type": "STRING", + "widget": { + "name": "filename_prefix" + }, + "link": null + }, + { + "localized_name": "format", + "name": "format", + "type": "COMBO", + "widget": { + "name": "format" + }, + "link": null + }, + { + "localized_name": "pingpong", + "name": "pingpong", + "type": "BOOLEAN", + "widget": { + "name": "pingpong" + }, + "link": null + }, + { + "localized_name": "save_output", + "name": "save_output", + "type": "BOOLEAN", + "widget": { + "name": "save_output" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "Filenames", + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine", + "cnr_id": "comfyui-videohelpersuite", + "ver": "2c25b8b53835aaeb63f831b3137c705cf9f85dce" + }, + "widgets_values": { + "frame_rate": 24, + "loop_count": 0, + "filename_prefix": "ltxv-hd-sd", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 18, + "save_metadata": false, + "trim_to_audio": false, + "pingpong": false, + "save_output": false, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "ltxv-hd-sd_00002.mp4", + "subfolder": "", + "type": "temp", + "format": "video/h264-mp4", + "frame_rate": 24, + "workflow": "ltxv-hd-sd_00002.png", + "fullpath": "/home/michael/src/comfyui_worker_serving/src/comfyui/temp/ltxv-hd-sd_00002.mp4" + }, + "muted": true + } + } + }, + { + "id": 1699, + "type": "LTXVFilmGrain", + "pos": [ + 3346.66015625, + 2149.525634765625 + ], + "size": [ + 210, + 82 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [ + { + "localized_name": "images", + "name": "images", + "type": "IMAGE", + "link": 5711 + }, + { + "localized_name": "grain_intensity", + "name": "grain_intensity", + "type": "FLOAT", + "widget": { + "name": "grain_intensity" + }, + "link": null + }, + { + "localized_name": "saturation", + "name": "saturation", + "type": "FLOAT", + "widget": { + "name": "saturation" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 5667, + 5739 + ] + } + ], + "properties": { + "Node name for S&R": "LTXVFilmGrain" + }, + "widgets_values": [ + 0.010000000000000002, + 0.5 + ] + }, + { + "id": 1895, + "type": "LoraLoaderModelOnly", + "pos": [ + 1089.3231201171875, + 2413.4921875 + ], + "size": [ + 313.3110046386719, + 82 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 5445 + }, + { + "localized_name": "lora_name", + "name": "lora_name", + "type": "COMBO", + "widget": { + "name": "lora_name" + }, + "link": null + }, + { + "localized_name": "strength_model", + "name": "strength_model", + "type": "FLOAT", + "widget": { + "name": "strength_model" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "MODEL", + "name": "MODEL", + "type": "MODEL", + "links": [ + 5447, + 5448 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.43", + "Node name for S&R": "LoraLoaderModelOnly" + }, + "widgets_values": [ + "ltx-video-ICLoRA-detailer-13B-0.9.8", + 1.5000000000000002 + ] + }, + { + "id": 1995, + "type": "VHS_LoadVideo", + "pos": [ + 383.91558837890625, + 2422.13671875 + ], + "size": [ + 252.056640625, + 479.037841796875 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "localized_name": "meta_batch", + "name": "meta_batch", + "shape": 7, + "type": "VHS_BatchManager", + "link": null + }, + { + "localized_name": "vae", + "name": "vae", + "shape": 7, + "type": "VAE", + "link": null + }, + { + "localized_name": "video", + "name": "video", + "type": "COMBO", + "widget": { + "name": "video" + }, + "link": null + }, + { + "localized_name": "force_rate", + "name": "force_rate", + "type": "FLOAT", + "widget": { + "name": "force_rate" + }, + "link": null + }, + { + "localized_name": "custom_width", + "name": "custom_width", + "type": "INT", + "widget": { + "name": "custom_width" + }, + "link": null + }, + { + "localized_name": "custom_height", + "name": "custom_height", + "type": "INT", + "widget": { + "name": "custom_height" + }, + "link": null + }, + { + "localized_name": "frame_load_cap", + "name": "frame_load_cap", + "type": "INT", + "widget": { + "name": "frame_load_cap" + }, + "link": null + }, + { + "localized_name": "skip_first_frames", + "name": "skip_first_frames", + "type": "INT", + "widget": { + "name": "skip_first_frames" + }, + "link": null + }, + { + "localized_name": "select_every_nth", + "name": "select_every_nth", + "type": "INT", + "widget": { + "name": "select_every_nth" + }, + "link": null + }, + { + "localized_name": "format", + "name": "format", + "shape": 7, + "type": "COMBO", + "widget": { + "name": "format" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 5749, + 5770 + ] + }, + { + "localized_name": "frame_count", + "name": "frame_count", + "type": "INT", + "links": null + }, + { + "localized_name": "audio", + "name": "audio", + "type": "AUDIO", + "links": null + }, + { + "localized_name": "video_info", + "name": "video_info", + "type": "VHS_VIDEOINFO", + "links": null + } + ], + "properties": { + "Node name for S&R": "VHS_LoadVideo" + }, + "widgets_values": { + "video": "AnimateDiff_00151.mp4", + "force_rate": 0, + "custom_width": 0, + "custom_height": 0, + "frame_load_cap": 0, + "skip_first_frames": 0, + "select_every_nth": 1, + "format": "LTXV", + "choose video to upload": "image", + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "AnimateDiff_00151.mp4", + "type": "input", + "format": "video/mp4", + "force_rate": 0, + "custom_width": 0, + "custom_height": 0, + "frame_load_cap": 0, + "skip_first_frames": 0, + "select_every_nth": 1 + } + } + } + }, + { + "id": 1901, + "type": "ImageConcanate", + "pos": [ + 3582.269287109375, + 2386.01611328125 + ], + "size": [ + 270, + 102 + ], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [ + { + "localized_name": "image1", + "name": "image1", + "type": "IMAGE", + "link": 5667 + }, + { + "localized_name": "image2", + "name": "image2", + "type": "IMAGE", + "link": 5770 + }, + { + "localized_name": "direction", + "name": "direction", + "type": "COMBO", + "widget": { + "name": "direction" + }, + "link": null + }, + { + "localized_name": "match_image_size", + "name": "match_image_size", + "type": "BOOLEAN", + "widget": { + "name": "match_image_size" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 5763 + ] + } + ], + "properties": { + "cnr_id": "comfyui-kjnodes", + "ver": "1.0.8", + "Node name for S&R": "ImageConcanate" + }, + "widgets_values": [ + "right", + true + ] + }, + { + "id": 2008, + "type": "Note", + "pos": [ + 4842.8349609375, + 1924.749267578125 + ], + "size": [ + 566.965087890625, + 107.72560119628906 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "Left is the generated video, right is the original one." + ], + "color": "#432", + "bgcolor": "#653" + } + ], + "links": [ + [ + 74, + 38, + 0, + 6, + 0, + "CLIP" + ], + [ + 75, + 38, + 0, + 7, + 0, + "CLIP" + ], + [ + 3364, + 6, + 0, + 1241, + 0, + "CONDITIONING" + ], + [ + 3365, + 7, + 0, + 1241, + 1, + "CONDITIONING" + ], + [ + 5274, + 1241, + 0, + 1813, + 1, + "CONDITIONING" + ], + [ + 5275, + 1241, + 1, + 1813, + 2, + "CONDITIONING" + ], + [ + 5445, + 44, + 0, + 1895, + 0, + "MODEL" + ], + [ + 5447, + 1895, + 0, + 1894, + 0, + "MODEL" + ], + [ + 5448, + 1895, + 0, + 1813, + 0, + "MODEL" + ], + [ + 5449, + 1889, + 0, + 1894, + 4, + "SIGMAS" + ], + [ + 5452, + 1813, + 0, + 1894, + 5, + "GUIDER" + ], + [ + 5453, + 1598, + 0, + 1894, + 2, + "NOISE" + ], + [ + 5456, + 44, + 2, + 1894, + 1, + "VAE" + ], + [ + 5667, + 1699, + 0, + 1901, + 0, + "IMAGE" + ], + [ + 5711, + 1990, + 0, + 1699, + 0, + "IMAGE" + ], + [ + 5739, + 1699, + 0, + 1599, + 0, + "IMAGE" + ], + [ + 5740, + 1989, + 0, + 1889, + 0, + "FLOAT" + ], + [ + 5744, + 1992, + 0, + 1894, + 6, + "LATENT" + ], + [ + 5745, + 1992, + 0, + 1894, + 8, + "LATENT" + ], + [ + 5748, + 44, + 2, + 1996, + 1, + "VAE" + ], + [ + 5749, + 1995, + 0, + 1996, + 0, + "IMAGE" + ], + [ + 5751, + 1997, + 0, + 1894, + 3, + "SAMPLER" + ], + [ + 5753, + 1998, + 0, + 1999, + 1, + "UPSCALE_MODEL" + ], + [ + 5754, + 1996, + 0, + 1999, + 0, + "LATENT" + ], + [ + 5755, + 44, + 2, + 1999, + 2, + "VAE" + ], + [ + 5756, + 1999, + 0, + 1992, + 0, + "*" + ], + [ + 5762, + 1894, + 0, + 1990, + 1, + "LATENT" + ], + [ + 5763, + 1901, + 0, + 2003, + 0, + "*" + ], + [ + 5765, + 2003, + 0, + 2004, + 0, + "*" + ], + [ + 5766, + 2004, + 0, + 1902, + 0, + "IMAGE" + ], + [ + 5767, + 44, + 2, + 2006, + 0, + "*" + ], + [ + 5768, + 2006, + 0, + 2007, + 0, + "*" + ], + [ + 5769, + 2007, + 0, + 1990, + 0, + "VAE" + ], + [ + 5770, + 1995, + 0, + 1901, + 1, + "IMAGE" + ] + ], + "groups": [ + { + "id": 41, + "title": "Setup", + "bounding": [ + 329.9997863769531, + 2040.44580078125, + 1101.9881591796875, + 875.8268432617188 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {}, + "nodes": [ + 7, + 1996, + 6, + 1241, + 38, + 44, + 2006, + 1895, + 1995 + ] + }, + { + "id": 42, + "title": "Add Details", + "bounding": [ + 1880.87255859375, + 2053.541259765625, + 3920.83447265625, + 860.0048217773438 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {}, + "nodes": [ + 1894, + 1990, + 1599, + 2003, + 2004, + 1992, + 1598, + 1813, + 1989, + 1889, + 1997, + 2007, + 1902, + 1699, + 1901 + ] + }, + { + "id": 43, + "title": "Latent Upscaler", + "bounding": [ + 1479.4404296875, + 2047.81640625, + 375.705078125, + 868.5703125 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {}, + "nodes": [ + 1998, + 1999 + ] + } + ], + "config": {}, + "extra": { + "ds": { + "scale": 0.6303940863128579, + "offset": [ + -3473.6268617369606, + -1759.5003971014191 + ] + }, + "frontendVersion": "1.17.11", + "VHS_latentpreview": true, + "VHS_latentpreviewrate": 0, + "VHS_MetadataImage": true, + "VHS_KeepIntermediate": true, + "prompt": { + "6": { + "inputs": { + "text": "", + "clip": [ + "38", + 0 + ] + }, + "class_type": "CLIPTextEncode", + "_meta": { + "title": "CLIP Text Encode (Positive Prompt)" + } + }, + "7": { + "inputs": { + "text": "low quality, worst quality, deformed, distorted, disfigured, motion smear, motion artifacts, fused fingers, bad anatomy, weird hand, ugly", + "clip": [ + "38", + 0 + ] + }, + "class_type": "CLIPTextEncode", + "_meta": { + "title": "CLIP Text Encode (Negative Prompt)" + } + }, + "38": { + "inputs": { + "clip_name": "t5xxl_fp8.safetensors", + "type": "ltxv", + "device": "default" + }, + "class_type": "CLIPLoader", + "_meta": { + "title": "Load CLIP" + } + }, + "44": { + "inputs": { + "ckpt_name": "ltxv-13b-0.9.8-distilled.safetensors" + }, + "class_type": "CheckpointLoaderSimple", + "_meta": { + "title": "Load Checkpoint" + } + }, + "1241": { + "inputs": { + "frame_rate": 24.000000000000004, + "positive": [ + "6", + 0 + ], + "negative": [ + "7", + 0 + ] + }, + "class_type": "LTXVConditioning", + "_meta": { + "title": "LTXVConditioning" + } + }, + "1598": { + "inputs": { + "noise_seed": 1256 + }, + "class_type": "RandomNoise", + "_meta": { + "title": "RandomNoise" + } + }, + "1599": { + "inputs": { + "frame_rate": 24, + "loop_count": 0, + "filename_prefix": "ltxv-hd", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 18, + "save_metadata": false, + "trim_to_audio": false, + "pingpong": false, + "save_output": false, + "images": [ + "1699", + 0 + ] + }, + "class_type": "VHS_VideoCombine", + "_meta": { + "title": "Video Combine πŸŽ₯πŸ…₯πŸ…—πŸ…’" + } + }, + "1699": { + "inputs": { + "grain_intensity": 0.010000000000000002, + "saturation": 0.5, + "images": [ + "1990", + 0 + ] + }, + "class_type": "LTXVFilmGrain", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ LTXV Film Grain" + } + }, + "1813": { + "inputs": { + "skip_steps_sigma_threshold": 0.9970000000000002, + "cfg_star_rescale": true, + "sigmas": "1", + "cfg_values": "1", + "stg_scale_values": "0", + "stg_rescale_values": "1", + "stg_layers_indices": "[42]", + "model": [ + "1895", + 0 + ], + "positive": [ + "1241", + 0 + ], + "negative": [ + "1241", + 1 + ] + }, + "class_type": "STGGuiderAdvanced", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ STG Guider Advanced" + } + }, + "1889": { + "inputs": { + "float_list": [ + "1989", + 0 + ] + }, + "class_type": "FloatToSigmas", + "_meta": { + "title": "Float To Sigmas" + } + }, + "1894": { + "inputs": { + "guiding_strength": 1, + "temporal_tile_size": 64, + "temporal_overlap": 16, + "temporal_overlap_cond_strength": 0.25000000000000006, + "horizontal_tiles": 2, + "vertical_tiles": 2, + "spatial_overlap": 3, + "adain_factor": 0.25000000000000006, + "optional_negative_index": -1, + "optional_negative_index_strength": 1, + "model": [ + "1895", + 0 + ], + "vae": [ + "44", + 2 + ], + "noise": [ + "1598", + 0 + ], + "sampler": [ + "1997", + 0 + ], + "sigmas": [ + "1889", + 0 + ], + "guider": [ + "1813", + 0 + ], + "latents": [ + "1999", + 0 + ], + "optional_guiding_latents": [ + "1999", + 0 + ] + }, + "class_type": "LTXVLoopingSampler", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ LTXV Looping Sampler" + } + }, + "1895": { + "inputs": { + "lora_name": "ltx-video-ICLoRA-detailer-13B-0.9.8", + "strength_model": 1.5000000000000002, + "model": [ + "44", + 0 + ] + }, + "class_type": "LoraLoaderModelOnly", + "_meta": { + "title": "LoraLoaderModelOnly" + } + }, + "1901": { + "inputs": { + "direction": "right", + "match_image_size": true, + "image1": [ + "1699", + 0 + ], + "image2": [ + "1995", + 0 + ] + }, + "class_type": "ImageConcanate", + "_meta": { + "title": "Image Concatenate" + } + }, + "1902": { + "inputs": { + "frame_rate": 24, + "loop_count": 0, + "filename_prefix": "ltxv-hd-sd", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 18, + "save_metadata": false, + "trim_to_audio": false, + "pingpong": false, + "save_output": false, + "images": [ + "1901", + 0 + ] + }, + "class_type": "VHS_VideoCombine", + "_meta": { + "title": "Video Combine πŸŽ₯πŸ…₯πŸ…—πŸ…’" + } + }, + "1989": { + "inputs": { + "string": "0.99, 0.9094, 0.0" + }, + "class_type": "StringToFloatList", + "_meta": { + "title": "String to Float List" + } + }, + "1990": { + "inputs": { + "horizontal_tiles": 2, + "vertical_tiles": 2, + "overlap": 5, + "last_frame_fix": false, + "vae": [ + "44", + 2 + ], + "latents": [ + "1894", + 0 + ] + }, + "class_type": "LTXVTiledVAEDecode", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ LTXV Tiled VAE Decode" + } + }, + "1995": { + "inputs": { + "video": "AnimateDiff_00151.mp4", + "force_rate": 0, + "custom_width": 0, + "custom_height": 0, + "frame_load_cap": 0, + "skip_first_frames": 0, + "select_every_nth": 1, + "format": "LTXV" + }, + "class_type": "VHS_LoadVideo", + "_meta": { + "title": "Load Video (Upload) πŸŽ₯πŸ…₯πŸ…—πŸ…’" + } + }, + "1996": { + "inputs": { + "pixels": [ + "1995", + 0 + ], + "vae": [ + "44", + 2 + ] + }, + "class_type": "VAEEncode", + "_meta": { + "title": "VAE Encode" + } + }, + "1997": { + "inputs": { + "sampler_name": "euler_ancestral" + }, + "class_type": "KSamplerSelect", + "_meta": { + "title": "KSamplerSelect" + } + }, + "1998": { + "inputs": { + "upscale_model": "ltxv-spatial-upscaler-0.9.8.safetensors", + "spatial_upsample": true, + "temporal_upsample": false + }, + "class_type": "LTXVLatentUpsamplerModelLoader", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ LTXV Latent Upsampler Model Loader" + } + }, + "1999": { + "inputs": { + "samples": [ + "1996", + 0 + ], + "upscale_model": [ + "1998", + 0 + ], + "vae": [ + "44", + 2 + ] + }, + "class_type": "LTXVLatentUpsampler", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ LTXV Latent Upsampler" + } + } + }, + "comfy_fork_version": "develop@c8755c7d", + "workspace_info": { + "id": "elBQFQknIoLYTEwIloQuw" + }, + "node_versions": { + "comfy-core": "0.3.30", + "comfyui-kjnodes": "1.0.8" + } + }, + "version": 0.4 +} diff --git a/example_workflows/ltxv-13b-v2v-long-depth.json b/example_workflows/ltxv-13b-v2v-long-depth.json new file mode 100644 index 0000000..5f2a6ad --- /dev/null +++ b/example_workflows/ltxv-13b-v2v-long-depth.json @@ -0,0 +1,4864 @@ +{ + "id": "394ed254-7306-42a2-9ae6-aa880ce4456d", + "revision": 0, + "last_node_id": 2149, + "last_link_id": 6004, + "nodes": [ + { + "id": 1335, + "type": "VAEDecode", + "pos": [ + 4524.71875, + 2618.7578125 + ], + "size": [ + 210, + 46 + ], + "flags": {}, + "order": 47, + "mode": 0, + "inputs": [ + { + "localized_name": "samples", + "name": "samples", + "type": "LATENT", + "link": 6003 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5363 + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 3578 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.29", + "Node name for S&R": "VAEDecode" + }, + "widgets_values": [] + }, + { + "id": 1926, + "type": "KSamplerSelect", + "pos": [ + 7206.24755859375, + 2623.925537109375 + ], + "size": [ + 251.94110107421875, + 58 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [ + { + "localized_name": "sampler_name", + "name": "sampler_name", + "type": "COMBO", + "widget": { + "name": "sampler_name" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "SAMPLER", + "name": "SAMPLER", + "type": "SAMPLER", + "links": [ + 5904 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "KSamplerSelect" + }, + "widgets_values": [ + "euler_ancestral" + ] + }, + { + "id": 2038, + "type": "Reroute", + "pos": [ + 6732.23095703125, + 2231.4091796875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 40, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5742 + } + ], + "outputs": [ + { + "name": "", + "type": "CONDITIONING", + "links": [ + 5740 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2037, + "type": "Reroute", + "pos": [ + 6729.97705078125, + 2189.18310546875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 39, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5741 + } + ], + "outputs": [ + { + "name": "", + "type": "CONDITIONING", + "links": [ + 5739 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2073, + "type": "FloatToSigmas", + "pos": [ + 7289.4375, + 2834.601318359375 + ], + "size": [ + 216.59999084472656, + 26 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "localized_name": "float_list", + "name": "float_list", + "type": "FLOAT", + "link": 5782 + } + ], + "outputs": [ + { + "localized_name": "SIGMAS", + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 5905 + ] + } + ], + "properties": { + "Node name for S&R": "FloatToSigmas", + "cnr_id": "comfyui-kjnodes", + "ver": "1.0.8" + }, + "widgets_values": [] + }, + { + "id": 1952, + "type": "StringToFloatList", + "pos": [ + 3031.37158203125, + 2693.744384765625 + ], + "size": [ + 290, + 130 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + { + "localized_name": "string", + "name": "string", + "type": "STRING", + "widget": { + "name": "string" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "FLOAT", + "name": "FLOAT", + "type": "FLOAT", + "links": [ + 5567 + ] + } + ], + "properties": { + "Node name for S&R": "StringToFloatList", + "cnr_id": "comfyui-kjnodes", + "ver": "0addfc6101f7a834c7fb6e0a1b26529360ab5350" + }, + "widgets_values": [ + "1.0000, 0.9937, 0.9875, 0.9812, 0.9750, 0.9094, 0.7250, 0.4219, 0.0\n" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 1598, + "type": "RandomNoise", + "pos": [ + 7275.9599609375, + 2305.344482421875 + ], + "size": [ + 210, + 82 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [ + { + "localized_name": "noise_seed", + "name": "noise_seed", + "type": "INT", + "widget": { + "name": "noise_seed" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "NOISE", + "name": "NOISE", + "type": "NOISE", + "links": [ + 5903 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.30", + "Node name for S&R": "RandomNoise" + }, + "widgets_values": [ + 1625, + "fixed" + ] + }, + { + "id": 2102, + "type": "Reroute", + "pos": [ + 5964.9345703125, + 2899.48828125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 51, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5838 + } + ], + "outputs": [ + { + "name": "", + "type": "LATENT", + "links": [ + 5839 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2101, + "type": "Reroute", + "pos": [ + 4516.3046875, + 2895.996337890625 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 48, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 6004 + } + ], + "outputs": [ + { + "name": "", + "type": "LATENT", + "links": [ + 5838 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 1973, + "type": "VHS_VideoCombine", + "pos": [ + 8417.9189453125, + 2240.651123046875 + ], + "size": [ + 770.2554931640625, + 334 + ], + "flags": {}, + "order": 56, + "mode": 0, + "inputs": [ + { + "localized_name": "images", + "name": "images", + "type": "IMAGE", + "link": 5920 + }, + { + "localized_name": "audio", + "name": "audio", + "shape": 7, + "type": "AUDIO", + "link": null + }, + { + "localized_name": "meta_batch", + "name": "meta_batch", + "shape": 7, + "type": "VHS_BatchManager", + "link": null + }, + { + "localized_name": "vae", + "name": "vae", + "shape": 7, + "type": "VAE", + "link": null + }, + { + "localized_name": "frame_rate", + "name": "frame_rate", + "type": "FLOAT", + "widget": { + "name": "frame_rate" + }, + "link": null + }, + { + "localized_name": "loop_count", + "name": "loop_count", + "type": "INT", + "widget": { + "name": "loop_count" + }, + "link": null + }, + { + "localized_name": "filename_prefix", + "name": "filename_prefix", + "type": "STRING", + "widget": { + "name": "filename_prefix" + }, + "link": null + }, + { + "localized_name": "format", + "name": "format", + "type": "COMBO", + "widget": { + "name": "format" + }, + "link": null + }, + { + "localized_name": "pingpong", + "name": "pingpong", + "type": "BOOLEAN", + "widget": { + "name": "pingpong" + }, + "link": null + }, + { + "localized_name": "save_output", + "name": "save_output", + "type": "BOOLEAN", + "widget": { + "name": "save_output" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "Filenames", + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 24, + "loop_count": 0, + "filename_prefix": "ltxv-ic-lora", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "ltxv-ic-lora_00025.mp4", + "subfolder": "", + "type": "output", + "format": "video/h264-mp4", + "frame_rate": 24, + "workflow": "ltxv-ic-lora_00025.png", + "fullpath": "/home/michael/src/comfyui_worker_serving/src/comfyui/output/ltxv-ic-lora_00025.mp4" + } + } + } + }, + { + "id": 2116, + "type": "STGAdvancedPresets", + "pos": [ + 6563.388671875, + 2521.9775390625 + ], + "size": [ + 292.0787048339844, + 58 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + { + "localized_name": "preset", + "name": "preset", + "type": "COMBO", + "widget": { + "name": "preset" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "STG_ADVANCED_PRESET", + "name": "STG_ADVANCED_PRESET", + "type": "STG_ADVANCED_PRESET", + "links": [ + 5873 + ] + } + ], + "properties": { + "Node name for S&R": "STGAdvancedPresets" + }, + "widgets_values": [ + "13b Distilled" + ] + }, + { + "id": 2117, + "type": "Set VAE Decoder Noise", + "pos": [ + 7985.1396484375, + 2245.2392578125 + ], + "size": [ + 294.1568298339844, + 130 + ], + "flags": {}, + "order": 49, + "mode": 0, + "inputs": [ + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5874 + }, + { + "localized_name": "timestep", + "name": "timestep", + "type": "FLOAT", + "widget": { + "name": "timestep" + }, + "link": null + }, + { + "localized_name": "scale", + "name": "scale", + "type": "FLOAT", + "widget": { + "name": "scale" + }, + "link": null + }, + { + "localized_name": "seed", + "name": "seed", + "type": "INT", + "widget": { + "name": "seed" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "VAE", + "name": "VAE", + "type": "VAE", + "links": [ + 5917 + ] + } + ], + "properties": { + "Node name for S&R": "Set VAE Decoder Noise" + }, + "widgets_values": [ + 0.05, + 0.025, + 42, + "fixed" + ] + }, + { + "id": 2096, + "type": "Reroute", + "pos": [ + 3950, + 2050 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5829 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 5831, + 5995 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 1921, + "type": "STGGuiderAdvanced", + "pos": [ + 3176.751953125, + 2356.80322265625 + ], + "size": [ + 278.79998779296875, + 262 + ], + "flags": {}, + "order": 42, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 5992 + }, + { + "localized_name": "positive", + "name": "positive", + "type": "CONDITIONING", + "link": 5584 + }, + { + "localized_name": "negative", + "name": "negative", + "type": "CONDITIONING", + "link": 5585 + }, + { + "localized_name": "preset", + "name": "preset", + "shape": 7, + "type": "STG_ADVANCED_PRESET", + "link": 5613 + }, + { + "localized_name": "skip_steps_sigma_threshold", + "name": "skip_steps_sigma_threshold", + "type": "FLOAT", + "widget": { + "name": "skip_steps_sigma_threshold" + }, + "link": null + }, + { + "localized_name": "cfg_star_rescale", + "name": "cfg_star_rescale", + "type": "BOOLEAN", + "widget": { + "name": "cfg_star_rescale" + }, + "link": null + }, + { + "localized_name": "sigmas", + "name": "sigmas", + "type": "STRING", + "widget": { + "name": "sigmas" + }, + "link": null + }, + { + "localized_name": "cfg_values", + "name": "cfg_values", + "type": "STRING", + "widget": { + "name": "cfg_values" + }, + "link": null + }, + { + "localized_name": "stg_scale_values", + "name": "stg_scale_values", + "type": "STRING", + "widget": { + "name": "stg_scale_values" + }, + "link": null + }, + { + "localized_name": "stg_rescale_values", + "name": "stg_rescale_values", + "type": "STRING", + "widget": { + "name": "stg_rescale_values" + }, + "link": null + }, + { + "localized_name": "stg_layers_indices", + "name": "stg_layers_indices", + "type": "STRING", + "widget": { + "name": "stg_layers_indices" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "GUIDER", + "name": "GUIDER", + "type": "GUIDER", + "links": [ + 5999 + ] + } + ], + "properties": { + "Node name for S&R": "STGGuiderAdvanced" + }, + "widgets_values": [ + 0.9970000000000002, + true, + "1", + "1", + "0,0,0,0,0,0", + "1", + "[25]" + ] + }, + { + "id": 2072, + "type": "StringToFloatList", + "pos": [ + 6805.841796875, + 2835.313232421875 + ], + "size": [ + 395.74224853515625, + 88 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "localized_name": "string", + "name": "string", + "type": "STRING", + "widget": { + "name": "string" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "FLOAT", + "name": "FLOAT", + "type": "FLOAT", + "links": [ + 5782 + ] + } + ], + "properties": { + "Node name for S&R": "StringToFloatList", + "cnr_id": "comfyui-kjnodes", + "ver": "0addfc6101f7a834c7fb6e0a1b26529360ab5350" + }, + "widgets_values": [ + "0.99, 0.9094, 0.0" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 1871, + "type": "STGGuiderAdvanced", + "pos": [ + 6889.51904296875, + 2431.979248046875 + ], + "size": [ + 278.79998779296875, + 262 + ], + "flags": {}, + "order": 44, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 5896 + }, + { + "localized_name": "positive", + "name": "positive", + "type": "CONDITIONING", + "link": 5739 + }, + { + "localized_name": "negative", + "name": "negative", + "type": "CONDITIONING", + "link": 5740 + }, + { + "localized_name": "preset", + "name": "preset", + "shape": 7, + "type": "STG_ADVANCED_PRESET", + "link": 5873 + }, + { + "localized_name": "skip_steps_sigma_threshold", + "name": "skip_steps_sigma_threshold", + "type": "FLOAT", + "widget": { + "name": "skip_steps_sigma_threshold" + }, + "link": null + }, + { + "localized_name": "cfg_star_rescale", + "name": "cfg_star_rescale", + "type": "BOOLEAN", + "widget": { + "name": "cfg_star_rescale" + }, + "link": null + }, + { + "localized_name": "sigmas", + "name": "sigmas", + "type": "STRING", + "widget": { + "name": "sigmas" + }, + "link": null + }, + { + "localized_name": "cfg_values", + "name": "cfg_values", + "type": "STRING", + "widget": { + "name": "cfg_values" + }, + "link": null + }, + { + "localized_name": "stg_scale_values", + "name": "stg_scale_values", + "type": "STRING", + "widget": { + "name": "stg_scale_values" + }, + "link": null + }, + { + "localized_name": "stg_rescale_values", + "name": "stg_rescale_values", + "type": "STRING", + "widget": { + "name": "stg_rescale_values" + }, + "link": null + }, + { + "localized_name": "stg_layers_indices", + "name": "stg_layers_indices", + "type": "STRING", + "widget": { + "name": "stg_layers_indices" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "GUIDER", + "name": "GUIDER", + "type": "GUIDER", + "links": [ + 5906 + ] + } + ], + "properties": { + "Node name for S&R": "STGGuiderAdvanced" + }, + "widgets_values": [ + 0.9970000000000002, + true, + "1", + "1", + "0", + "1", + "[42]" + ] + }, + { + "id": 2124, + "type": "LTXVLoopingSampler", + "pos": [ + 7587.734375, + 2224.18359375 + ], + "size": [ + 365.21484375, + 546 + ], + "flags": {}, + "order": 54, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 5901 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5902 + }, + { + "localized_name": "noise", + "name": "noise", + "type": "NOISE", + "link": 5903 + }, + { + "localized_name": "sampler", + "name": "sampler", + "type": "SAMPLER", + "link": 5904 + }, + { + "localized_name": "sigmas", + "name": "sigmas", + "type": "SIGMAS", + "link": 5905 + }, + { + "localized_name": "guider", + "name": "guider", + "type": "GUIDER", + "link": 5906 + }, + { + "localized_name": "latents", + "name": "latents", + "type": "LATENT", + "link": 5961 + }, + { + "localized_name": "optional_cond_image", + "name": "optional_cond_image", + "shape": 7, + "type": "IMAGE", + "link": null + }, + { + "localized_name": "optional_guiding_latents", + "name": "optional_guiding_latents", + "shape": 7, + "type": "LATENT", + "link": 5912 + }, + { + "localized_name": "optional_positive_conditionings", + "name": "optional_positive_conditionings", + "shape": 7, + "type": "CONDITIONING", + "link": null + }, + { + "localized_name": "optional_negative_index_latents", + "name": "optional_negative_index_latents", + "shape": 7, + "type": "LATENT", + "link": null + }, + { + "localized_name": "guiding_strength", + "name": "guiding_strength", + "type": "FLOAT", + "widget": { + "name": "guiding_strength" + }, + "link": null + }, + { + "localized_name": "temporal_tile_size", + "name": "temporal_tile_size", + "type": "INT", + "widget": { + "name": "temporal_tile_size" + }, + "link": null + }, + { + "localized_name": "temporal_overlap", + "name": "temporal_overlap", + "type": "INT", + "widget": { + "name": "temporal_overlap" + }, + "link": null + }, + { + "localized_name": "temporal_overlap_cond_strength", + "name": "temporal_overlap_cond_strength", + "type": "FLOAT", + "widget": { + "name": "temporal_overlap_cond_strength" + }, + "link": null + }, + { + "localized_name": "horizontal_tiles", + "name": "horizontal_tiles", + "type": "INT", + "widget": { + "name": "horizontal_tiles" + }, + "link": null + }, + { + "localized_name": "vertical_tiles", + "name": "vertical_tiles", + "type": "INT", + "widget": { + "name": "vertical_tiles" + }, + "link": null + }, + { + "localized_name": "spatial_overlap", + "name": "spatial_overlap", + "type": "INT", + "widget": { + "name": "spatial_overlap" + }, + "link": null + }, + { + "localized_name": "adain_factor", + "name": "adain_factor", + "shape": 7, + "type": "FLOAT", + "widget": { + "name": "adain_factor" + }, + "link": null + }, + { + "localized_name": "optional_negative_index", + "name": "optional_negative_index", + "shape": 7, + "type": "INT", + "widget": { + "name": "optional_negative_index" + }, + "link": null + }, + { + "localized_name": "optional_negative_index_strength", + "name": "optional_negative_index_strength", + "shape": 7, + "type": "FLOAT", + "widget": { + "name": "optional_negative_index_strength" + }, + "link": null + }, + { + "localized_name": "per_tile_seed_offsets", + "name": "per_tile_seed_offsets", + "shape": 7, + "type": "STRING", + "widget": { + "name": "per_tile_seed_offsets" + }, + "link": null + }, + { + "localized_name": "per_tile_use_negative_latents", + "name": "per_tile_use_negative_latents", + "shape": 7, + "type": "STRING", + "widget": { + "name": "per_tile_use_negative_latents" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "denoised_output", + "name": "denoised_output", + "type": "LATENT", + "links": [ + 5918 + ] + } + ], + "properties": { + "Node name for S&R": "LTXVLoopingSampler" + }, + "widgets_values": [ + 1, + 80, + 24, + 0.5, + 1, + 1, + 1, + 0, + -1, + 1, + "0", + "1" + ] + }, + { + "id": 2127, + "type": "LTXVTiledVAEDecode", + "pos": [ + 7989.189453125, + 2440.381103515625 + ], + "size": [ + 290.6636657714844, + 150 + ], + "flags": {}, + "order": 55, + "mode": 0, + "inputs": [ + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5917 + }, + { + "localized_name": "latents", + "name": "latents", + "type": "LATENT", + "link": 5918 + }, + { + "localized_name": "horizontal_tiles", + "name": "horizontal_tiles", + "type": "INT", + "widget": { + "name": "horizontal_tiles" + }, + "link": null + }, + { + "localized_name": "vertical_tiles", + "name": "vertical_tiles", + "type": "INT", + "widget": { + "name": "vertical_tiles" + }, + "link": null + }, + { + "localized_name": "overlap", + "name": "overlap", + "type": "INT", + "widget": { + "name": "overlap" + }, + "link": null + }, + { + "localized_name": "last_frame_fix", + "name": "last_frame_fix", + "type": "BOOLEAN", + "widget": { + "name": "last_frame_fix" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "image", + "name": "image", + "type": "IMAGE", + "links": [ + 5920 + ] + } + ], + "properties": { + "Node name for S&R": "LTXVTiledVAEDecode" + }, + "widgets_values": [ + 2, + 2, + 5, + false + ] + }, + { + "id": 2129, + "type": "Reroute", + "pos": [ + 2004.1419677734375, + 2654.619873046875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5941 + } + ], + "outputs": [ + { + "name": "", + "type": "MODEL", + "links": [ + 5938 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2094, + "type": "Reroute", + "pos": [ + 2371.384765625, + 2891.617919921875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 23, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5825 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 5826, + 5979 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2122, + "type": "LoraLoaderModelOnly", + "pos": [ + 6512.681640625, + 2314.541259765625 + ], + "size": [ + 270, + 82 + ], + "flags": {}, + "order": 41, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 5898 + }, + { + "localized_name": "lora_name", + "name": "lora_name", + "type": "COMBO", + "widget": { + "name": "lora_name" + }, + "link": null + }, + { + "localized_name": "strength_model", + "name": "strength_model", + "type": "FLOAT", + "widget": { + "name": "strength_model" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "MODEL", + "name": "MODEL", + "type": "MODEL", + "links": [ + 5896, + 5901 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.44", + "Node name for S&R": "LoraLoaderModelOnly" + }, + "widgets_values": [ + "ltx-video-ICLoRA-detailer-13B-0.9.8", + 1 + ] + }, + { + "id": 2125, + "type": "Reroute", + "pos": [ + 7292.6181640625, + 2481.50341796875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 53, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5971 + } + ], + "outputs": [ + { + "name": "", + "type": "LATENT", + "links": [ + 5912, + 5961 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 1241, + "type": "LTXVConditioning", + "pos": [ + 2569.50537109375, + 2276.412109375 + ], + "size": [ + 328.21636962890625, + 78 + ], + "flags": {}, + "order": 26, + "mode": 0, + "inputs": [ + { + "localized_name": "positive", + "name": "positive", + "type": "CONDITIONING", + "link": 5967 + }, + { + "localized_name": "negative", + "name": "negative", + "type": "CONDITIONING", + "link": 3365 + }, + { + "localized_name": "frame_rate", + "name": "frame_rate", + "type": "FLOAT", + "widget": { + "name": "frame_rate" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "positive", + "name": "positive", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 5584, + 5715 + ] + }, + { + "localized_name": "negative", + "name": "negative", + "type": "CONDITIONING", + "slot_index": 1, + "links": [ + 5585, + 5716 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "LTXVConditioning" + }, + "widgets_values": [ + 24.000000000000004 + ] + }, + { + "id": 38, + "type": "CLIPLoader", + "pos": [ + 1916.6739501953125, + 2303.91259765625 + ], + "size": [ + 245.33026123046875, + 106 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "localized_name": "clip_name", + "name": "clip_name", + "type": "COMBO", + "widget": { + "name": "clip_name" + }, + "link": null + }, + { + "localized_name": "type", + "name": "type", + "type": "COMBO", + "widget": { + "name": "type" + }, + "link": null + }, + { + "localized_name": "device", + "name": "device", + "shape": 7, + "type": "COMBO", + "widget": { + "name": "device" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "CLIP", + "name": "CLIP", + "type": "CLIP", + "slot_index": 0, + "links": [ + 5603, + 5964, + 5966 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "CLIPLoader" + }, + "widgets_values": [ + "t5xxl_fp16.safetensors", + "ltxv", + "default" + ] + }, + { + "id": 1949, + "type": "PrintSigmas", + "pos": [ + 3674.795654296875, + 2763.217529296875 + ], + "size": [ + 210, + 26 + ], + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [ + { + "localized_name": "sigmas", + "name": "sigmas", + "type": "SIGMAS", + "link": 5641 + } + ], + "outputs": [ + { + "localized_name": "SIGMAS", + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 5998 + ] + } + ], + "properties": { + "Node name for S&R": "PrintSigmas" + }, + "widgets_values": [] + }, + { + "id": 1953, + "type": "FloatToSigmas", + "pos": [ + 3391.44384765625, + 2769.8349609375 + ], + "size": [ + 216.59999084472656, + 26 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "localized_name": "float_list", + "name": "float_list", + "type": "FLOAT", + "link": 5567 + } + ], + "outputs": [ + { + "localized_name": "SIGMAS", + "name": "SIGMAS", + "type": "SIGMAS", + "links": [ + 5641 + ] + } + ], + "properties": { + "Node name for S&R": "FloatToSigmas", + "cnr_id": "comfyui-kjnodes", + "ver": "1.0.8" + }, + "widgets_values": [] + }, + { + "id": 2022, + "type": "Reroute", + "pos": [ + 3229.825439453125, + 1977.3233642578125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5715 + } + ], + "outputs": [ + { + "name": "", + "type": "CONDITIONING", + "links": [ + 5741 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2023, + "type": "Reroute", + "pos": [ + 3223.71728515625, + 2017.1053466796875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5716 + } + ], + "outputs": [ + { + "name": "", + "type": "CONDITIONING", + "links": [ + 5742 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2097, + "type": "Note", + "pos": [ + 2233.589111328125, + 2181.5400390625 + ], + "size": [ + 285.2653503417969, + 88 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "Leave the positive conditioning text blank. Use multi prompt provider node on the right." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 2095, + "type": "Reroute", + "pos": [ + 3925.002197265625, + 2883.0654296875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 29, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5826 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 5828 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 73, + "type": "KSamplerSelect", + "pos": [ + 3586.90478515625, + 2493.794189453125 + ], + "size": [ + 251.94110107421875, + 58 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "localized_name": "sampler_name", + "name": "sampler_name", + "type": "COMBO", + "widget": { + "name": "sampler_name" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "SAMPLER", + "name": "SAMPLER", + "type": "SAMPLER", + "links": [ + 5997 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "KSamplerSelect" + }, + "widgets_values": [ + "euler_ancestral" + ] + }, + { + "id": 1896, + "type": "CheckpointLoaderSimple", + "pos": [ + 1923.9993896484375, + 2810.05615234375 + ], + "size": [ + 315, + 98 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "localized_name": "ckpt_name", + "name": "ckpt_name", + "type": "COMBO", + "widget": { + "name": "ckpt_name" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "MODEL", + "name": "MODEL", + "type": "MODEL", + "slot_index": 0, + "links": [ + 5941 + ] + }, + { + "localized_name": "CLIP", + "name": "CLIP", + "type": "CLIP", + "links": null + }, + { + "localized_name": "VAE", + "name": "VAE", + "type": "VAE", + "slot_index": 2, + "links": [ + 5818, + 5825 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "CheckpointLoaderSimple" + }, + "widgets_values": [ + "ltxv-13b-0.9.8-distilled.safetensors" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 1870, + "type": "Set VAE Decoder Noise", + "pos": [ + 4506.759765625, + 2418.0849609375 + ], + "size": [ + 235.1999969482422, + 130 + ], + "flags": {}, + "order": 36, + "mode": 0, + "inputs": [ + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5828 + }, + { + "localized_name": "timestep", + "name": "timestep", + "type": "FLOAT", + "widget": { + "name": "timestep" + }, + "link": null + }, + { + "localized_name": "scale", + "name": "scale", + "type": "FLOAT", + "widget": { + "name": "scale" + }, + "link": null + }, + { + "localized_name": "seed", + "name": "seed", + "type": "INT", + "widget": { + "name": "seed" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "VAE", + "name": "VAE", + "type": "VAE", + "links": [ + 5363 + ] + } + ], + "properties": { + "Node name for S&R": "Set VAE Decoder Noise" + }, + "widgets_values": [ + 0.05000000000000001, + 0.025000000000000005, + 42, + "fixed" + ] + }, + { + "id": 2119, + "type": "EmptyLTXVLatentVideo", + "pos": [ + 2818.27294921875, + 2537.522705078125 + ], + "size": [ + 270, + 130 + ], + "flags": {}, + "order": 38, + "mode": 0, + "inputs": [ + { + "localized_name": "width", + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": 5973 + }, + { + "localized_name": "height", + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": 5974 + }, + { + "localized_name": "length", + "name": "length", + "type": "INT", + "widget": { + "name": "length" + }, + "link": 5990 + }, + { + "localized_name": "batch_size", + "name": "batch_size", + "type": "INT", + "widget": { + "name": "batch_size" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "LATENT", + "name": "LATENT", + "type": "LATENT", + "links": [ + 6000 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.44", + "Node name for S&R": "EmptyLTXVLatentVideo" + }, + "widgets_values": [ + 768, + 512, + 361, + 1 + ] + }, + { + "id": 7, + "type": "CLIPTextEncode", + "pos": [ + 2187.339599609375, + 2528.894775390625 + ], + "size": [ + 324.2440490722656, + 138.9625701904297 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + { + "localized_name": "clip", + "name": "clip", + "type": "CLIP", + "link": 5603 + }, + { + "localized_name": "text", + "name": "text", + "type": "STRING", + "widget": { + "name": "text" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "CONDITIONING", + "name": "CONDITIONING", + "type": "CONDITIONING", + "slot_index": 0, + "links": [ + 3365 + ] + } + ], + "title": "CLIP Text Encode (Negative Prompt)", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "low quality, worst quality, deformed, distorted, disfigured, motion smear, motion artifacts, fused fingers, bad anatomy, weird hand, ugly" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 2137, + "type": "CLIPTextEncode", + "pos": [ + 2207.601806640625, + 2326.387451171875 + ], + "size": [ + 277.42706298828125, + 104.5481948852539 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [ + { + "localized_name": "clip", + "name": "clip", + "type": "CLIP", + "link": 5966 + }, + { + "localized_name": "text", + "name": "text", + "type": "STRING", + "widget": { + "name": "text" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "CONDITIONING", + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": [ + 5967 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.44", + "Node name for S&R": "CLIPTextEncode" + }, + "widgets_values": [ + "" + ] + }, + { + "id": 2143, + "type": "VAEEncode", + "pos": [ + 2871.01513671875, + 2827.94580078125 + ], + "size": [ + 140, + 46 + ], + "flags": {}, + "order": 37, + "mode": 0, + "inputs": [ + { + "localized_name": "pixels", + "name": "pixels", + "type": "IMAGE", + "link": 5989 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5979 + } + ], + "outputs": [ + { + "localized_name": "LATENT", + "name": "LATENT", + "type": "LATENT", + "links": [ + 6001 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.43", + "Node name for S&R": "VAEEncode" + }, + "widgets_values": [] + }, + { + "id": 1967, + "type": "STGAdvancedPresets", + "pos": [ + 2914.488037109375, + 2417.88720703125 + ], + "size": [ + 232.07870483398438, + 58 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "localized_name": "preset", + "name": "preset", + "type": "COMBO", + "widget": { + "name": "preset" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "STG_ADVANCED_PRESET", + "name": "STG_ADVANCED_PRESET", + "type": "STG_ADVANCED_PRESET", + "links": [ + 5613 + ] + } + ], + "properties": { + "Node name for S&R": "STGAdvancedPresets" + }, + "widgets_values": [ + "13b Distilled" + ] + }, + { + "id": 1336, + "type": "VHS_VideoCombine", + "pos": [ + 4850.5517578125, + 2275.85302734375 + ], + "size": [ + 430.260498046875, + 334 + ], + "flags": {}, + "order": 50, + "mode": 0, + "inputs": [ + { + "localized_name": "images", + "name": "images", + "type": "IMAGE", + "link": 3578 + }, + { + "localized_name": "audio", + "name": "audio", + "shape": 7, + "type": "AUDIO", + "link": null + }, + { + "localized_name": "meta_batch", + "name": "meta_batch", + "shape": 7, + "type": "VHS_BatchManager", + "link": null + }, + { + "localized_name": "vae", + "name": "vae", + "shape": 7, + "type": "VAE", + "link": null + }, + { + "localized_name": "frame_rate", + "name": "frame_rate", + "type": "FLOAT", + "widget": { + "name": "frame_rate" + }, + "link": null + }, + { + "localized_name": "loop_count", + "name": "loop_count", + "type": "INT", + "widget": { + "name": "loop_count" + }, + "link": null + }, + { + "localized_name": "filename_prefix", + "name": "filename_prefix", + "type": "STRING", + "widget": { + "name": "filename_prefix" + }, + "link": null + }, + { + "localized_name": "format", + "name": "format", + "type": "COMBO", + "widget": { + "name": "format" + }, + "link": null + }, + { + "localized_name": "pingpong", + "name": "pingpong", + "type": "BOOLEAN", + "widget": { + "name": "pingpong" + }, + "link": null + }, + { + "localized_name": "save_output", + "name": "save_output", + "type": "BOOLEAN", + "widget": { + "name": "save_output" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "Filenames", + "name": "Filenames", + "type": "VHS_FILENAMES", + "links": null + } + ], + "properties": { + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 24, + "loop_count": 0, + "filename_prefix": "ltxv-base", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": false, + "trim_to_audio": false, + "pingpong": false, + "save_output": false, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "ltxv-base_00003.mp4", + "subfolder": "", + "type": "temp", + "format": "video/h264-mp4", + "frame_rate": 24, + "workflow": "ltxv-base_00003.png", + "fullpath": "/home/michael/src/comfyui_worker_serving/src/comfyui/temp/ltxv-base_00003.mp4" + } + } + } + }, + { + "id": 1507, + "type": "RandomNoise", + "pos": [ + 3535.158203125, + 2604.37841796875 + ], + "size": [ + 239.2462158203125, + 82 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "localized_name": "noise_seed", + "name": "noise_seed", + "type": "INT", + "widget": { + "name": "noise_seed" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "NOISE", + "name": "NOISE", + "type": "NOISE", + "slot_index": 0, + "links": [ + 5996 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.28", + "Node name for S&R": "RandomNoise" + }, + "widgets_values": [ + 1, + "fixed" + ] + }, + { + "id": 1828, + "type": "LTXVLatentUpsamplerModelLoader", + "pos": [ + 5665.14599609375, + 2265.11572265625 + ], + "size": [ + 349.8224792480469, + 113.41394805908203 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "localized_name": "upscale_model", + "name": "upscale_model", + "type": "COMBO", + "widget": { + "name": "upscale_model" + }, + "link": null + }, + { + "localized_name": "spatial_upsample", + "name": "spatial_upsample", + "type": "BOOLEAN", + "widget": { + "name": "spatial_upsample" + }, + "link": null + }, + { + "localized_name": "temporal_upsample", + "name": "temporal_upsample", + "type": "BOOLEAN", + "widget": { + "name": "temporal_upsample" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "UPSCALE_MODEL", + "name": "UPSCALE_MODEL", + "type": "UPSCALE_MODEL", + "links": [ + 5303 + ] + } + ], + "properties": { + "Node name for S&R": "LTXVLatentUpsamplerModelLoader" + }, + "widgets_values": [ + "ltxv-spatial-upscaler-0.9.8.safetensors", + true, + false + ] + }, + { + "id": 1691, + "type": "LTXVLatentUpsampler", + "pos": [ + 6055.61474609375, + 2476.571533203125 + ], + "size": [ + 235.1999969482422, + 66 + ], + "flags": {}, + "order": 52, + "mode": 0, + "inputs": [ + { + "localized_name": "samples", + "name": "samples", + "type": "LATENT", + "link": 5839 + }, + { + "localized_name": "upscale_model", + "name": "upscale_model", + "type": "UPSCALE_MODEL", + "link": 5303 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5820 + } + ], + "outputs": [ + { + "localized_name": "LATENT", + "name": "LATENT", + "type": "LATENT", + "links": [ + 5971 + ] + } + ], + "properties": { + "Node name for S&R": "LTXVLatentUpsampler" + }, + "widgets_values": [] + }, + { + "id": 2091, + "type": "Reroute", + "pos": [ + 5588.74267578125, + 2046.29345703125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 35, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5831 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 5820, + 5821 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2089, + "type": "Reroute", + "pos": [ + 6374.76953125, + 2075.138427734375 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 33, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5815 + } + ], + "outputs": [ + { + "name": "", + "type": "MODEL", + "links": [ + 5898 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2092, + "type": "Reroute", + "pos": [ + 7487.28955078125, + 2057.455078125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 43, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5821 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 5823, + 5902 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2093, + "type": "Reroute", + "pos": [ + 7880.1572265625, + 2062.468505859375 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 46, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5823 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 5874 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2148, + "type": "LTXVLoopingSampler", + "pos": [ + 4011.846923828125, + 2252.72412109375 + ], + "size": [ + 365.21484375, + 522 + ], + "flags": {}, + "order": 45, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 5994 + }, + { + "localized_name": "vae", + "name": "vae", + "type": "VAE", + "link": 5995 + }, + { + "localized_name": "noise", + "name": "noise", + "type": "NOISE", + "link": 5996 + }, + { + "localized_name": "sampler", + "name": "sampler", + "type": "SAMPLER", + "link": 5997 + }, + { + "localized_name": "sigmas", + "name": "sigmas", + "type": "SIGMAS", + "link": 5998 + }, + { + "localized_name": "guider", + "name": "guider", + "type": "GUIDER", + "link": 5999 + }, + { + "localized_name": "latents", + "name": "latents", + "type": "LATENT", + "link": 6000 + }, + { + "localized_name": "optional_cond_image", + "name": "optional_cond_image", + "shape": 7, + "type": "IMAGE", + "link": null + }, + { + "localized_name": "optional_guiding_latents", + "name": "optional_guiding_latents", + "shape": 7, + "type": "LATENT", + "link": 6001 + }, + { + "localized_name": "optional_positive_conditionings", + "name": "optional_positive_conditionings", + "shape": 7, + "type": "CONDITIONING", + "link": 6002 + }, + { + "localized_name": "optional_negative_index_latents", + "name": "optional_negative_index_latents", + "shape": 7, + "type": "LATENT", + "link": null + }, + { + "localized_name": "guiding_strength", + "name": "guiding_strength", + "type": "FLOAT", + "widget": { + "name": "guiding_strength" + }, + "link": null + }, + { + "localized_name": "temporal_tile_size", + "name": "temporal_tile_size", + "type": "INT", + "widget": { + "name": "temporal_tile_size" + }, + "link": null + }, + { + "localized_name": "temporal_overlap", + "name": "temporal_overlap", + "type": "INT", + "widget": { + "name": "temporal_overlap" + }, + "link": null + }, + { + "localized_name": "temporal_overlap_cond_strength", + "name": "temporal_overlap_cond_strength", + "type": "FLOAT", + "widget": { + "name": "temporal_overlap_cond_strength" + }, + "link": null + }, + { + "localized_name": "horizontal_tiles", + "name": "horizontal_tiles", + "type": "INT", + "widget": { + "name": "horizontal_tiles" + }, + "link": null + }, + { + "localized_name": "vertical_tiles", + "name": "vertical_tiles", + "type": "INT", + "widget": { + "name": "vertical_tiles" + }, + "link": null + }, + { + "localized_name": "spatial_overlap", + "name": "spatial_overlap", + "type": "INT", + "widget": { + "name": "spatial_overlap" + }, + "link": null + }, + { + "localized_name": "adain_factor", + "name": "adain_factor", + "shape": 7, + "type": "FLOAT", + "widget": { + "name": "adain_factor" + }, + "link": null + }, + { + "localized_name": "optional_negative_index", + "name": "optional_negative_index", + "shape": 7, + "type": "INT", + "widget": { + "name": "optional_negative_index" + }, + "link": null + }, + { + "localized_name": "optional_negative_index_strength", + "name": "optional_negative_index_strength", + "shape": 7, + "type": "FLOAT", + "widget": { + "name": "optional_negative_index_strength" + }, + "link": null + }, + { + "localized_name": "per_tile_seed_offsets", + "name": "per_tile_seed_offsets", + "shape": 7, + "type": "STRING", + "widget": { + "name": "per_tile_seed_offsets" + }, + "link": null + }, + { + "localized_name": "per_tile_use_negative_latents", + "name": "per_tile_use_negative_latents", + "shape": 7, + "type": "STRING", + "widget": { + "name": "per_tile_use_negative_latents" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "denoised_output", + "name": "denoised_output", + "type": "LATENT", + "links": [ + 6003, + 6004 + ] + } + ], + "properties": { + "Node name for S&R": "LTXVLoopingSampler" + }, + "widgets_values": [ + 1, + 80, + 24, + 0.5, + 1, + 1, + 1, + 0, + -1, + 1, + "0", + "1" + ] + }, + { + "id": 2147, + "type": "LoraLoaderModelOnly", + "pos": [ + 3079.407958984375, + 2192.917236328125 + ], + "size": [ + 369.5658264160156, + 82 + ], + "flags": {}, + "order": 34, + "mode": 0, + "inputs": [ + { + "localized_name": "model", + "name": "model", + "type": "MODEL", + "link": 5991 + }, + { + "localized_name": "lora_name", + "name": "lora_name", + "type": "COMBO", + "widget": { + "name": "lora_name" + }, + "link": null + }, + { + "localized_name": "strength_model", + "name": "strength_model", + "type": "FLOAT", + "widget": { + "name": "strength_model" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "MODEL", + "name": "MODEL", + "type": "MODEL", + "links": [ + 5992, + 5994 + ] + } + ], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.43", + "Node name for S&R": "LoraLoaderModelOnly" + }, + "widgets_values": [ + "ltxv/13b/ltxv-097-ic-lora-depth-control.safetensors", + 1.0000000000000002 + ] + }, + { + "id": 2141, + "type": "PrimitiveInt", + "pos": [ + 2603.194091796875, + 2755.296630859375 + ], + "size": [ + 210, + 82 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "localized_name": "value", + "name": "value", + "type": "INT", + "widget": { + "name": "value" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "INT", + "name": "INT", + "type": "INT", + "links": [ + 5974, + 5983 + ] + } + ], + "title": "Height", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.43", + "Node name for S&R": "PrimitiveInt" + }, + "widgets_values": [ + 512, + "fixed" + ] + }, + { + "id": 2140, + "type": "PrimitiveInt", + "pos": [ + 2371.451416015625, + 2757.50048828125 + ], + "size": [ + 210, + 82 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "localized_name": "value", + "name": "value", + "type": "INT", + "widget": { + "name": "value" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "INT", + "name": "INT", + "type": "INT", + "links": [ + 5973, + 5982 + ] + } + ], + "title": "Width", + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.43", + "Node name for S&R": "PrimitiveInt" + }, + "widgets_values": [ + 768, + "fixed" + ] + }, + { + "id": 2149, + "type": "Note", + "pos": [ + 1921.96630859375, + 3036.942626953125 + ], + "size": [ + 264.2660827636719, + 194.1212615966797 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "If changing guiding video to pose or canny edges needs select relevant lora in the lora loader node." + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 2144, + "type": "VHS_LoadVideo", + "pos": [ + 2209.757568359375, + 3033.856689453125 + ], + "size": [ + 313.7864074707031, + 310 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "localized_name": "meta_batch", + "name": "meta_batch", + "shape": 7, + "type": "VHS_BatchManager", + "link": null + }, + { + "localized_name": "vae", + "name": "vae", + "shape": 7, + "type": "VAE", + "link": null + }, + { + "localized_name": "video", + "name": "video", + "type": "COMBO", + "widget": { + "name": "video" + }, + "link": null + }, + { + "localized_name": "force_rate", + "name": "force_rate", + "type": "FLOAT", + "widget": { + "name": "force_rate" + }, + "link": null + }, + { + "localized_name": "custom_width", + "name": "custom_width", + "type": "INT", + "widget": { + "name": "custom_width" + }, + "link": null + }, + { + "localized_name": "custom_height", + "name": "custom_height", + "type": "INT", + "widget": { + "name": "custom_height" + }, + "link": null + }, + { + "localized_name": "frame_load_cap", + "name": "frame_load_cap", + "type": "INT", + "widget": { + "name": "frame_load_cap" + }, + "link": null + }, + { + "localized_name": "skip_first_frames", + "name": "skip_first_frames", + "type": "INT", + "widget": { + "name": "skip_first_frames" + }, + "link": null + }, + { + "localized_name": "select_every_nth", + "name": "select_every_nth", + "type": "INT", + "widget": { + "name": "select_every_nth" + }, + "link": null + }, + { + "localized_name": "format", + "name": "format", + "shape": 7, + "type": "COMBO", + "widget": { + "name": "format" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 5981 + ] + }, + { + "localized_name": "frame_count", + "name": "frame_count", + "type": "INT", + "links": null + }, + { + "localized_name": "audio", + "name": "audio", + "type": "AUDIO", + "links": null + }, + { + "localized_name": "video_info", + "name": "video_info", + "type": "VHS_VIDEOINFO", + "links": null + } + ], + "properties": { + "Node name for S&R": "VHS_LoadVideo" + }, + "widgets_values": { + "video": "depth-surfing.mp4", + "force_rate": 0, + "custom_width": 0, + "custom_height": 0, + "frame_load_cap": 481, + "skip_first_frames": 0, + "select_every_nth": 1, + "format": "LTXV", + "choose video to upload": "image", + "videopreview": { + "hidden": false, + "paused": true, + "params": { + "frame_load_cap": 481, + "skip_first_frames": 0, + "force_rate": 0, + "filename": "depth-surfing.mp4", + "type": "input", + "format": "video/mp4", + "select_every_nth": 1 + } + } + } + }, + { + "id": 2146, + "type": "GetImageSizeAndCount", + "pos": [ + 2905.13330078125, + 3033.642333984375 + ], + "size": [ + 190.86483764648438, + 86 + ], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [ + { + "localized_name": "image", + "name": "image", + "type": "IMAGE", + "link": 5988 + } + ], + "outputs": [ + { + "localized_name": "image", + "name": "image", + "type": "IMAGE", + "links": [ + 5989 + ] + }, + { + "label": "768 width", + "localized_name": "width", + "name": "width", + "type": "INT", + "links": null + }, + { + "label": "512 height", + "localized_name": "height", + "name": "height", + "type": "INT", + "links": null + }, + { + "label": "481 count", + "localized_name": "count", + "name": "count", + "type": "INT", + "links": [ + 5990 + ] + } + ], + "properties": { + "Node name for S&R": "GetImageSizeAndCount", + "cnr_id": "comfyui-kjnodes", + "ver": "1.0.8" + }, + "widgets_values": [] + }, + { + "id": 2145, + "type": "ImageResizeKJ", + "pos": [ + 2580.661865234375, + 3032.484619140625 + ], + "size": [ + 270, + 238 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "localized_name": "image", + "name": "image", + "type": "IMAGE", + "link": 5981 + }, + { + "localized_name": "width_input", + "name": "width_input", + "shape": 7, + "type": "INT", + "link": 5982 + }, + { + "localized_name": "height_input", + "name": "height_input", + "shape": 7, + "type": "INT", + "link": 5983 + }, + { + "localized_name": "get_image_size", + "name": "get_image_size", + "shape": 7, + "type": "IMAGE", + "link": null + }, + { + "localized_name": "width", + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": null + }, + { + "localized_name": "height", + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": null + }, + { + "localized_name": "upscale_method", + "name": "upscale_method", + "type": "COMBO", + "widget": { + "name": "upscale_method" + }, + "link": null + }, + { + "localized_name": "keep_proportion", + "name": "keep_proportion", + "type": "BOOLEAN", + "widget": { + "name": "keep_proportion" + }, + "link": null + }, + { + "localized_name": "divisible_by", + "name": "divisible_by", + "type": "INT", + "widget": { + "name": "divisible_by" + }, + "link": null + }, + { + "localized_name": "crop", + "name": "crop", + "shape": 7, + "type": "COMBO", + "widget": { + "name": "crop" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 5988 + ] + }, + { + "localized_name": "width", + "name": "width", + "type": "INT", + "links": null + }, + { + "localized_name": "height", + "name": "height", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "ImageResizeKJ", + "cnr_id": "comfyui-kjnodes", + "ver": "1.0.8" + }, + "widgets_values": [ + 768, + 512, + "bilinear", + false, + 32, + "center" + ] + }, + { + "id": 2088, + "type": "Reroute", + "pos": [ + 2091.060302734375, + 2069.913330078125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 27, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5938 + } + ], + "outputs": [ + { + "name": "", + "type": "MODEL", + "links": [ + 5815, + 5991 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2090, + "type": "Reroute", + "pos": [ + 1989.3577880859375, + 2035.9425048828125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 5818 + } + ], + "outputs": [ + { + "name": "", + "type": "VAE", + "links": [ + 5829 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 2136, + "type": "MultiPromptProvider", + "pos": [ + 2630.412841796875, + 1869.997802734375 + ], + "size": [ + 1002.2837524414062, + 88 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [ + { + "localized_name": "clip", + "name": "clip", + "type": "CLIP", + "link": 5964 + }, + { + "localized_name": "prompts", + "name": "prompts", + "type": "STRING", + "widget": { + "name": "prompts" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "conditionings", + "name": "conditionings", + "type": "CONDITIONING", + "links": [ + 6002 + ] + } + ], + "properties": { + "Node name for S&R": "MultiPromptProvider" + }, + "widgets_values": [ + "ultra-realistic cinematic scene of a smiling snowboarder racing down a steep mountain slope with a massive avalanche thundering behind them |\nUltra-realistic cinematic scene of a determined jet skier carving across a stormy open ocean, massive waves crashing around them as a towering wall of water" + ] + } + ], + "links": [ + [ + 3365, + 7, + 0, + 1241, + 1, + "CONDITIONING" + ], + [ + 3578, + 1335, + 0, + 1336, + 0, + "IMAGE" + ], + [ + 5303, + 1828, + 0, + 1691, + 1, + "UPSCALE_MODEL" + ], + [ + 5363, + 1870, + 0, + 1335, + 1, + "VAE" + ], + [ + 5567, + 1952, + 0, + 1953, + 0, + "FLOAT" + ], + [ + 5584, + 1241, + 0, + 1921, + 1, + "CONDITIONING" + ], + [ + 5585, + 1241, + 1, + 1921, + 2, + "CONDITIONING" + ], + [ + 5603, + 38, + 0, + 7, + 0, + "CLIP" + ], + [ + 5613, + 1967, + 0, + 1921, + 3, + "STG_ADVANCED_PRESET" + ], + [ + 5641, + 1953, + 0, + 1949, + 0, + "SIGMAS" + ], + [ + 5715, + 1241, + 0, + 2022, + 0, + "*" + ], + [ + 5716, + 1241, + 1, + 2023, + 0, + "*" + ], + [ + 5739, + 2037, + 0, + 1871, + 1, + "CONDITIONING" + ], + [ + 5740, + 2038, + 0, + 1871, + 2, + "CONDITIONING" + ], + [ + 5741, + 2022, + 0, + 2037, + 0, + "*" + ], + [ + 5742, + 2023, + 0, + 2038, + 0, + "*" + ], + [ + 5782, + 2072, + 0, + 2073, + 0, + "FLOAT" + ], + [ + 5815, + 2088, + 0, + 2089, + 0, + "*" + ], + [ + 5818, + 1896, + 2, + 2090, + 0, + "*" + ], + [ + 5820, + 2091, + 0, + 1691, + 2, + "VAE" + ], + [ + 5821, + 2091, + 0, + 2092, + 0, + "*" + ], + [ + 5823, + 2092, + 0, + 2093, + 0, + "*" + ], + [ + 5825, + 1896, + 2, + 2094, + 0, + "*" + ], + [ + 5826, + 2094, + 0, + 2095, + 0, + "*" + ], + [ + 5828, + 2095, + 0, + 1870, + 0, + "VAE" + ], + [ + 5829, + 2090, + 0, + 2096, + 0, + "*" + ], + [ + 5831, + 2096, + 0, + 2091, + 0, + "*" + ], + [ + 5838, + 2101, + 0, + 2102, + 0, + "*" + ], + [ + 5839, + 2102, + 0, + 1691, + 0, + "LATENT" + ], + [ + 5873, + 2116, + 0, + 1871, + 3, + "STG_ADVANCED_PRESET" + ], + [ + 5874, + 2093, + 0, + 2117, + 0, + "VAE" + ], + [ + 5896, + 2122, + 0, + 1871, + 0, + "MODEL" + ], + [ + 5898, + 2089, + 0, + 2122, + 0, + "MODEL" + ], + [ + 5901, + 2122, + 0, + 2124, + 0, + "MODEL" + ], + [ + 5902, + 2092, + 0, + 2124, + 1, + "VAE" + ], + [ + 5903, + 1598, + 0, + 2124, + 2, + "NOISE" + ], + [ + 5904, + 1926, + 0, + 2124, + 3, + "SAMPLER" + ], + [ + 5905, + 2073, + 0, + 2124, + 4, + "SIGMAS" + ], + [ + 5906, + 1871, + 0, + 2124, + 5, + "GUIDER" + ], + [ + 5912, + 2125, + 0, + 2124, + 8, + "LATENT" + ], + [ + 5917, + 2117, + 0, + 2127, + 0, + "VAE" + ], + [ + 5918, + 2124, + 0, + 2127, + 1, + "LATENT" + ], + [ + 5920, + 2127, + 0, + 1973, + 0, + "IMAGE" + ], + [ + 5938, + 2129, + 0, + 2088, + 0, + "*" + ], + [ + 5941, + 1896, + 0, + 2129, + 0, + "*" + ], + [ + 5961, + 2125, + 0, + 2124, + 6, + "LATENT" + ], + [ + 5964, + 38, + 0, + 2136, + 0, + "CLIP" + ], + [ + 5966, + 38, + 0, + 2137, + 0, + "CLIP" + ], + [ + 5967, + 2137, + 0, + 1241, + 0, + "CONDITIONING" + ], + [ + 5971, + 1691, + 0, + 2125, + 0, + "*" + ], + [ + 5973, + 2140, + 0, + 2119, + 0, + "INT" + ], + [ + 5974, + 2141, + 0, + 2119, + 1, + "INT" + ], + [ + 5979, + 2094, + 0, + 2143, + 1, + "VAE" + ], + [ + 5981, + 2144, + 0, + 2145, + 0, + "IMAGE" + ], + [ + 5982, + 2140, + 0, + 2145, + 1, + "INT" + ], + [ + 5983, + 2141, + 0, + 2145, + 2, + "INT" + ], + [ + 5988, + 2145, + 0, + 2146, + 0, + "IMAGE" + ], + [ + 5989, + 2146, + 0, + 2143, + 0, + "IMAGE" + ], + [ + 5990, + 2146, + 3, + 2119, + 2, + "INT" + ], + [ + 5991, + 2088, + 0, + 2147, + 0, + "MODEL" + ], + [ + 5992, + 2147, + 0, + 1921, + 0, + "MODEL" + ], + [ + 5994, + 2147, + 0, + 2148, + 0, + "MODEL" + ], + [ + 5995, + 2096, + 0, + 2148, + 1, + "VAE" + ], + [ + 5996, + 1507, + 0, + 2148, + 2, + "NOISE" + ], + [ + 5997, + 73, + 0, + 2148, + 3, + "SAMPLER" + ], + [ + 5998, + 1949, + 0, + 2148, + 4, + "SIGMAS" + ], + [ + 5999, + 1921, + 0, + 2148, + 5, + "GUIDER" + ], + [ + 6000, + 2119, + 0, + 2148, + 6, + "LATENT" + ], + [ + 6001, + 2143, + 0, + 2148, + 8, + "LATENT" + ], + [ + 6002, + 2136, + 0, + 2148, + 9, + "CONDITIONING" + ], + [ + 6003, + 2148, + 0, + 1335, + 0, + "LATENT" + ], + [ + 6004, + 2148, + 0, + 2101, + 0, + "*" + ] + ], + "groups": [ + { + "id": 34, + "title": "Latent Upscaler", + "bounding": [ + 5585.8896484375, + 2108.431640625, + 761.7763671875, + 493.7742614746094 + ], + "color": "#a1309b", + "font_size": 24, + "flags": {}, + "nodes": [ + 1828, + 1691 + ] + }, + { + "id": 42, + "title": "Add Details", + "bounding": [ + 6371.76318359375, + 2112.9609375, + 2866.58203125, + 1085.7049560546875 + ], + "color": "#a1309b", + "font_size": 24, + "flags": {}, + "nodes": [ + 1926, + 2038, + 2037, + 2073, + 1598, + 1973, + 2116, + 2117, + 2072, + 1871, + 2124, + 2127, + 2122, + 2125 + ] + }, + { + "id": 48, + "title": "LTXV Base Video", + "bounding": [ + 1902.1943359375, + 2103.927490234375, + 3663.2529296875, + 825.6270751953125 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {}, + "nodes": [ + 1335, + 1952, + 2101, + 1921, + 2129, + 2094, + 1241, + 38, + 1949, + 1953, + 2097, + 2095, + 73, + 1896, + 1870, + 2119, + 7, + 2137, + 2143, + 1967, + 1336, + 1507, + 2148, + 2147, + 2141, + 2140 + ] + }, + { + "id": 49, + "title": "Load guiding video", + "bounding": [ + 1905.921630859375, + 2950.99853515625, + 1304.6558837890625, + 651.2169799804688 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {}, + "nodes": [ + 2149, + 2144, + 2146, + 2145 + ] + } + ], + "config": {}, + "extra": { + "ds": { + "scale": 0.8954302432552734, + "offset": [ + -2308.495116040538, + -1635.1741240123174 + ] + }, + "frontendVersion": "1.17.11", + "VHS_latentpreview": true, + "VHS_latentpreviewrate": 0, + "VHS_MetadataImage": true, + "VHS_KeepIntermediate": true, + "prompt": { + "7": { + "inputs": { + "text": "low quality, worst quality, deformed, distorted, disfigured, motion smear, motion artifacts, fused fingers, bad anatomy, weird hand, ugly", + "clip": [ + "38", + 0 + ] + }, + "class_type": "CLIPTextEncode", + "_meta": { + "title": "CLIP Text Encode (Negative Prompt)" + } + }, + "38": { + "inputs": { + "clip_name": "t5xxl_fp16.safetensors", + "type": "ltxv", + "device": "default" + }, + "class_type": "CLIPLoader", + "_meta": { + "title": "Load CLIP" + } + }, + "73": { + "inputs": { + "sampler_name": "euler_ancestral" + }, + "class_type": "KSamplerSelect", + "_meta": { + "title": "KSamplerSelect" + } + }, + "1241": { + "inputs": { + "frame_rate": 24.000000000000004, + "positive": [ + "2137", + 0 + ], + "negative": [ + "7", + 0 + ] + }, + "class_type": "LTXVConditioning", + "_meta": { + "title": "LTXVConditioning" + } + }, + "1335": { + "inputs": { + "samples": [ + "2148", + 0 + ], + "vae": [ + "1870", + 0 + ] + }, + "class_type": "VAEDecode", + "_meta": { + "title": "VAE Decode" + } + }, + "1336": { + "inputs": { + "frame_rate": 24, + "loop_count": 0, + "filename_prefix": "ltxv-base", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": false, + "trim_to_audio": false, + "pingpong": false, + "save_output": false, + "images": [ + "1335", + 0 + ] + }, + "class_type": "VHS_VideoCombine", + "_meta": { + "title": "Video Combine πŸŽ₯πŸ…₯πŸ…—πŸ…’" + } + }, + "1507": { + "inputs": { + "noise_seed": 1 + }, + "class_type": "RandomNoise", + "_meta": { + "title": "RandomNoise" + } + }, + "1598": { + "inputs": { + "noise_seed": 1625 + }, + "class_type": "RandomNoise", + "_meta": { + "title": "RandomNoise" + } + }, + "1691": { + "inputs": { + "samples": [ + "2148", + 0 + ], + "upscale_model": [ + "1828", + 0 + ], + "vae": [ + "1896", + 2 + ] + }, + "class_type": "LTXVLatentUpsampler", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ LTXV Latent Upsampler" + } + }, + "1828": { + "inputs": { + "upscale_model": "ltxv-spatial-upscaler-0.9.8.safetensors", + "spatial_upsample": true, + "temporal_upsample": false + }, + "class_type": "LTXVLatentUpsamplerModelLoader", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ LTXV Latent Upsampler Model Loader" + } + }, + "1870": { + "inputs": { + "timestep": 0.05000000000000001, + "scale": 0.025000000000000005, + "seed": 42, + "vae": [ + "1896", + 2 + ] + }, + "class_type": "Set VAE Decoder Noise", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ Set VAE Decoder Noise" + } + }, + "1871": { + "inputs": { + "skip_steps_sigma_threshold": 0.9970000000000002, + "cfg_star_rescale": true, + "sigmas": "1", + "cfg_values": "1", + "stg_scale_values": "0", + "stg_rescale_values": "1", + "stg_layers_indices": "[42]", + "model": [ + "2122", + 0 + ], + "positive": [ + "1241", + 0 + ], + "negative": [ + "1241", + 1 + ], + "preset": [ + "2116", + 0 + ] + }, + "class_type": "STGGuiderAdvanced", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ STG Guider Advanced" + } + }, + "1896": { + "inputs": { + "ckpt_name": "ltxv-13b-0.9.8-distilled.safetensors" + }, + "class_type": "CheckpointLoaderSimple", + "_meta": { + "title": "Load Checkpoint" + } + }, + "1921": { + "inputs": { + "skip_steps_sigma_threshold": 0.9970000000000002, + "cfg_star_rescale": true, + "sigmas": "1", + "cfg_values": "1", + "stg_scale_values": "0,0,0,0,0,0", + "stg_rescale_values": "1", + "stg_layers_indices": "[25]", + "model": [ + "2147", + 0 + ], + "positive": [ + "1241", + 0 + ], + "negative": [ + "1241", + 1 + ], + "preset": [ + "1967", + 0 + ] + }, + "class_type": "STGGuiderAdvanced", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ STG Guider Advanced" + } + }, + "1926": { + "inputs": { + "sampler_name": "euler_ancestral" + }, + "class_type": "KSamplerSelect", + "_meta": { + "title": "KSamplerSelect" + } + }, + "1949": { + "inputs": { + "sigmas": [ + "1953", + 0 + ] + }, + "class_type": "PrintSigmas", + "_meta": { + "title": "PrintSigmas" + } + }, + "1952": { + "inputs": { + "string": "1.0000, 0.9937, 0.9875, 0.9812, 0.9750, 0.9094, 0.7250, 0.4219, 0.0\n" + }, + "class_type": "StringToFloatList", + "_meta": { + "title": "String to Float List" + } + }, + "1953": { + "inputs": { + "float_list": [ + "1952", + 0 + ] + }, + "class_type": "FloatToSigmas", + "_meta": { + "title": "Float To Sigmas" + } + }, + "1967": { + "inputs": { + "preset": "13b Distilled" + }, + "class_type": "STGAdvancedPresets", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ STG Advanced Presets" + } + }, + "1973": { + "inputs": { + "frame_rate": 24, + "loop_count": 0, + "filename_prefix": "ltxv-ic-lora", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": true, + "images": [ + "2127", + 0 + ] + }, + "class_type": "VHS_VideoCombine", + "_meta": { + "title": "Video Combine πŸŽ₯πŸ…₯πŸ…—πŸ…’" + } + }, + "2072": { + "inputs": { + "string": "0.99, 0.9094, 0.0" + }, + "class_type": "StringToFloatList", + "_meta": { + "title": "String to Float List" + } + }, + "2073": { + "inputs": { + "float_list": [ + "2072", + 0 + ] + }, + "class_type": "FloatToSigmas", + "_meta": { + "title": "Float To Sigmas" + } + }, + "2116": { + "inputs": { + "preset": "13b Distilled" + }, + "class_type": "STGAdvancedPresets", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ STG Advanced Presets" + } + }, + "2117": { + "inputs": { + "timestep": 0.05, + "scale": 0.025, + "seed": 42, + "vae": [ + "1896", + 2 + ] + }, + "class_type": "Set VAE Decoder Noise", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ Set VAE Decoder Noise" + } + }, + "2119": { + "inputs": { + "width": [ + "2140", + 0 + ], + "height": [ + "2141", + 0 + ], + "length": [ + "2146", + 3 + ], + "batch_size": 1 + }, + "class_type": "EmptyLTXVLatentVideo", + "_meta": { + "title": "EmptyLTXVLatentVideo" + } + }, + "2122": { + "inputs": { + "lora_name": "ltx-video-ICLoRA-detailer-13B-0.9.8", + "strength_model": 1, + "model": [ + "1896", + 0 + ] + }, + "class_type": "LoraLoaderModelOnly", + "_meta": { + "title": "LoraLoaderModelOnly" + } + }, + "2124": { + "inputs": { + "guiding_strength": 1, + "temporal_tile_size": 80, + "temporal_overlap": 24, + "temporal_overlap_cond_strength": 0.5, + "horizontal_tiles": 1, + "vertical_tiles": 1, + "spatial_overlap": 1, + "adain_factor": 0, + "optional_negative_index": -1, + "optional_negative_index_strength": 1, + "per_tile_seed_offsets": "0", + "per_tile_use_negative_latents": "1", + "model": [ + "2122", + 0 + ], + "vae": [ + "1896", + 2 + ], + "noise": [ + "1598", + 0 + ], + "sampler": [ + "1926", + 0 + ], + "sigmas": [ + "2073", + 0 + ], + "guider": [ + "1871", + 0 + ], + "latents": [ + "1691", + 0 + ], + "optional_guiding_latents": [ + "1691", + 0 + ] + }, + "class_type": "LTXVLoopingSampler", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ LTXV Looping Sampler" + } + }, + "2127": { + "inputs": { + "horizontal_tiles": 2, + "vertical_tiles": 2, + "overlap": 5, + "last_frame_fix": false, + "vae": [ + "2117", + 0 + ], + "latents": [ + "2124", + 0 + ] + }, + "class_type": "LTXVTiledVAEDecode", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ LTXV Tiled VAE Decode" + } + }, + "2136": { + "inputs": { + "prompts": "ultra-realistic cinematic scene of a smiling snowboarder racing down a steep mountain slope with a massive avalanche thundering behind them |\nUltra-realistic cinematic scene of a determined jet skier carving across a stormy open ocean, massive waves crashing around them as a towering wall of water", + "clip": [ + "38", + 0 + ] + }, + "class_type": "MultiPromptProvider", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ Multi Prompt Provider" + } + }, + "2137": { + "inputs": { + "text": "", + "clip": [ + "38", + 0 + ] + }, + "class_type": "CLIPTextEncode", + "_meta": { + "title": "CLIP Text Encode (Prompt)" + } + }, + "2140": { + "inputs": { + "value": 768 + }, + "class_type": "PrimitiveInt", + "_meta": { + "title": "Width" + } + }, + "2141": { + "inputs": { + "value": 512 + }, + "class_type": "PrimitiveInt", + "_meta": { + "title": "Height" + } + }, + "2143": { + "inputs": { + "pixels": [ + "2146", + 0 + ], + "vae": [ + "1896", + 2 + ] + }, + "class_type": "VAEEncode", + "_meta": { + "title": "VAE Encode" + } + }, + "2144": { + "inputs": { + "video": "depth-surfing.mp4", + "force_rate": 0, + "custom_width": 0, + "custom_height": 0, + "frame_load_cap": 481, + "skip_first_frames": 0, + "select_every_nth": 1, + "format": "LTXV" + }, + "class_type": "VHS_LoadVideo", + "_meta": { + "title": "Load Video (Upload) πŸŽ₯πŸ…₯πŸ…—πŸ…’" + } + }, + "2145": { + "inputs": { + "width": 768, + "height": 512, + "upscale_method": "bilinear", + "keep_proportion": false, + "divisible_by": 32, + "crop": "center", + "image": [ + "2144", + 0 + ], + "width_input": [ + "2140", + 0 + ], + "height_input": [ + "2141", + 0 + ] + }, + "class_type": "ImageResizeKJ", + "_meta": { + "title": "Resize Image" + } + }, + "2146": { + "inputs": { + "image": [ + "2145", + 0 + ] + }, + "class_type": "GetImageSizeAndCount", + "_meta": { + "title": "Get Image Size & Count" + } + }, + "2147": { + "inputs": { + "lora_name": "ltxv/13b/ltxv-097-ic-lora-depth-control.safetensors", + "strength_model": 1.0000000000000002, + "model": [ + "1896", + 0 + ] + }, + "class_type": "LoraLoaderModelOnly", + "_meta": { + "title": "LoraLoaderModelOnly" + } + }, + "2148": { + "inputs": { + "guiding_strength": 1, + "temporal_tile_size": 80, + "temporal_overlap": 24, + "temporal_overlap_cond_strength": 0.5, + "horizontal_tiles": 1, + "vertical_tiles": 1, + "spatial_overlap": 1, + "adain_factor": 0, + "optional_negative_index": -1, + "optional_negative_index_strength": 1, + "per_tile_seed_offsets": "0", + "per_tile_use_negative_latents": "1", + "model": [ + "2147", + 0 + ], + "vae": [ + "1896", + 2 + ], + "noise": [ + "1507", + 0 + ], + "sampler": [ + "73", + 0 + ], + "sigmas": [ + "1949", + 0 + ], + "guider": [ + "1921", + 0 + ], + "latents": [ + "2119", + 0 + ], + "optional_guiding_latents": [ + "2143", + 0 + ], + "optional_positive_conditionings": [ + "2136", + 0 + ] + }, + "class_type": "LTXVLoopingSampler", + "_meta": { + "title": "πŸ…›πŸ…£πŸ…§ LTXV Looping Sampler" + } + } + }, + "comfy_fork_version": "develop@ba9dad4", + "workspace_info": { + "id": "elBQFQknIoLYTEwIloQuw" + }, + "node_versions": { + "comfy-core": "0.3.20" + } + }, + "version": 0.4 +} diff --git a/film_grain.py b/film_grain.py index 67d6dd9..3ebe3b0 100644 --- a/film_grain.py +++ b/film_grain.py @@ -37,20 +37,24 @@ class LTXVFilmGrain: ) -> Tuple[torch.Tensor]: if grain_intensity < 0 or grain_intensity > 1: raise ValueError("Grain intensity must be between 0 and 1.") - device = comfy.model_management.get_torch_device() images = images.to(device) - grain = torch.randn_like(images, device=device) - grain[:, :, :, 0] *= 2 - grain[:, :, :, 2] *= 3 - grain = grain * saturation + grain[:, :, :, 1].unsqueeze(3).repeat( - 1, 1, 1, 3 - ) * (1 - saturation) + grain = torch.zeros(images[0:1].shape, device=device) - # Blend the grain with the image - noised_images = images + grain_intensity * grain - noised_images.clamp_(0, 1) - noised_images = noised_images.to(comfy.model_management.intermediate_device()) + # Process images in-place to reduce memory usage + for i in range(images.shape[0]): + # Generate grain for single image + torch.randn(grain.shape, device=device, out=grain) + grain[:, :, :, 0] *= 2 + grain[:, :, :, 2] *= 3 + grain = grain * saturation + grain[:, :, :, 1].unsqueeze(3).expand( + -1, -1, -1, 3 + ) * (1 - saturation) - return (noised_images,) + # Blend the grain with the image in-place + images[i : i + 1].add_(grain_intensity * grain) + images[i : i + 1].clamp_(0, 1) + + images = images.to(comfy.model_management.intermediate_device()) + return (images,) diff --git a/looping_sampler.py b/looping_sampler.py new file mode 100644 index 0000000..78409ce --- /dev/null +++ b/looping_sampler.py @@ -0,0 +1,726 @@ +import copy +from dataclasses import dataclass + +import comfy +import torch + +from .easy_samplers import LTXVBaseSampler, LTXVExtendSampler, LTXVInContextSampler +from .latents import LTXVSelectLatents +from .nodes_registry import comfy_node + + +@dataclass +class TileConfig: + """Configuration for spatial tile processing.""" + + tile_latents: dict + tile_guiding_latents: dict + tile_negative_index_latents: dict + tile_cond_image: torch.Tensor + tile_height: int + tile_width: int + v: int + h: int + vertical_tiles: int + horizontal_tiles: int + first_seed: int + + +@dataclass +class SamplingConfig: + """Configuration for sampling parameters.""" + + temporal_tile_size: int + temporal_overlap: int + temporal_overlap_cond_strength: float + guiding_strength: float + adain_factor: float + optional_negative_index: int + optional_negative_index_strength: float + optional_positive_conditionings: list + time_scale_factor: int + width_scale_factor: int + height_scale_factor: int + per_tile_seed_offsets: list + per_tile_use_negative_latents: list + + +@dataclass +class ModelConfig: + """Configuration for model components.""" + + model: object + vae: object + noise: object + sampler: object + sigmas: object + guider: object + + +@comfy_node( + name="LTXVLoopingSampler", +) +class LTXVLoopingSampler: + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "model": ("MODEL", {"tooltip": "The diffusion model to use."}), + "vae": ("VAE", {"tooltip": "The VAE to use."}), + "noise": ("NOISE", {"tooltip": "The noise to use."}), + "sampler": ("SAMPLER", {"tooltip": "The sampler to use."}), + "sigmas": ("SIGMAS", {"tooltip": "The sigmas to use."}), + "guider": ( + "GUIDER", + {"tooltip": "The guider to use, must be a STGGuiderAdvanced."}, + ), + "latents": ( + "LATENT", + { + "tooltip": "The latents to use for creating the long video, they can be guiding latents or empty latents when no guidance is used." + }, + ), + "guiding_strength": ( + "FLOAT", + { + "default": 1.0, + "min": 0.0, + "max": 1.0, + "step": 0.01, + "tooltip": "The strength of the conditioning on guiding latents, when optional_guiding_latents are provided.", + }, + ), + "temporal_tile_size": ( + "INT", + { + "default": 80, + "min": 24, + "max": 1000, + "step": 8, + "tooltip": "The size of the temporal tile to use for the sampling, in pixel frames, in addition to the overlapping region.", + }, + ), + "temporal_overlap": ( + "INT", + { + "default": 24, + "min": 16, + "max": 80, + "step": 8, + "tooltip": "The overlap between the temporal tiles, in pixel frames.", + }, + ), + "temporal_overlap_cond_strength": ( + "FLOAT", + { + "default": 0.5, + "min": 0.0, + "max": 1.0, + "step": 0.01, + "tooltip": "The strength of the conditioning on the latents from the previous temporal tile.", + }, + ), + "horizontal_tiles": ( + "INT", + { + "default": 1, + "min": 1, + "max": 6, + "tooltip": "Number of horizontal spatial tiles.", + }, + ), + "vertical_tiles": ( + "INT", + { + "default": 1, + "min": 1, + "max": 6, + "tooltip": "Number of vertical spatial tiles.", + }, + ), + "spatial_overlap": ( + "INT", + { + "default": 1, + "min": 1, + "max": 8, + "tooltip": "Overlap between spatial tiles.", + }, + ), + }, + "optional": { + "optional_cond_image": ( + "IMAGE", + { + "tooltip": "The image to use for conditioning the first frame in the video (i2v setup). If not provided, the first frame will be unconditioned (t2v setup). The image will be resized to the size of the first frame." + }, + ), + "optional_guiding_latents": ( + "LATENT", + { + "tooltip": "The latents to use for guiding the sampling, typically with an IC-LoRA." + }, + ), + "adain_factor": ( + "FLOAT", + { + "default": 0.0, + "min": 0.0, + "max": 1.0, + "step": 0.01, + "tooltip": "The strength of the AdaIn operation used to fix the statistics of each new generated temporal tile, to prevent accumulated oversaturation.", + }, + ), + "optional_positive_conditionings": ( + "CONDITIONING", + { + "tooltip": "Optional way to provide changing positive prompts, one per temporal tile, using the MultiPromptProvider node." + }, + ), + "optional_negative_index_latents": ( + "LATENT", + { + "tooltip": "Special optional latents to condition on a negative index before each new temporal tile as a way to provide long term context during video generation." + }, + ), + }, + } + + RETURN_TYPES = ("LATENT",) + RETURN_NAMES = ("denoised_output",) + + FUNCTION = "sample" + CATEGORY = "sampling" + + def _extract_latent_spatial_tile(self, latent_dict, v_start, v_end, h_start, h_end): + """Extract spatial tile from a latent dictionary.""" + if latent_dict is None: + return None + tile_samples = latent_dict["samples"][:, :, :, v_start:v_end, h_start:h_end] + return {"samples": tile_samples} + + def _extract_spatial_tile( + self, + samples, + optional_guiding_latents, + optional_negative_index_latents, + optional_cond_image, + v_start, + v_end, + h_start, + h_end, + height_scale_factor, + width_scale_factor, + ): + """Extract spatial tiles from all inputs for a given spatial region.""" + # Extract spatial tile from latents + tile_latents = self._extract_latent_spatial_tile( + {"samples": samples}, v_start, v_end, h_start, h_end + ) + + # Extract spatial tile from guiding latents if provided + tile_guiding_latents = self._extract_latent_spatial_tile( + optional_guiding_latents, v_start, v_end, h_start, h_end + ) + + # Extract spatial tile from negative index latents if provided + tile_negative_index_latents = self._extract_latent_spatial_tile( + optional_negative_index_latents, v_start, v_end, h_start, h_end + ) + + # Extract spatial tile from conditioning image if provided + tile_cond_image = None + if optional_cond_image is not None: + # Scale coordinates for image + img_h_start = v_start * height_scale_factor + img_h_end = v_end * height_scale_factor + img_w_start = h_start * width_scale_factor + img_w_end = h_end * width_scale_factor + + # Extract image tile + tile_cond_image = optional_cond_image[ + :, img_h_start:img_h_end, img_w_start:img_w_end, : + ] + + return ( + tile_latents, + tile_guiding_latents, + tile_negative_index_latents, + tile_cond_image, + ) + + def _process_temporal_chunks( + self, + tile_config: TileConfig, + sampling_config: SamplingConfig, + model_config: ModelConfig, + ): + """Process all temporal chunks for a single spatial tile.""" + chunk_index = 0 + tile_out_latents = None + first_tile_out_latents = None + + for i_temporal_tile, (start_index, end_index) in enumerate( + zip( + range( + 0, + tile_config.tile_latents["samples"].shape[2] + + sampling_config.temporal_tile_size + - sampling_config.temporal_overlap, + sampling_config.temporal_tile_size + - sampling_config.temporal_overlap, + ), + range( + sampling_config.temporal_tile_size, + tile_config.tile_latents["samples"].shape[2] + + sampling_config.temporal_tile_size + - sampling_config.temporal_overlap, + sampling_config.temporal_tile_size + - sampling_config.temporal_overlap, + ), + ) + ): + if tile_config.tile_guiding_latents is not None: + guiding_latent_chunk = LTXVSelectLatents().select_latents( + tile_config.tile_guiding_latents, + start_index, + min( + end_index - 1, + tile_config.tile_guiding_latents["samples"].shape[2] - 1, + ), + )[0] + else: + guiding_latent_chunk = None + + latent_chunk = LTXVSelectLatents().select_latents( + tile_config.tile_latents, + start_index, + min(end_index - 1, tile_config.tile_latents["samples"].shape[2] - 1), + )[0] + + print( + "Processing temporal chunk at index", + start_index, + "to", + min(end_index - 1, tile_config.tile_latents["samples"].shape[2] - 1), + ) + + seed_offset = self._get_per_tile_value( + sampling_config.per_tile_seed_offsets, i_temporal_tile + ) + use_negative_latents = self._get_per_tile_value( + sampling_config.per_tile_use_negative_latents, i_temporal_tile + ) + + model_config.noise.seed = self._calculate_tile_seed( + tile_config.first_seed, + start_index, + tile_config.vertical_tiles, + tile_config.horizontal_tiles, + tile_config.v, + tile_config.h, + seed_offset, + ) + + # Handle optional positive conditionings + new_guider = self._prepare_guider_for_chunk( + model_config.guider, + sampling_config.optional_positive_conditionings, + chunk_index, + ) + + if start_index == 0: + if tile_config.tile_guiding_latents is not None: + tile_out_latents = LTXVInContextSampler().sample( + vae=model_config.vae, + guider=new_guider, + sampler=model_config.sampler, + sigmas=model_config.sigmas, + noise=model_config.noise, + guiding_latents=guiding_latent_chunk, + optional_cond_image=tile_config.tile_cond_image, + num_frames=-1, + optional_negative_index_latents=( + tile_config.tile_negative_index_latents + if use_negative_latents + else None + ), + optional_negative_index=sampling_config.optional_negative_index, + optional_negative_index_strength=sampling_config.optional_negative_index_strength, + optional_initialization_latents=latent_chunk, + optional_cond_strength=sampling_config.temporal_overlap_cond_strength, + optional_guiding_strength=sampling_config.guiding_strength, + )[0] + else: + tile_out_latents = LTXVBaseSampler().sample( + model=model_config.model, + vae=model_config.vae, + noise=model_config.noise, + sampler=model_config.sampler, + sigmas=model_config.sigmas, + guider=new_guider, + num_frames=( + min( + sampling_config.temporal_tile_size, + tile_config.tile_latents["samples"].shape[2], + ) + - 1 + ) + * sampling_config.time_scale_factor + + 1, + width=tile_config.tile_width + * sampling_config.width_scale_factor, + height=tile_config.tile_height + * sampling_config.height_scale_factor, + optional_cond_images=tile_config.tile_cond_image, + optional_cond_indices="0", + crop="center", + crf=30, + strength=sampling_config.temporal_overlap_cond_strength, + optional_negative_index_latents=( + tile_config.tile_negative_index_latents + if use_negative_latents + else None + ), + optional_negative_index=sampling_config.optional_negative_index, + optional_negative_index_strength=sampling_config.optional_negative_index_strength, + optional_initialization_latents=latent_chunk, + )[0] + first_tile_out_latents = copy.deepcopy(tile_out_latents) + else: + tile_out_latents = LTXVExtendSampler().sample( + model=model_config.model, + vae=model_config.vae, + sampler=model_config.sampler, + sigmas=model_config.sigmas, + noise=model_config.noise, + latents=tile_out_latents, + num_new_frames=( + latent_chunk["samples"].shape[2] + - sampling_config.temporal_overlap + ) + * sampling_config.time_scale_factor, + frame_overlap=sampling_config.temporal_overlap + * sampling_config.time_scale_factor, + guider=new_guider, + strength=sampling_config.temporal_overlap_cond_strength, + guiding_strength=sampling_config.guiding_strength, + optional_guiding_latents=guiding_latent_chunk, + optional_reference_latents=first_tile_out_latents, + adain_factor=sampling_config.adain_factor, + optional_negative_index_latents=( + tile_config.tile_negative_index_latents + if use_negative_latents + else None + ), + optional_negative_index=sampling_config.optional_negative_index, + optional_negative_index_strength=sampling_config.optional_negative_index_strength, + optional_initialization_latents=latent_chunk, + )[0] + + chunk_index += 1 + + return tile_out_latents + + def _create_spatial_weights( + self, tile_samples, v, h, horizontal_tiles, vertical_tiles, spatial_overlap + ): + """Create blending weights for spatial tiles.""" + tile_weights = torch.ones_like(tile_samples, device=tile_samples.device) + + # Apply horizontal blending weights + if h > 0: # Left overlap + h_blend = torch.linspace(0, 1, spatial_overlap, device=tile_samples.device) + tile_weights[:, :, :, :, :spatial_overlap] *= h_blend.view(1, 1, 1, 1, -1) + if h < horizontal_tiles - 1: # Right overlap + h_blend = torch.linspace(1, 0, spatial_overlap, device=tile_samples.device) + tile_weights[:, :, :, :, -spatial_overlap:] *= h_blend.view(1, 1, 1, 1, -1) + + # Apply vertical blending weights + if v > 0: # Top overlap + v_blend = torch.linspace(0, 1, spatial_overlap, device=tile_samples.device) + tile_weights[:, :, :, :spatial_overlap, :] *= v_blend.view(1, 1, 1, -1, 1) + if v < vertical_tiles - 1: # Bottom overlap + v_blend = torch.linspace(1, 0, spatial_overlap, device=tile_samples.device) + tile_weights[:, :, :, -spatial_overlap:, :] *= v_blend.view(1, 1, 1, -1, 1) + + return tile_weights + + def _calculate_tile_seed( + self, + first_seed, + start_index, + vertical_tiles, + horizontal_tiles, + v, + h, + seed_offset, + ): + """Calculate the seed value for a specific temporal and spatial tile.""" + return ( + first_seed + + start_index * (vertical_tiles * horizontal_tiles) + + v * horizontal_tiles + + h + + seed_offset + ) + + def _get_per_tile_value(self, value_list, tile_index): + """Get a value from a per-tile configuration list, using the last value if the list is shorter.""" + return value_list[min(tile_index, len(value_list) - 1)] + + def _parse_per_tile_config(self, config_string, default_value, converter_func): + """Parse a comma-separated per-tile configuration string into a list with type conversion.""" + if config_string == "": + config_string = default_value + return [converter_func(item.strip()) for item in config_string.split(",")] + + def _prepare_guider_for_chunk( + self, guider, optional_positive_conditionings, chunk_index + ): + """Prepare the guider for a specific chunk, handling optional positive conditionings.""" + if optional_positive_conditionings is not None: + new_guider = copy.copy(guider) + positive, negative = guider.raw_conds + # Use the conditioning at chunk_index, or the last one if we've run out + conditioning_index = min( + chunk_index, len(optional_positive_conditionings) - 1 + ) + new_guider.set_conds( + optional_positive_conditionings[conditioning_index], + negative, + ) + new_guider.raw_conds = ( + optional_positive_conditionings[conditioning_index], + negative, + ) + return new_guider + else: + return guider + + def sample( + self, + model, + vae, + noise, + sampler, + sigmas, + guider, + latents, + guiding_strength, + adain_factor, + temporal_tile_size, + temporal_overlap, + temporal_overlap_cond_strength, + horizontal_tiles, + vertical_tiles, + spatial_overlap, + optional_cond_image=None, + optional_guiding_latents=None, + optional_negative_index_latents=None, + optional_negative_index=-1, + optional_negative_index_strength=1.0, + optional_positive_conditionings=None, + per_tile_seed_offsets="0", + per_tile_use_negative_latents="1", + ): + + # Get dimensions and prepare for spatial tiling + samples = latents["samples"] + batch, channels, frames, height, width = samples.shape + time_scale_factor, width_scale_factor, height_scale_factor = ( + vae.downscale_index_formula + ) + temporal_tile_size = temporal_tile_size // time_scale_factor + temporal_overlap = temporal_overlap // time_scale_factor + first_seed = noise.seed + + per_tile_seed_offsets = self._parse_per_tile_config( + per_tile_seed_offsets, "0", int + ) + per_tile_use_negative_latents = self._parse_per_tile_config( + per_tile_use_negative_latents, "1", lambda x: bool(int(x)) + ) + + if optional_guiding_latents is not None: + assert ( + latents["samples"].shape[2] + == optional_guiding_latents["samples"].shape[2] + ), "The number of frames in the latents and optional_guiding_latents must be the same" + + # Calculate tile sizes with overlap + base_tile_height = ( + height + (vertical_tiles - 1) * spatial_overlap + ) // vertical_tiles + base_tile_width = ( + width + (horizontal_tiles - 1) * spatial_overlap + ) // horizontal_tiles + + # Initialize output tensor and weight tensor + final_output = torch.zeros_like(samples, device=samples.device) + weights = torch.zeros_like(samples, device=samples.device) + + if optional_cond_image is not None: + img_height = height * height_scale_factor + img_width = width * width_scale_factor + optional_cond_image = comfy.utils.common_upscale( + optional_cond_image.movedim(-1, 1), + img_width, + img_height, + "bicubic", + crop="center", + ).movedim(1, -1) + img_batch, img_height, img_width, img_channels = optional_cond_image.shape + + # Process each spatial tile + for v in range(vertical_tiles): + for h in range(horizontal_tiles): + # Calculate tile boundaries + h_start = h * (base_tile_width - spatial_overlap) + v_start = v * (base_tile_height - spatial_overlap) + + # Adjust end positions for edge tiles + h_end = ( + min(h_start + base_tile_width, width) + if h < horizontal_tiles - 1 + else width + ) + v_end = ( + min(v_start + base_tile_height, height) + if v < vertical_tiles - 1 + else height + ) + + # Calculate actual tile dimensions + tile_height = v_end - v_start + tile_width = h_end - h_start + + print(f"Processing spatial tile at row {v}, col {h}:") + print(f" Position: ({v_start}:{v_end}, {h_start}:{h_end})") + print(f" Size: {tile_height}x{tile_width}") + + # Extract spatial tiles from all inputs + ( + tile_latents, + tile_guiding_latents, + tile_negative_index_latents, + tile_cond_image, + ) = self._extract_spatial_tile( + samples, + optional_guiding_latents, + optional_negative_index_latents, + optional_cond_image, + v_start, + v_end, + h_start, + h_end, + height_scale_factor, + width_scale_factor, + ) + + # Process all temporal chunks for this spatial tile + tile_config = TileConfig( + tile_latents=tile_latents, + tile_guiding_latents=tile_guiding_latents, + tile_negative_index_latents=tile_negative_index_latents, + tile_cond_image=tile_cond_image, + tile_height=tile_height, + tile_width=tile_width, + v=v, + h=h, + vertical_tiles=vertical_tiles, + horizontal_tiles=horizontal_tiles, + first_seed=first_seed, + ) + + sampling_config = SamplingConfig( + temporal_tile_size=temporal_tile_size, + temporal_overlap=temporal_overlap, + temporal_overlap_cond_strength=temporal_overlap_cond_strength, + guiding_strength=guiding_strength, + adain_factor=adain_factor, + optional_negative_index=optional_negative_index, + optional_negative_index_strength=optional_negative_index_strength, + optional_positive_conditionings=optional_positive_conditionings, + time_scale_factor=time_scale_factor, + width_scale_factor=width_scale_factor, + height_scale_factor=height_scale_factor, + per_tile_seed_offsets=per_tile_seed_offsets, + per_tile_use_negative_latents=per_tile_use_negative_latents, + ) + + model_config = ModelConfig( + model=model, + vae=vae, + noise=noise, + sampler=sampler, + sigmas=sigmas, + guider=guider, + ) + + tile_out_latents = self._process_temporal_chunks( + tile_config, + sampling_config, + model_config, + ) + + # Create weight mask for this spatial tile + tile_weights = self._create_spatial_weights( + tile_latents["samples"], + v, + h, + horizontal_tiles, + vertical_tiles, + spatial_overlap, + ) + + # Add weighted tile to final output + final_output[:, :, :, v_start:v_end, h_start:h_end] += ( + tile_out_latents["samples"].to(final_output.device) * tile_weights + ) + weights[:, :, :, v_start:v_end, h_start:h_end] += tile_weights + + # Normalize by weights + final_output = final_output / (weights + 1e-8) + out_latents = {"samples": final_output} + + noise.seed = first_seed + return (out_latents,) + + +@comfy_node( + name="MultiPromptProvider", +) +class MultiPromptProvider: + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "prompts": ( + "STRING", + { + "multiline": True, + "dynamicPrompts": True, + "tooltip": "Prompts to encode, one per line. Each prompt will be encoded separately. Each prompt will be used in one temporal_tile in LTXVLoopingSampler.", + }, + ), + "clip": ("CLIP", {"tooltip": "CLIP model to encode the prompts."}), + }, + } + + RETURN_TYPES = ("CONDITIONING",) + RETURN_NAMES = ("conditionings",) + + FUNCTION = "get_prompt_list" + CATEGORY = "prompt" + + def get_prompt_list(self, prompts, clip): + prompt_list = prompts.split("|") + prompt_list = [prompt.strip() for prompt in prompt_list] + encoded_prompt_list = [ + clip.encode_from_tokens_scheduled(clip.tokenize(prompt)) + for prompt in prompt_list + ] + return (encoded_prompt_list,) diff --git a/tiled_sampler.py b/tiled_sampler.py index c97847a..7723c22 100644 --- a/tiled_sampler.py +++ b/tiled_sampler.py @@ -5,7 +5,6 @@ import torch from comfy_extras.nodes_custom_sampler import SamplerCustomAdvanced from comfy_extras.nodes_lt import LTXVAddGuide, LTXVCropGuides -from .easy_samplers import LTXVBaseSampler, LTXVExtendSampler, LTXVInContextSampler from .latents import LTXVAddLatentGuide, LTXVSelectLatents from .nodes_registry import comfy_node @@ -315,296 +314,3 @@ class LTXVTiledSampler: denoised_output = denoised_output / (weights + 1e-8) return {"samples": output}, {"samples": denoised_output} - - -@comfy_node( - name="LTXVLoopingSampler", -) -class LTXVLoopingSampler: - - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "model": ("MODEL", {"tooltip": "The diffusion model to use."}), - "vae": ("VAE", {"tooltip": "The VAE to use."}), - "noise": ("NOISE", {"tooltip": "The noise to use."}), - "sampler": ("SAMPLER", {"tooltip": "The sampler to use."}), - "sigmas": ("SIGMAS", {"tooltip": "The sigmas to use."}), - "guider": ( - "GUIDER", - {"tooltip": "The guider to use, must be a STGGuiderAdvanced."}, - ), - "latents": ( - "LATENT", - { - "tooltip": "The latents to use for creating the long video, they can be guiding latents or empty latents when no guidance is used." - }, - ), - "use_latents_to_guide": ( - "BOOLEAN", - { - "default": True, - "tooltip": "Whether to use the latents to guide the sampling, such as with IC-LoRAs. If False, just the shape of the latents will be used.", - }, - ), - "guiding_strength": ( - "FLOAT", - { - "default": 1.0, - "min": 0.0, - "max": 1.0, - "step": 0.01, - "tooltip": "The strength of the conditioning on guiding latents, when use_latents_to_guide is True.", - }, - ), - "temporal_tile_size": ( - "INT", - { - "default": 80, - "min": 24, - "max": 1000, - "step": 8, - "tooltip": "The size of the temporal tile to use for the sampling, in pixel frames, in addition to the overlapping region.", - }, - ), - "overlap": ( - "INT", - { - "default": 24, - "min": 16, - "max": 80, - "step": 8, - "tooltip": "The overlap between the temporal tiles, in pixel frames.", - }, - ), - "overlap_cond_strength": ( - "FLOAT", - { - "default": 0.5, - "min": 0.0, - "max": 1.0, - "step": 0.01, - "tooltip": "The strength of the conditioning on the latents from the previous temporal tile.", - }, - ), - }, - "optional": { - "optional_cond_image": ( - "IMAGE", - { - "tooltip": "The image to use for conditioning the first frame in the video (i2v setup). If not provided, the first frame will be unconditioned (t2v setup). The image will be resized to the size of the first frame." - }, - ), - "adain_factor": ( - "FLOAT", - { - "default": 0.0, - "min": 0.0, - "max": 1.0, - "step": 0.01, - "tooltip": "The strength of the AdaIn operation used to fix the statistics of each new generated temporal tile, to prevent accumulated oversaturation.", - }, - ), - "optional_positive_conditionings": ( - "CONDITIONING", - { - "tooltip": "Optional way to provide changing positive prompts, one per temporal tile, using the MultiPromptProvider node." - }, - ), - "optional_negative_index_latents": ( - "LATENT", - { - "tooltip": "Special optional latents to condition on a negative index before each new temporal tile as a way to provide long term context during video generation." - }, - ), - "optional_negative_index": ( - "INT", - { - "default": -1, - "min": -1000, - "max": 1000, - "tooltip": "The index in which to condition using the optional_negative_index_latents.", - }, - ), - "optional_negative_index_strength": ( - "FLOAT", - { - "default": 1.0, - "min": 0.0, - "max": 1.0, - "step": 0.01, - "tooltip": "The strength of the conditioning with the optional_negative_index_latents.", - }, - ), - }, - } - - RETURN_TYPES = ("LATENT",) - RETURN_NAMES = ("denoised_output",) - - FUNCTION = "sample" - CATEGORY = "sampling" - - def sample( - self, - model, - vae, - noise, - sampler, - sigmas, - guider, - latents, - use_latents_to_guide, - guiding_strength, - adain_factor, - temporal_tile_size, - overlap, - overlap_cond_strength, - optional_cond_image=None, - optional_negative_index_latents=None, - optional_negative_index=-1, - optional_negative_index_strength=1.0, - optional_positive_conditionings=None, - ): - time_scale_factor, width_scale_factor, height_scale_factor = ( - vae.downscale_index_formula - ) - temporal_tile_size = temporal_tile_size // time_scale_factor - overlap = overlap // time_scale_factor - first_seed = noise.seed - chunk_index = 0 - for start_index, end_index in zip( - range( - 0, - latents["samples"].shape[2] + temporal_tile_size - overlap, - temporal_tile_size - overlap, - ), - range( - temporal_tile_size, - latents["samples"].shape[2] + temporal_tile_size - overlap, - temporal_tile_size - overlap, - ), - ): - guiding_latent_chunk = LTXVSelectLatents().select_latents( - latents, - start_index, - min(end_index - 1, latents["samples"].shape[2] - 1), - )[0] - noise.seed = first_seed + start_index - - # Handle optional positive conditionings - if optional_positive_conditionings is not None: - new_guider = copy.copy(guider) - positive, negative = guider.raw_conds - # Use the conditioning at chunk_index, or the last one if we've run out - conditioning_index = min( - chunk_index, len(optional_positive_conditionings) - 1 - ) - new_guider.set_conds( - optional_positive_conditionings[conditioning_index], negative - ) - new_guider.raw_conds = ( - optional_positive_conditionings[conditioning_index], - negative, - ) - else: - new_guider = guider - - if start_index == 0: - if use_latents_to_guide: - out_latents = LTXVInContextSampler().sample( - vae=vae, - guider=new_guider, - sampler=sampler, - sigmas=sigmas, - noise=noise, - guiding_latents=guiding_latent_chunk, - optional_cond_image=optional_cond_image, - num_frames=-1, - )[0] - else: - out_latents = LTXVBaseSampler().sample( - model=model, - vae=vae, - noise=noise, - sampler=sampler, - sigmas=sigmas, - guider=new_guider, - num_frames=( - min(temporal_tile_size, latents["samples"].shape[2]) - 1 - ) - * time_scale_factor - + 1, - width=latents["samples"].shape[4] * width_scale_factor, - height=latents["samples"].shape[3] * height_scale_factor, - optional_cond_images=optional_cond_image, - optional_cond_indices="0", - strength=overlap_cond_strength, - )[0] - first_out_latents = copy.deepcopy(out_latents) - else: - out_latents = LTXVExtendSampler().sample( - model=model, - vae=vae, - sampler=sampler, - sigmas=sigmas, - noise=noise, - latents=out_latents, - num_new_frames=(guiding_latent_chunk["samples"].shape[2] - overlap) - * time_scale_factor, - frame_overlap=overlap * time_scale_factor, - guider=new_guider, - strength=overlap_cond_strength, - guiding_strength=guiding_strength, - optional_guiding_latents=( - guiding_latent_chunk if use_latents_to_guide else None - ), - optional_reference_latents=first_out_latents, - adain_factor=adain_factor, - optional_negative_index_latents=optional_negative_index_latents, - optional_negative_index=optional_negative_index, - optional_negative_index_strength=optional_negative_index_strength, - )[0] - - chunk_index += 1 - - noise.seed = first_seed - return (out_latents,) - - -@comfy_node( - name="MultiPromptProvider", -) -class MultiPromptProvider: - - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "prompts": ( - "STRING", - { - "multiline": True, - "dynamicPrompts": True, - "tooltip": "Prompts to encode, one per line. Each prompt will be encoded separately. Each prompt will be used in one temporal_tile in LTXVLoopingSampler.", - }, - ), - "clip": ("CLIP", {"tooltip": "CLIP model to encode the prompts."}), - }, - } - - RETURN_TYPES = ("CONDITIONING",) - RETURN_NAMES = ("conditionings",) - - FUNCTION = "get_prompt_list" - CATEGORY = "prompt" - - def get_prompt_list(self, prompts, clip): - prompt_list = prompts.split("\n") - prompt_list = [prompt.strip() for prompt in prompt_list] - encoded_prompt_list = [ - clip.encode_from_tokens_scheduled(clip.tokenize(prompt)) - for prompt in prompt_list - ] - return (encoded_prompt_list,) diff --git a/tiled_vae_decode.py b/tiled_vae_decode.py new file mode 100644 index 0000000..9a8ab66 --- /dev/null +++ b/tiled_vae_decode.py @@ -0,0 +1,197 @@ +import torch + +from .nodes_registry import comfy_node + + +@comfy_node( + name="LTXVTiledVAEDecode", +) +class LTXVTiledVAEDecode: + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "vae": ("VAE",), + "latents": ("LATENT",), + "horizontal_tiles": ("INT", {"default": 1, "min": 1, "max": 6}), + "vertical_tiles": ("INT", {"default": 1, "min": 1, "max": 6}), + "overlap": ("INT", {"default": 1, "min": 1, "max": 8}), + "last_frame_fix": ("BOOLEAN", {"default": False}), + }, + } + + RETURN_TYPES = ("IMAGE",) + RETURN_NAMES = ("image",) + + FUNCTION = "decode" + + CATEGORY = "latent" + + def decode( + self, + vae, + latents, + horizontal_tiles, + vertical_tiles, + overlap, + last_frame_fix, + ): + # Get the latent samples + samples = latents["samples"] + + if last_frame_fix: + # Repeat the last frame along dimension 2 (frames) + # samples: [batch, channels, frames, height, width] + last_frame = samples[ + :, :, -1:, :, : + ] # shape: [batch, channels, 1, height, width] + samples = torch.cat([samples, last_frame], dim=2) + + batch, channels, frames, height, width = samples.shape + time_scale_factor, width_scale_factor, height_scale_factor = ( + vae.downscale_index_formula + ) + image_frames = 1 + (frames - 1) * time_scale_factor + + # Calculate output image dimensions + output_height = height * height_scale_factor + output_width = width * width_scale_factor + + # Calculate tile sizes with overlap + base_tile_height = (height + (vertical_tiles - 1) * overlap) // vertical_tiles + base_tile_width = (width + (horizontal_tiles - 1) * overlap) // horizontal_tiles + + # Initialize output tensor and weight tensor + # VAE decode returns images in format [batch, height, width, channels] + output = None + weights = None + + # Process each tile + for v in range(vertical_tiles): + for h in range(horizontal_tiles): + # Calculate tile boundaries + h_start = h * (base_tile_width - overlap) + v_start = v * (base_tile_height - overlap) + + # Adjust end positions for edge tiles + h_end = ( + min(h_start + base_tile_width, width) + if h < horizontal_tiles - 1 + else width + ) + v_end = ( + min(v_start + base_tile_height, height) + if v < vertical_tiles - 1 + else height + ) + + # Calculate actual tile dimensions + tile_height = v_end - v_start + tile_width = h_end - h_start + + print(f"Processing VAE decode tile at row {v}, col {h}:") + print(f" Position: ({v_start}:{v_end}, {h_start}:{h_end})") + print(f" Size: {tile_height}x{tile_width}") + + # Extract tile + tile = samples[:, :, :, v_start:v_end, h_start:h_end] + + # Create tile latents dict + tile_latents = {"samples": tile} + + # Decode the tile + decoded_tile = vae.decode(tile_latents["samples"]) + + # Initialize output tensors on first tile + if output is None: + output = torch.zeros( + ( + batch, + image_frames, + output_height, + output_width, + decoded_tile.shape[-1], + ), + device=decoded_tile.device, + dtype=decoded_tile.dtype, + ) + weights = torch.zeros( + (batch, image_frames, output_height, output_width, 1), + device=decoded_tile.device, + dtype=decoded_tile.dtype, + ) + + # Calculate output tile boundaries + out_h_start = v_start * height_scale_factor + out_h_end = v_end * height_scale_factor + out_w_start = h_start * width_scale_factor + out_w_end = h_end * width_scale_factor + + # Create weight mask for this tile + tile_out_height = out_h_end - out_h_start + tile_out_width = out_w_end - out_w_start + tile_weights = torch.ones( + (batch, image_frames, tile_out_height, tile_out_width, 1), + device=decoded_tile.device, + dtype=decoded_tile.dtype, + ) + + # Calculate overlap regions in output space + overlap_out_h = overlap * height_scale_factor + overlap_out_w = overlap * width_scale_factor + + # Apply horizontal blending weights + if h > 0: # Left overlap + h_blend = torch.linspace( + 0, 1, overlap_out_w, device=decoded_tile.device + ) + tile_weights[:, :, :, :overlap_out_w, :] *= h_blend.view( + 1, 1, 1, -1, 1 + ) + if h < horizontal_tiles - 1: # Right overlap + h_blend = torch.linspace( + 1, 0, overlap_out_w, device=decoded_tile.device + ) + tile_weights[:, :, :, -overlap_out_w:, :] *= h_blend.view( + 1, 1, 1, -1, 1 + ) + + # Apply vertical blending weights + if v > 0: # Top overlap + v_blend = torch.linspace( + 0, 1, overlap_out_h, device=decoded_tile.device + ) + tile_weights[:, :, :overlap_out_h, :, :] *= v_blend.view( + 1, 1, -1, 1, 1 + ) + if v < vertical_tiles - 1: # Bottom overlap + v_blend = torch.linspace( + 1, 0, overlap_out_h, device=decoded_tile.device + ) + tile_weights[:, :, -overlap_out_h:, :, :] *= v_blend.view( + 1, 1, -1, 1, 1 + ) + + # Add weighted tile to output + output[:, :, out_h_start:out_h_end, out_w_start:out_w_end, :] += ( + decoded_tile * tile_weights + ) + + # Add weights to weight tensor + weights[ + :, :, out_h_start:out_h_end, out_w_start:out_w_end, : + ] += tile_weights + + # Normalize by weights + output = output / (weights + 1e-8) + + # Reshape output to match expected format [batch * frames, height, width, channels] + output = output.view( + batch * image_frames, output_height, output_width, output.shape[-1] + ) + + if last_frame_fix: + output = output[:-time_scale_factor, :, :] + + return (output,)