45th commited on
Commit
2e472fa
·
verified ·
1 Parent(s): f0032c3

Upload simple_latent_passthrough.py

Browse files
custom_nodes/simple_latent_passthrough.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+
3
+ class SimpleLatentPassthrough:
4
+ def __init__(self):
5
+ pass
6
+
7
+ @classmethod
8
+ def INPUT_TYPES(s):
9
+ # ИСПРАВЛЕНО: Ключи приведены к нижнему регистру, теперь входы отобразятся в интерфейсе
10
+ return {
11
+ "required": {},
12
+ "optional": {
13
+ "latent_1": ("LATENT",),
14
+ "latent_2": ("LATENT",),
15
+ }
16
+ }
17
+
18
+ RETURN_TYPES = ("LATENT",)
19
+ FUNCTION = "route_latent"
20
+ CATEGORY = "latent"
21
+
22
+ def route_latent(self, latent_1=None, latent_2=None):
23
+ # Сценарий 1: Активен только первый метод (второй отключен)
24
+ if latent_1 is not None and latent_2 is None:
25
+ return (latent_1,)
26
+
27
+ # Сценарий 2: Активен только второй метод (первый отключен)
28
+ if latent_2 is not None and latent_1 is None:
29
+ return (latent_2,)
30
+
31
+ # Сценарий 3: Если включены обе группы сразу
32
+ if latent_1 is not None and latent_2 is not None:
33
+ try:
34
+ # Так как в ComfyUI нельзя сделать физическое разделение "кто быстрее пришел" (обе ветки считаются параллельно
35
+ # и приходят в ноду одновременно), лучшим решением для реализации вашего правила "пропустить каждый по очереди"
36
+ # является объединение их в латентный батч (пакет).
37
+ # В этом случае KSampler и последующие ноды обработают их последовательно один за другим.
38
+ samples_1 = latent_1["samples"]
39
+ samples_2 = latent_2["samples"]
40
+
41
+ # Склеиваем тензоры по размерности батча (dim=0)
42
+ batched_samples = torch.cat((samples_1, samples_2), dim=0)
43
+
44
+ result = latent_1.copy()
45
+ result["samples"] = batched_samples
46
+ return (result,)
47
+ except Exception as e:
48
+ # Если латенты разного разрешения и склеить их в батч нельзя, отдаем приоритет первому
49
+ return (latent_1,)
50
+
51
+ # Сценарий 4: Если оба входа оказались пустыми
52
+ raise ValueError("SimpleLatentPassthrough: Оба входа пусты. Включите хотя бы одну группу апскейла.")
53
+
54
+ # Регистрация ноды в ComfyUI
55
+ NODE_CLASS_MAPPINGS = {
56
+ "SimpleLatentPassthrough": SimpleLatentPassthrough
57
+ }
58
+
59
+ NODE_DISPLAY_NAME_MAPPINGS = {
60
+ "SimpleLatentPassthrough": "Simple Latent Passthrough (Dynamic)"
61
+ }