FunPackGemmaLoader: drop-in replacement for Load CLIP Model that additionally loads the SigLIP vision tower and multi-modal projector from Google's Gemma3-12B-IT checkpoint into the already-initialized Gemma3_12B module, enabling reference-image vision prompting without a separate CLIP Vision model. Vision prompting: _v2_encode_prompt accepts reference_image; when the clip has _vision_loaded=True, tokenizes with image=reference_image and skip_template=False so Gemma3 sees the reference frame before generating conditioning. Cache key includes image fingerprint to avoid stale hits. source_image from Studio/refine_v2 flows through to _v2_conditioning_source. K/V injection revamp (Technique 5): identity blocks in i2v mode now use in-context conditioning instead of lerp injection. Pre-hook prepends reference hidden-state tokens to vx and extends v_pe with neutral-rotation entries (cos=1, sin=0) so video tokens self-attend to reference tokens in attn1. Post-hook crops the reference prefix from the block output. Strength raised from 0.02 → 1.0 (sigma-gated: active at 0.35–0.80). _extend_v_pe helper handles 2-D/3-D/4-D PE tensors. Anchor blocks keep the existing lerp path. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
128 lines
5.2 KiB
Python
128 lines
5.2 KiB
Python
# ComfyUI-FunPack/__init__.py
|
|
|
|
if __package__:
|
|
from .conditioning import (
|
|
FunPackAdvisorLLM,
|
|
FunPackConditioningAdjust,
|
|
FunPackLorebookEnhancer,
|
|
FunPackPromptCombiner,
|
|
FunPackPromptEnhancer,
|
|
FunPackSaveRefinementLatent,
|
|
FunPackStoryWriter,
|
|
FunPackStudio,
|
|
FunPackVideoRefinerV2,
|
|
)
|
|
from .image_processing import (
|
|
FunPackClipVisionOutputCombine,
|
|
FunPackContinueVideo,
|
|
FunPackStoryMemKeyframeExtractor,
|
|
FunPackStoryMemLastFrameExtractor,
|
|
FunPackVideoStitch,
|
|
)
|
|
from .model_management import FunPackApplyLoraWeights, FunPackGemmaLoader, FunPackLoraLoader
|
|
from .samplers import FunPackHybridEuler2SSampler, FunPackDistilledFlowSampler, FunPackLTXAVSceneChainSampler
|
|
from .templates import FunPackRefinementKeyLoader, FunPackSceneBuilder
|
|
else:
|
|
# Standalone tests may not have the full ComfyUI/CUDA runtime loaded.
|
|
from conditioning import (
|
|
FunPackAdvisorLLM,
|
|
FunPackConditioningAdjust,
|
|
FunPackLorebookEnhancer,
|
|
FunPackPromptCombiner,
|
|
FunPackPromptEnhancer,
|
|
FunPackSaveRefinementLatent,
|
|
FunPackStoryWriter,
|
|
FunPackStudio,
|
|
FunPackVideoRefinerV2,
|
|
)
|
|
try:
|
|
from image_processing import (
|
|
FunPackClipVisionOutputCombine,
|
|
FunPackContinueVideo,
|
|
FunPackStoryMemKeyframeExtractor,
|
|
FunPackStoryMemLastFrameExtractor,
|
|
FunPackVideoStitch,
|
|
)
|
|
except Exception:
|
|
FunPackClipVisionOutputCombine = None
|
|
FunPackContinueVideo = None
|
|
FunPackStoryMemKeyframeExtractor = None
|
|
FunPackStoryMemLastFrameExtractor = None
|
|
FunPackVideoStitch = None
|
|
try:
|
|
from model_management import FunPackApplyLoraWeights, FunPackGemmaLoader, FunPackLoraLoader
|
|
except Exception:
|
|
FunPackApplyLoraWeights = None
|
|
FunPackGemmaLoader = None
|
|
FunPackLoraLoader = None
|
|
try:
|
|
from samplers import FunPackHybridEuler2SSampler, FunPackDistilledFlowSampler, FunPackLTXAVSceneChainSampler
|
|
except Exception:
|
|
FunPackHybridEuler2SSampler = None
|
|
FunPackDistilledFlowSampler = None
|
|
FunPackLTXAVSceneChainSampler = None
|
|
try:
|
|
from templates import FunPackRefinementKeyLoader, FunPackSceneBuilder
|
|
except Exception:
|
|
FunPackRefinementKeyLoader = None
|
|
FunPackSceneBuilder = None
|
|
|
|
WEB_DIRECTORY = "./web"
|
|
|
|
NODE_CLASS_MAPPINGS = {
|
|
"FunPackAdvisorLLM": FunPackAdvisorLLM,
|
|
"FunPackConditioningAdjust": FunPackConditioningAdjust,
|
|
"FunPackStudio": FunPackStudio,
|
|
"FunPackPromptCombiner": FunPackPromptCombiner,
|
|
"FunPackStoryMemKeyframeExtractor": FunPackStoryMemKeyframeExtractor,
|
|
"FunPackStoryMemLastFrameExtractor": FunPackStoryMemLastFrameExtractor,
|
|
"FunPackPromptEnhancer": FunPackPromptEnhancer,
|
|
"FunPackStoryWriter": FunPackStoryWriter,
|
|
"FunPackVideoStitch": FunPackVideoStitch,
|
|
"FunPackClipVisionOutputCombine": FunPackClipVisionOutputCombine,
|
|
"FunPackContinueVideo": FunPackContinueVideo,
|
|
"FunPackLorebookEnhancer": FunPackLorebookEnhancer,
|
|
"FunPackVideoRefinerV2": FunPackVideoRefinerV2,
|
|
"FunPackSaveRefinementLatent": FunPackSaveRefinementLatent,
|
|
"FunPackHybridEuler2SSampler": FunPackHybridEuler2SSampler,
|
|
"FunPackDistilledFlowSampler": FunPackDistilledFlowSampler,
|
|
"FunPackLTXAVSceneChainSampler": FunPackLTXAVSceneChainSampler,
|
|
"FunPackApplyLoraWeights": FunPackApplyLoraWeights,
|
|
"FunPackGemmaLoader": FunPackGemmaLoader,
|
|
"FunPackLoraLoader": FunPackLoraLoader,
|
|
"FunPackRefinementKeyLoader": FunPackRefinementKeyLoader,
|
|
"FunPackSceneBuilder": FunPackSceneBuilder,
|
|
}
|
|
NODE_CLASS_MAPPINGS = {name: cls for name, cls in NODE_CLASS_MAPPINGS.items() if cls is not None}
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"FunPackAdvisorLLM": "FunPack Advisor LLM",
|
|
"FunPackConditioningAdjust": "FunPack Conditioning Adjust",
|
|
"FunPackStudio": "FunPack Studio",
|
|
"FunPackPromptCombiner": "FunPack Prompt Combiner",
|
|
"FunPackStoryMemKeyframeExtractor": "FunPack StoryMem Keyframe Extractor",
|
|
"FunPackStoryMemLastFrameExtractor": "FunPack StoryMem Last Frame Extractor",
|
|
"FunPackPromptEnhancer": "FunPack Prompt Enhancer (Standalone)",
|
|
"FunPackStoryWriter": "FunPack Story Writer",
|
|
"FunPackVideoStitch": "FunPack Video Stitch",
|
|
"FunPackClipVisionOutputCombine": "FunPack CLIP Vision Output Combine",
|
|
"FunPackContinueVideo": "FunPack Continue Video",
|
|
"FunPackLorebookEnhancer": "FunPack Lorebook Enhancer",
|
|
"FunPackVideoRefinerV2": "FunPack Video Refiner V2",
|
|
"FunPackSaveRefinementLatent": "FunPack Save Refinement Latent",
|
|
"FunPackHybridEuler2SSampler": "FunPack Hybrid Euler 2S Sampler",
|
|
"FunPackDistilledFlowSampler": "FunPack Distilled Flow Sampler",
|
|
"FunPackLTXAVSceneChainSampler": "FunPack LTXAV Scene Chain Sampler",
|
|
"FunPackApplyLoraWeights": "FunPack Apply LoRA Weights",
|
|
"FunPackGemmaLoader": "FunPack Gemma Loader",
|
|
"FunPackLoraLoader": "FunPack LoRA Loader",
|
|
"FunPackRefinementKeyLoader": "FunPack Refinement Key Loader",
|
|
"FunPackSceneBuilder": "FunPack Scene Builder",
|
|
}
|
|
|
|
__all__ = [
|
|
"NODE_CLASS_MAPPINGS",
|
|
"NODE_DISPLAY_NAME_MAPPINGS",
|
|
"WEB_DIRECTORY",
|
|
]
|