Files
Artificial-Sweetener-Simple…/simple_syrup/runtime/differential_diffusion.py
T
Artificial Sweetener f863fcf645 feat(nodes): add VAE options and clone-safe diffusion
Add VAE encode/decode option nodes across legacy and Comfy v3 exports, with tooltip and registration coverage. Preserve cloned model graph composition for differential diffusion in tiled and regional sampling paths.
2026-05-25 13:40:36 -04:00

51 lines
1.7 KiB
Python

# SimpleSyrup - workflow-focused ComfyUI extensions for image generation
# Copyright (C) 2026 Artificial Sweetener and contributors
# SPDX-License-Identifier: AGPL-3.0-or-later
"""Adapters for ComfyUI differential denoise-mask behavior."""
from __future__ import annotations
from importlib import import_module
from typing import Any
def has_denoise_mask_function(model: Any) -> bool:
"""Return whether a model patcher already has denoise-mask behavior."""
options = getattr(model, "model_options", {})
return (
isinstance(options, dict) and options.get("denoise_mask_function") is not None
)
def clone_with_differential_diffusion(model: Any, strength: float = 1.0) -> Any:
"""Return a clone patched with ComfyUI differential denoise masks."""
if has_denoise_mask_function(model):
return model
cloned_model = model.clone()
install_differential_diffusion(cloned_model, strength=strength)
return cloned_model
def install_differential_diffusion(model: Any, strength: float = 1.0) -> Any:
"""Install ComfyUI differential denoise-mask behavior on a model patcher."""
if has_denoise_mask_function(model):
return model
set_mask_function = getattr(model, "set_model_denoise_mask_function", None)
if not callable(set_mask_function):
raise ValueError("Model does not support differential diffusion denoise masks.")
differential_diffusion = import_module(
"comfy_extras.nodes_differential_diffusion"
).DifferentialDiffusion
set_mask_function(
lambda *args, **kwargs: differential_diffusion.forward(
*args,
**kwargs,
strength=strength,
)
)
return model