o
    i\                     @   s   d dl mZ d dlmZ d dlZd dlZd dlmZm	Z	 d dl
Z
G dd de	jZG dd de	jZG d	d
 d
eZdefddZdS )    )override)CallableN)ComfyExtensionioc                
   @   sF   e Zd ZedejfddZedddedededejfd	d
Z	dS )EmptyChromaRadianceLatentImagereturnc                 C   sZ   t jddt jjdddtjddt jjdddtjddt jjdd	d	d
dgt   gdS )Nr   zlatent/chroma_radiancewidthi      )iddefaultminmaxstepheight
batch_size   i   )r
   r   r   r   )node_idcategoryinputsoutputs)r   SchemaIntInputnodesMAX_RESOLUTIONLatentOutputcls r   @/mnt/c/Users/fbmor/ComfyUI/comfy_extras/nodes_chroma_radiance.pydefine_schema   s   z,EmptyChromaRadianceLatentImage.define_schemar   )r   r   r   r   c                C   s*   t j|d||ftj d}td|iS )N   )devicesamples)torchzeroscomfymodel_managementintermediate_devicer   
NodeOutput)r   r   r   r   latentr   r   r    execute   s   z&EmptyChromaRadianceLatentImage.executeN)
__name__
__module____qualname__classmethodr   r   r!   intr*   r,   r   r   r   r    r      s
    (r   c                   @   sL   e Zd ZedejfddZedejjde	de
de
dedejfd	d
ZdS )ChromaRadianceOptionsr   c                 C   sx   t jdddt jjddt jjdddd	t jjd
ddddddt jjdddddddt jjddddddgt j gdS )Nr2   zmodel_patches/chroma_radiancez>Allows setting advanced options for the Chroma Radiance model.model)r
   preserve_wrapperTzqWhen enabled, will delegate to an existing model function wrapper if it exists. Generally should be left enabled.)r
   r   tooltipstart_sigmag      ?g        z1First sigma that these options will be in effect.)r
   r   r   r   r5   advanced	end_sigmaz0Last sigma that these options will be in effect.nerf_tile_sizezAllows overriding the default NeRF tile size. -1 means use the default (32). 0 means use non-tiling mode (may require a lot of VRAM).)r
   r   r   r5   r7   )r   r   descriptionr   r   )r   r   Modelr   BooleanFloatr   r   r   r   r   r    r!       sH   
z#ChromaRadianceOptions.define_schemar3   r4   r6   r8   r9   c                   sn   i |dkr
|d< st |S |jddtdtdtjf fdd}| }|	| t |S )	Nr   r9   model_function_wrapperapply_modelargsr   c                    s   |d   }|d     } |  krkr0n n|di   }  |d< ||d< r4sA| |d |d fi |S | |d|iB S )Nctimesteptransformer_optionschroma_radiance_optionsinput)copyr   detachcpuitemget)r@   rA   rB   sigmarD   r8   old_wrapperr4   radiance_optionsr6   r   r    r?   [   s   z=ChromaRadianceOptions.execute.<locals>.model_function_wrapper)
r   r*   model_optionsrK   r   dictr%   Tensorcloneset_model_unet_function_wrapper)r   r3   r4   r6   r8   r9   r?   r   rM   r    r,   H   s   

$

zChromaRadianceOptions.executeN)r-   r.   r/   r0   r   r   r!   r<   Typeboolfloatr1   r*   r,   r   r   r   r    r2      s"    'r2   c                   @   s(   e Zd Zedeeej  fddZdS )ChromaRadianceExtensionr   c                    s
   t tgS N)r   r2   )selfr   r   r    get_node_listl   s   z%ChromaRadianceExtension.get_node_listN)	r-   r.   r/   r   listtyper   	ComfyNoder[   r   r   r   r    rX   k   s    rX   r   c                      s   t  S rY   )rX   r   r   r   r    comfy_entrypointt   s   r_   )typing_extensionsr   typingr   r%   comfy.model_managementr'   comfy_api.latestr   r   r   r^   r   r2   rX   r_   r   r   r   r    <module>   s    L	