Commit Graph

819 Commits

Author SHA1 Message Date
John Pollock e8402d94b4 Address Trellis VAE decode review feedback 2026-04-20 22:10:15 -05:00
John Pollock 7e9ee82351 Merge remote-tracking branch 'origin/issue_73' into issue_80
# Conflicts:
#	comfy_extras/nodes_trellis2.py
2026-04-20 22:04:24 -05:00
John Pollock 3546836091 Fix Trellis VAE decode memory management 2026-04-20 20:39:08 -05:00
John Pollock da6f3b630f Merge pull request #13 from pollockjj/issue_94
Trellis2: make textured mesh simplification deterministic
2026-04-20 17:57:01 -07:00
John Pollock de7a811cdd fix: stabilize Trellis2 mesh simplification 2026-04-20 17:22:31 -05:00
John Pollock 0f530ce540 Omit null batch_index from Trellis upsample output 2026-04-20 17:20:57 -05:00
John Pollock 149af779ed Harden Trellis sparse latent seeding 2026-04-20 16:05:10 -05:00
John Pollock 081e7126bd Fail loud on Trellis invalid batch metadata 2026-04-20 15:50:40 -05:00
John Pollock f309cc1889 Harden Trellis sparse metadata validation 2026-04-20 14:46:23 -05:00
John Pollock e95be49e69 Fix Trellis seeded sparse batch semantics 2026-04-20 14:29:07 -05:00
John Pollock 032943a065 Fix Trellis PR review regressions 2026-04-20 12:15:49 -05:00
John Pollock eaf7d708b0 Fix Trellis2 batched shape and texture semantics 2026-04-20 11:06:04 -05:00
John Pollock e2bbcece02 Trellis2: inline batched mesh helpers 2026-04-19 23:47:57 -05:00
John Pollock 6e45580707 Trellis2: share batched mesh helpers 2026-04-19 23:33:09 -05:00
John Pollock 849a75c4dc Trellis2: handle empty and batched texture paint paths 2026-04-19 23:23:24 -05:00
John Pollock 353f3d9164 Trellis2/Hunyuan3d: preserve mesh tensor contract in batch mode 2026-04-19 22:55:38 -05:00
John Pollock eb3ac5ffe4 Trellis2/Hunyuan3d: n>1 batched cascade support
Mesh-producing nodes (VoxelToMeshBasic, VoxelToMesh, VaeDecodeShapeTrellis)
previously stacked per-batch vertex/face tensors with torch.stack, which
failed under batch>1 because per-item meshes have variable shapes. Store
per-item tensors as lists when shapes differ; keep stacked-tensor fast
path when shapes match. Update SaveGLB, PostProcessMesh, and
VaeDecodeTextureTrellis consumers to iterate per-item when input is a
list.

Trellis2Conditioning.execute previously collapsed batched image/mask
input to index 0, yielding identical conditioning for every batch item.
Loop over the batch and produce per-image cond_512/cond_1024/neg_cond
tensors stacked along the batch dim, matching the latent batch size.

