o >gL@sddlZddlZddlZddlZddlZddlZGdddZGdddZ GdddZ Gdd d ej Z Gd d d ej jZee e e ed Zd d iZdS)Nc@s0eZdZeddZdZdZdZdZddZ d S) TripleCLIPLoadercCs(dtdftdftdfdiS)Nrequired text_encoders) clip_name1 clip_name2 clip_name3) folder_pathsget_filename_listsr @/home/comdoleger1/zen-flux-style-shape/comfy_extras/nodes_sd3.py INPUT_TYPES s(zTripleCLIPLoader.INPUT_TYPESCLIP load_clipzadvanced/loadersz"[Recipes] sd3: clip-l, clip-g, t5cCsFtd|}td|}td|}tjj|||gtdd}|fS)Nr embeddings) ckpt_pathsembedding_directory)rget_full_path_or_raisecomfysdrget_folder_paths)selfrrr clip_path1 clip_path2Z clip_path3clipr r r rs   zTripleCLIPLoader.load_clipN) __name__ __module__ __qualname__ classmethodr RETURN_TYPESFUNCTIONCATEGORY DESCRIPTIONrr r r r r s  rc@s6eZdZddZeddZdZdZdZd d d Z d S) EmptySD3LatentImagecCstj|_dS)N)rmodel_managementintermediate_devicedevice)rr r r __init__szEmptySD3LatentImage.__init__cCs<ddddtjddfdddtjddfdddddfd iS) NrINTidefaultminmaxstepi)r-r.r/)widthheight batch_size)nodesMAX_RESOLUTIONr r r r r!szEmptySD3LatentImage.INPUT_TYPES)LATENTgeneratez latent/sd3r1cCs*tj|d|d|dg|jd}d|ifS)Nr+)r(samples)torchzerosr()rr2r3r4latentr r r r8+s  zEmptySD3LatentImage.generateN)r1) rrrr)r rr!r"r#r8r r r r r%s r%c@s,eZdZeddZdZdZdZddZdS) CLIPTextEncodeSD3cCs8ddddddfddddfddddfddgfdiS) NrrSTRINGT) multilinedynamicPromptsnoneZ empty_prompt)rclip_lclip_gt5xxl empty_paddingr r r r r r1s   zCLIPTextEncodeSD3.INPUT_TYPES CONDITIONINGencodezadvanced/conditioningc CsN|dk}||}t|dkr|rg|d<t|dkr"|r"g|d<n ||d|d<t|dkr8|r8g|d<n ||d|d<t|dt|dkr|d}t|dt|dkrt|d|d7<t|dt|dks^t|dt|dkr|d|d7<t|dt|dks|j|dd\} } | d | iggfS) NrBrglrET) return_pooled pooled_output)tokenizelenencode_from_tokens) rrrCrDrErF no_paddingtokensemptycondpooledr r r rI?s(    zCLIPTextEncodeSD3.encodeN) rrrr rr!r"r#rIr r r r r>0s  r>c@s eZdZeddZdZdZdS)ControlNetApplySD3cCsDdddddddddd d d fddddd d fddddd d fd iS)NrrG) CONTROL_NET)VAE)IMAGEFLOAT?$@{Gz?r,MbP?)positivenegative control_netvaeimagestrength start_percent end_percentr r r r r rZszControlNetApplySD3.INPUT_TYPESzconditioning/controlnetTN)rrrr rr# DEPRECATEDr r r r rWYs   rWc@s0eZdZdZeddZdZdZdZddZ d S) SkipLayerGuidanceSD3z Enhance guidance towards detailed dtructure by having another set of CFG negative with skipped layers. Inspired by Perturbed Attention Guidance (https://arxiv.org/abs/2403.17377) Experimental implementation by Dango233@StabilityAI. c CsHddddddfddd d d d fdd d ddd fddd ddd fdiS)NrMODELr?z7, 8, 9F)r-r@r[g@r]r^g?r,r_r\r`g333333?)modellayersscalergrhr r r r r ros  z SkipLayerGuidanceSD3.INPUT_TYPESrkskip_guidance_sd3zadvanced/guidancecCs|j|||||dS)N)rmrorgrh double_layers)Z skip_guidance)rrmrnrorgrhr r r rp|sz&SkipLayerGuidanceSD3.skip_guidance_sd3N) rrr__doc__r rr!r"r#rpr r r r rjis  rj)rr%r>rWrjzApply Controlnet with VAE)rcomfy.sdrZcomfy.model_managementr5r;Zcomfy_extras.nodes_slg comfy_extrasrr%r>ControlNetApplyAdvancedrWZ nodes_slgZSkipLayerGuidanceDiTrjNODE_CLASS_MAPPINGSNODE_DISPLAY_NAME_MAPPINGSr r r r s&)