batch_size=1 behavior is unchanged. batch_size>1 runs now emit one GLB
per batch item per SaveGLB node and carry per-image conditioning
through the structure/shape/texture cascade.
2026-04-19 22:03:53 -05:00
John Pollock 78d4f27ec0 Match Copilot image_size restore pattern 2026-04-19 21:05:07 -05:00
John Pollock e91a4659d5 Handle missing Trellis2 image_size restore state 2026-04-19 20:51:22 -05:00
John Pollock 1c91682604 Guard full Trellis2 conditioning image_size restore 2026-04-19 20:49:42 -05:00
John Pollock 718be91a15 Restore Trellis2 clip vision image_size state 2026-04-19 19:53:30 -05:00
Yousef R. Gamaleldin 18dd46b2eb Merge branch 'master' into trellis2 2026-04-12 20:19:33 +02:00
Yousef Rafat 576befbb4b small final change 2026-04-12 20:14:47 +02:00
comfyanonymous a2840e7552
Make ImageUpscaleWithModel node work with intermediate device and dtype. (#13357) 2026-04-10 21:48:26 -04:00
Jukka Seppänen a134423890
SDPose: resize input always (#13349) 2026-04-10 11:26:55 -10:00
Yousef Rafat 293a597fdc texture fixes 2026-04-10 19:18:14 +02:00
Yousef Rafat 5cacceaad3 corrected simplification logic 2026-04-10 16:33:19 +02:00
Yousef Rafat aab8ab6638 comfy ops + color support in postprocess 2026-04-10 16:12:23 +02:00
Yousef Rafat 986b8201da structure generation works 2026-04-10 14:24:07 +02:00
Yousef Rafat a7117da8de fix for conditioning 2026-04-07 23:02:33 +02:00
comfyanonymous 61c2387436
Ace step empty latent nodes follow intermediate dtype. (#13313) 2026-04-06 18:12:16 -07:00
Terry Jia 7083484a48
image histogram node (#13153)
* image histogram node

* update color curve blueprint using image histogram node

---------

Co-authored-by: guill <jacob.e.segal@gmail.com>
2026-04-06 14:54:02 -07:00
Yousef Rafat 572dff904a texture generation works 2026-04-03 01:22:38 +02:00
Yousef Rafat f5161f215c wrong normalization for the texture node 2026-03-30 23:20:46 +02:00
Christian Byrne 55e6478526
Rename utils/string nodes with Text prefix and add search aliases (#13227)
Rename all 11 nodes in the utils/string category to include a "Text"
prefix for better discoverability and natural sorting. Regex nodes get
user-friendly names without "Regex" in the display name.

Renames:
- Concatenate → Text Concatenate
- Substring → Text Substring
- Length → Text Length
- Case Converter → Text Case Converter
- Trim → Text Trim
- Replace → Text Replace
- Contains → Text Contains
- Compare → Text Compare
- Regex Match → Text Match
- Regex Extract → Text Extract Substring
- Regex Replace → Text Replace (Regex)

All renamed nodes include their old display name as a search alias so
users can still find them by searching the original name. Regex nodes
also include "regex" as a search alias.
2026-03-29 21:02:44 -07:00
Jukka Seppänen a500f1edac
CORE-13 feat: Support RT-DETRv4 detection model (#12748) 2026-03-28 23:34:10 -04:00
Terry Jia 3696c5bad6
Add `has_intermediate_output` flag for nodes with interactive UI (#13048) 2026-03-27 21:06:38 -04:00
Yousef Rafat 4ee664d99c .. 2026-03-27 20:52:23 +02:00
comfyanonymous b1fdbeb9a7
Fix blur and sharpen nodes not working with fp16 intermediates. (#13181) 2026-03-26 22:18:16 -04:00
Terry Jia 1dc64f3526
feat: add curve inputs and raise uniform limit for GLSL shader node (#13158)
* feat: add curve inputs and raise uniform limit for GLSL shader node

* allow arbitrary size for curve
2026-03-26 21:45:05 -04:00
Jukka Seppänen 404d7b9978
feat: Support Qwen3.5 text generation models (#12771) 2026-03-25 22:48:28 -04:00
Dante 6580a6bc01
fix(number-convert): preserve int precision for large numbers (#13147) 2026-03-25 18:06:34 -04:00
Yousef Rafat 7ee735fb2b fixed color addition 2026-03-25 23:51:54 +02:00
Yousef Rafat 9986f6d29e pytorch -> scipy 2026-03-25 17:03:52 +02:00
Krishna Chaitanya b53b10ea61
Fix Train LoRA crash when training_dtype is "none" with bfloat16 LoRA weights (#13145)
When training_dtype is set to "none" and the model's native dtype is
float16, GradScaler was unconditionally enabled. However, GradScaler
does not support bfloat16 gradients (only float16/float32), causing a
NotImplementedError when lora_dtype is "bf16" (the default).

Fix by only enabling GradScaler when LoRA parameters are not in
bfloat16, since bfloat16 has the same exponent range as float32 and
does not need gradient scaling to avoid underflow.

Fixes #13124
2026-03-24 23:53:44 -04:00
Yousef Rafat 03d42e10cd add color support for save mesh 2026-03-25 02:40:15 +02:00
Kohaku-Blueleaf 5ebb0c2e0b
FP8 bwd training (#13121) 2026-03-24 20:39:04 -04:00
Dante a0a64c679f
Add Number Convert node (#13041)
* Add Number Convert node for unified numeric type conversion

Consolidates fragmented IntToFloat/FloatToInt nodes (previously only
available via third-party packs like ComfyMath, FillNodes, etc.) into
a single core node.

- Single input accepting INT, FLOAT, STRING, and BOOL types
- Two outputs: FLOAT and INT
- Conversion: bool→0/1, string→parsed number, float↔int standard cast
- Follows Math Expression node patterns (comfy_api, io.Schema, etc.)

Refs: COM-16925

* Register nodes_number_convert.py in extras_files list

Without this entry in nodes.py, the Number Convert node file
would not be discovered and loaded at startup.

* Add isfinite guard, exception chaining, and unit tests for Number Convert node

- Add math.isfinite() check to prevent int() crash on inf/nan string inputs
- Use 'from None' for cleaner exception chaining on string parse failure
- Add 21 unit tests covering all input types and error paths
2026-03-24 15:38:08 -07:00
Terry Jia 8e73678dae
CURVE node (#12757)
* CURVE node

* remove curve to sigmas node

* feat: add CurveInput ABC with MonotoneCubicCurve implementation (#12986)

CurveInput is an abstract base class so future curve representations
(bezier, LUT-based, analytical functions) can be added without breaking
downstream nodes that type-check against CurveInput.

MonotoneCubicCurve is the concrete implementation that:
- Mirrors frontend createMonotoneInterpolator (curveUtils.ts) exactly
- Pre-computes slopes as numpy arrays at construction time
- Provides vectorised interp_array() using numpy for batch evaluation
- interp() for single-value evaluation
- to_lut() for generating lookup tables

CurveEditor node wraps raw widget points in MonotoneCubicCurve.

* linear curve

* refactor: move CurveEditor to comfy_extras/nodes_curve.py with V3 schema

* feat: add HISTOGRAM type and histogram support to CurveEditor

* code improve

---------

Co-authored-by: Christian Byrne <cbyrne@comfy.org>
2026-03-24 17:47:28 -04:00
Yousef Rafat 88cfccd83d work on txt gen 2026-03-24 02:44:03 +02:00