diff --git a/node_mappings.py b/node_mappings.py index da5c6f4..c5b00c0 100644 --- a/node_mappings.py +++ b/node_mappings.py @@ -246,6 +246,10 @@ NODE_CLASS_MAPPINGS = { "TT_Flux2WorkflowSettings": TT_Flux2WorkflowSettings, "TT_Flux2WorkflowSettingsAdvanced": TT_Flux2WorkflowSettingsAdvanced, # Workflow V3 Nodes + "TT_SdxlWorkflowSettingsNode": TT_Flux2WorkflowSettingsNode, + "TT_SdxlWorkflowSettingsAdvancedNode": TT_Flux2WorkflowSettingsNode, + "TT_FluxWorkflowSettingsNode": TT_Flux2WorkflowSettingsNode, + "TT_FluxWorkflowSettingsAdvancedNode": TT_Flux2WorkflowSettingsNode, "TT_Flux2WorkflowSettingsNode": TT_Flux2WorkflowSettingsNode, "TT_Flux2WorkflowSettingsAdvancedNode": TT_Flux2WorkflowSettingsAdvancedNode, "TT_Sd35WorkflowSettingsNode": TT_Sd35WorkflowSettingsNode, @@ -374,6 +378,10 @@ NODE_DISPLAY_NAME_MAPPINGS = { "TT_Flux2WorkflowSettings": "TT FLUX2 Workflow Settings (Deprecated)", "TT_Flux2WorkflowSettingsAdvanced": "TT FLUX2 Workflow Settings (Deprecated/Advanced)", # Workflow V3 Nodes + "TT_SdxlWorkflowSettingsNode": "TT SDXL Workflow Settings", + "TT_SdxlWorkflowSettingsAdvancedNode": "TT SDXL Workflow Settings (Advanced)", + "TT_FluxWorkflowSettingsNode": "TT FLUX Workflow Settings", + "TT_FluxWorkflowSettingsAdvancedNode": "TT FLUX Workflow Settings (Advanced)", "TT_Flux2WorkflowSettingsNode": "TT FLUX2 Workflow Settings", "TT_Flux2WorkflowSettingsAdvancedNode": "TT FLUX2 Workflow Settings (Advanced)", "TT_Sd35WorkflowSettingsNode": "TT SD3.5 Workflow Settings", diff --git a/nodes/workflow/flux_workflow_settings.py b/nodes/workflow/flux_workflow_settings.py index 43a03e8..02dddd9 100644 --- a/nodes/workflow/flux_workflow_settings.py +++ b/nodes/workflow/flux_workflow_settings.py @@ -36,7 +36,7 @@ class TT_FluxWorkflowSettings: "GUIDANCE" ) FUNCTION = "get_settings" - CATEGORY = "TenserTensor/Workflow/FLUX" + CATEGORY = "TenserTensor/Deprecated/Workflow/FLUX" def get_settings(self, seed, steps, cfg, sampler_name, scheduler, guidance, ): workflow_config = { diff --git a/nodes/workflow/flux_workflow_settings_advanced.py b/nodes/workflow/flux_workflow_settings_advanced.py index 752fb52..a238ee9 100644 --- a/nodes/workflow/flux_workflow_settings_advanced.py +++ b/nodes/workflow/flux_workflow_settings_advanced.py @@ -48,7 +48,7 @@ class TT_FluxWorkflowSettingsAdvanced: "GUIDANCE", ) FUNCTION = "get_settings" - CATEGORY = "TenserTensor/Workflow/FLUX" + CATEGORY = "TenserTensor/Deprecated/Workflow/FLUX" def get_settings(self, seed, steps, cfg, sampler_name, scheduler, guidance, clip_l_positive, t5xxl_positive, clip_l_negative, t5xxl_negative): workflow_config = { diff --git a/nodes/workflow/sdxl_workflow_settings.py b/nodes/workflow/sdxl_workflow_settings.py index 15c5c6b..b33a516 100644 --- a/nodes/workflow/sdxl_workflow_settings.py +++ b/nodes/workflow/sdxl_workflow_settings.py @@ -35,7 +35,7 @@ class TT_SdxlWorkflowSettings: ) FUNCTION = "get_settings" - CATEGORY = "TenserTensor/Workflow/SDXL" + CATEGORY = "TenserTensor/Deprecated/Workflow/SDXL" def get_settings(self, seed, steps, cfg, sampler_name, scheduler): workflow_config = { diff --git a/nodes/workflow/sdxl_workflow_settings_advanced.py b/nodes/workflow/sdxl_workflow_settings_advanced.py index 799a112..e59afe2 100644 --- a/nodes/workflow/sdxl_workflow_settings_advanced.py +++ b/nodes/workflow/sdxl_workflow_settings_advanced.py @@ -65,7 +65,7 @@ class TT_SdxlWorkflowSettingsAdvanced: "TARGET_HEIGHT", ) FUNCTION = "get_settings" - CATEGORY = "TenserTensor/Workflow/SDXL" + CATEGORY = "TenserTensor/Deprecated/Workflow/SDXL" def get_settings(self, seed, steps, cfg, sampler_name, scheduler, clip_l_positive, clip_g_positive, clip_l_negative, clip_g_negative, ascore_positive, ascore_negative, width, height, target_width, target_height): diff --git a/nodes_workflow.py b/nodes_workflow.py index 6186713..cbed127 100644 --- a/nodes_workflow.py +++ b/nodes_workflow.py @@ -80,6 +80,186 @@ class WorkflowSettings: super().__init__(**kwargs) +class TT_SdxlWorkflowSettingsNode(io.ComfyNode): + @classmethod + def define_schema(cls) -> io.Schema: + return io.Schema( + node_id="TT_SdxlWorkflowSettingsNode", + display_name="TT SDXL Workflow Settings", + category=CATEGORY, + description="", + inputs=[ + io.Int.Input("seed", default=0, min=0, max=0xffffffffffffffff), + io.Int.Input("steps", default=30, min=1, max=10_000), + io.Float.Input("cfg", default=5.0, min=0.0, max=100.0, step=0.1), + io.Combo.Input("sampler_name", options=KSampler.SAMPLERS), + io.Combo.Input("scheduler", options=KSampler.SCHEDULERS), + io.Float.Input("ascore_positive", default=9.0, min=0.0, max=100.0, step=0.1), + io.Float.Input("ascore_negative", default=6.0, min=0.0, max=100.0, step=0.1), + io.Int.Input("width", default=1024, min=16, max=MAX_RESOLUTION, step=8), + io.Int.Input("height", default=1024, min=16, max=MAX_RESOLUTION, step=8), + io.Int.Input("target_width", default=1024, min=16, max=MAX_RESOLUTION, step=8, advanced=True), + io.Int.Input("target_height", default=1024, min=16, max=MAX_RESOLUTION, step=8, advanced=True), + ], + outputs=[ + WorkflowSettings.Output("WORKFLOW_CONFIG"), + io.Int.Output("SEED"), + io.Int.Output("STEPS"), + io.Float.Output("CFG"), + io.String.Output("SAMPLER_NAME"), + io.String.Output("SCHEDULER"), + io.Float.Output("ASCORE_POSITIVE"), + io.Float.Output("ASCORE_NEGATIVE"), + io.Int.Output("WIDTH"), + io.Int.Output("HEIGHT"), + io.Int.Output("TARGET_WIDTH"), + io.Int.Output("TARGET_HEIGHT"), + ] + ) + + @classmethod + def execute(cls, **kwargs) -> io.NodeOutput: + workflow_config = TTWorkflowSettings.create(**kwargs) + args = {"workflow_config": workflow_config, **kwargs} + + return io.NodeOutput(*args.values()) + + +class TT_SdxlWorkflowSettingsAdvancedNode(io.ComfyNode): + @classmethod + def define_schema(cls) -> io.Schema: + return io.Schema( + node_id="TT_SdxlWorkflowSettingsAdvancedNode", + display_name="TT SDXL Workflow Settings (Advanced)", + category=CATEGORY, + description="", + inputs=[ + io.Int.Input("seed", default=0, min=0, max=0xffffffffffffffff), + io.Int.Input("steps", default=30, min=1, max=10_000), + io.Float.Input("cfg", default=5.0, min=0.0, max=100.0, step=0.1), + io.Combo.Input("sampler_name", options=KSampler.SAMPLERS), + io.Combo.Input("scheduler", options=KSampler.SCHEDULERS), + io.Float.Input("ascore_positive", default=9.0, min=0.0, max=100.0, step=0.1), + io.Float.Input("ascore_negative", default=6.0, min=0.0, max=100.0, step=0.1), + io.String.Input("clip_l_positive", multiline=True, dynamic_prompts=True), + io.String.Input("clip_g_positive", multiline=True, dynamic_prompts=True), + io.String.Input("clip_l_negative", multiline=True, dynamic_prompts=True), + io.String.Input("clip_g_negative", multiline=True, dynamic_prompts=True), + io.String.Input("lora_triggers", multiline=True, dynamic_prompts=True, advanced=True), + io.Int.Input("width", default=1024, min=16, max=MAX_RESOLUTION, step=8), + io.Int.Input("height", default=1024, min=16, max=MAX_RESOLUTION, step=8), + io.Int.Input("target_width", default=1024, min=16, max=MAX_RESOLUTION, step=8, advanced=True), + io.Int.Input("target_height", default=1024, min=16, max=MAX_RESOLUTION, step=8, advanced=True), + ], + outputs=[ + WorkflowSettings.Output("WORKFLOW_CONFIG"), + io.Int.Output("SEED"), + io.Int.Output("STEPS"), + io.Float.Output("CFG"), + io.String.Output("SAMPLER_NAME"), + io.String.Output("SCHEDULER"), + io.Float.Output("ASCORE_POSITIVE"), + io.Float.Output("ASCORE_NEGATIVE"), + io.String.Output("CLIP_L_POSITIVE"), + io.String.Output("CLIP_G_POSITIVE"), + io.String.Output("CLIP_L_NEGATIVE"), + io.String.Output("CLIP_G_NEGATIVE"), + io.String.Output("LORA_TRIGGERS"), + io.Int.Output("WIDTH"), + io.Int.Output("HEIGHT"), + io.Int.Output("TARGET_WIDTH"), + io.Int.Output("TARGET_HEIGHT"), + ] + ) + + @classmethod + def execute(cls, **kwargs) -> io.NodeOutput: + workflow_config = TTWorkflowSettings.create(**kwargs) + args = {"workflow_config": workflow_config, **kwargs} + + return io.NodeOutput(*args.values()) + + +class TT_FluxWorkflowSettingsNode(io.ComfyNode): + @classmethod + def define_schema(cls) -> io.Schema: + return io.Schema( + node_id="TT_FluxWorkflowSettingsNode", + display_name="TT FLUX Workflow Settings", + category=CATEGORY, + description="", + inputs=[ + io.Int.Input("seed", default=0, min=0, max=0xffffffffffffffff), + io.Int.Input("steps", default=30, min=1, max=10_000), + io.Float.Input("cfg", default=5.0, min=0.0, max=100.0, step=0.1), + io.Combo.Input("sampler_name", options=KSampler.SAMPLERS), + io.Combo.Input("scheduler", options=KSampler.SCHEDULERS), + io.Float.Input("guidance", default=3.0, min=1.0, max=10.0, step=0.1), + ], + outputs=[ + WorkflowSettings.Output("WORKFLOW_CONFIG"), + io.Int.Output("SEED"), + io.Int.Output("STEPS"), + io.Float.Output("CFG"), + io.String.Output("SAMPLER_NAME"), + io.String.Output("SCHEDULER"), + io.Float.Output("GUIDANCE"), + ] + ) + + @classmethod + def execute(cls, **kwargs) -> io.NodeOutput: + workflow_config = TTWorkflowSettings.create(**kwargs) + args = {"workflow_config": workflow_config, **kwargs} + + return io.NodeOutput(*args.values()) + + +class TT_FluxWorkflowSettingsAdvancedNode(io.ComfyNode): + @classmethod + def define_schema(cls) -> io.Schema: + return io.Schema( + node_id="TT_FluxWorkflowSettingsAdvancedNode", + display_name="TT FLUX Workflow Settings (Advanced)", + category=CATEGORY, + description="", + inputs=[ + io.Int.Input("seed", default=0, min=0, max=0xffffffffffffffff), + io.Int.Input("steps", default=30, min=1, max=10_000), + io.Float.Input("cfg", default=5.0, min=0.0, max=100.0, step=0.1), + io.Combo.Input("sampler_name", options=KSampler.SAMPLERS), + io.Combo.Input("scheduler", options=KSampler.SCHEDULERS), + io.String.Input("clip_l_positive", multiline=True, dynamic_prompts=True), + io.String.Input("t5xxl_positive", multiline=True, dynamic_prompts=True), + io.String.Input("clip_l_negative", multiline=True, dynamic_prompts=True), + io.String.Input("t5xxl_negative", multiline=True, dynamic_prompts=True), + io.String.Input("lora_triggers", multiline=True, dynamic_prompts=True, advanced=True), + io.Float.Input("guidance", default=3.0, min=1.0, max=10.0, step=0.1), + ], + outputs=[ + WorkflowSettings.Output("WORKFLOW_CONFIG"), + io.Int.Output("SEED"), + io.Int.Output("STEPS"), + io.Float.Output("CFG"), + io.String.Output("SAMPLER_NAME"), + io.String.Output("SCHEDULER"), + io.String.Output("CLIP_L_POSITIVE"), + io.String.Output("T5XXL_POSITIVE"), + io.String.Output("CLIP_L_NEGATIVE"), + io.String.Output("T5XXL_NEGATIVE"), + io.String.Output("LORA_TRIGGERS"), + io.Float.Output("GUIDANCE"), + ] + ) + + @classmethod + def execute(cls, **kwargs) -> io.NodeOutput: + workflow_config = TTWorkflowSettings.create(**kwargs) + args = {"workflow_config": workflow_config, **kwargs} + + return io.NodeOutput(*args.values()) + + def compute_empirical_mu(image_seq_len, num_steps): slope_high_res, intercept_high_res = 8.73809524e-05, 1.89833333 slope_low_res, intercept_low_res = 0.00016927, 0.45666666 @@ -119,12 +299,6 @@ def build_sampler_sigmas(sampler_name, steps, width, height): class TT_Flux2WorkflowSettingsNode(io.ComfyNode): - """ - Use this node as the single source of truth for FLUX2 workflow parameters. The sampler and sigma schedule - are computed automatically from the selected sampler, step count, and resolution. Connect `WORKFLOW_CONFIG` - to context nodes, or use individual outputs to connect to standard ComfyUI nodes. - """ - @classmethod def define_schema(cls) -> io.Schema: return io.Schema( @@ -142,15 +316,15 @@ class TT_Flux2WorkflowSettingsNode(io.ComfyNode): io.Combo.Input("sampler_name", options=KSampler.SAMPLERS) ], outputs=[ - WorkflowSettings.Output(display_name="WORKFLOW_CONFIG"), - io.Sampler.Output(display_name="SAMPLER"), - io.Sigmas.Output(display_name="SIGMAS"), - io.Int.Output(display_name="SEED"), - io.Int.Output(display_name="STEPS"), - io.Float.Output(display_name="CFG"), - io.Float.Output(display_name="GUIDANCE"), - io.Int.Output(display_name="WIDTH"), - io.Int.Output(display_name="HEIGHT"), + WorkflowSettings.Output("WORKFLOW_CONFIG"), + io.Sampler.Output("SAMPLER"), + io.Sigmas.Output("SIGMAS"), + io.Int.Output("SEED"), + io.Int.Output("STEPS"), + io.Float.Output("CFG"), + io.Float.Output("GUIDANCE"), + io.Int.Output("WIDTH"), + io.Int.Output("HEIGHT"), ] ) @@ -180,13 +354,6 @@ class TT_Flux2WorkflowSettingsNode(io.ComfyNode): class TT_Flux2WorkflowSettingsAdvancedNode(io.ComfyNode): - """ - Advanced version of TT FLUX2 Workflow Settings with `prompt` and `lora_triggers` fields included directly in the - node. Both are stored in the `WORKFLOW_CONFIG` output alongside all other sampling parameters, making this node - sufficient as the sole configuration source for full context-driven FLUX2 pipelines. Individual outputs remain - available for connecting to standard ComfyUI nodes. - """ - @classmethod def define_schema(cls) -> io.Schema: return io.Schema( @@ -206,17 +373,17 @@ class TT_Flux2WorkflowSettingsAdvancedNode(io.ComfyNode): io.Float.Input("guidance", default=3.0, min=1.0, max=10.0, step=0.1), ], outputs=[ - WorkflowSettings.Output(display_name="WORKFLOW_CONFIG"), - io.Sampler.Output(display_name="SAMPLER"), - io.Sigmas.Output(display_name="SIGMAS"), - io.Int.Output(display_name="SEED"), - io.Int.Output(display_name="STEPS"), - io.Float.Output(display_name="CFG"), - io.Int.Output(display_name="WIDTH"), - io.Int.Output(display_name="HEIGHT"), - io.String.Output(display_name="PROMPT"), - io.String.Output(display_name="LORA_TRIGGERS"), - io.Float.Output(display_name="GUIDANCE"), + WorkflowSettings.Output("WORKFLOW_CONFIG"), + io.Sampler.Output("SAMPLER"), + io.Sigmas.Output("SIGMAS"), + io.Int.Output("SEED"), + io.Int.Output("STEPS"), + io.Float.Output("CFG"), + io.Int.Output("WIDTH"), + io.Int.Output("HEIGHT"), + io.String.Output("PROMPT"), + io.String.Output("LORA_TRIGGERS"), + io.Float.Output("GUIDANCE"), ] ) @@ -276,16 +443,16 @@ class TT_Sd35WorkflowSettingsNode(io.ComfyNode): io.Int.Input("target_height", default=1024, min=16, max=MAX_RESOLUTION, step=8, advanced=True), ], outputs=[ - WorkflowSettings.Output(display_name="WORKFLOW_CONFIG"), - io.Sampler.Output(display_name="SAMPLER"), - io.Sigmas.Output(display_name="SIGMAS"), - io.Int.Output(display_name="SEED"), - io.Int.Output(display_name="STEPS"), - io.Float.Output(display_name="CFG"), - io.Int.Output(display_name="WIDTH"), - io.Int.Output(display_name="HEIGHT"), - io.Int.Output(display_name="TARGET_WIDTH"), - io.Int.Output(display_name="TARGET_HEIGHT"), + WorkflowSettings.Output("WORKFLOW_CONFIG"), + io.Sampler.Output("SAMPLER"), + io.Sigmas.Output("SIGMAS"), + io.Int.Output("SEED"), + io.Int.Output("STEPS"), + io.Float.Output("CFG"), + io.Int.Output("WIDTH"), + io.Int.Output("HEIGHT"), + io.Int.Output("TARGET_WIDTH"), + io.Int.Output("TARGET_HEIGHT"), ] ) @@ -339,23 +506,23 @@ class TT_Sd35WorkflowSettingsAdvancedNode(io.ComfyNode): io.Int.Input("target_height", default=1024, min=16, max=MAX_RESOLUTION, step=8, advanced=True), ], outputs=[ - WorkflowSettings.Output(display_name="WORKFLOW_CONFIG"), - io.Sampler.Output(display_name="SAMPLER"), - io.Sigmas.Output(display_name="SIGMAS"), - io.Int.Output(display_name="SEED"), - io.Int.Output(display_name="STEPS"), - io.Float.Output(display_name="CFG"), - io.Int.Output(display_name="WIDTH"), - io.Int.Output(display_name="HEIGHT"), - io.Int.Output(display_name="TARGET_WIDTH"), - io.Int.Output(display_name="TARGET_HEIGHT"), - io.String.Output(display_name="CLIP_L_POSITIVE"), - io.String.Output(display_name="CLIP_G_POSITIVE"), - io.String.Output(display_name="T5XXL_POSITIVE"), - io.String.Output(display_name="CLIP_L_NEGATIVE"), - io.String.Output(display_name="CLIP_G_NEGATIVE"), - io.String.Output(display_name="T5XXL_NEGATIVE"), - io.String.Output(display_name="LORA_TRIGGERS"), + WorkflowSettings.Output("WORKFLOW_CONFIG"), + io.Sampler.Output("SAMPLER"), + io.Sigmas.Output("SIGMAS"), + io.Int.Output("SEED"), + io.Int.Output("STEPS"), + io.Float.Output("CFG"), + io.Int.Output("WIDTH"), + io.Int.Output("HEIGHT"), + io.Int.Output("TARGET_WIDTH"), + io.Int.Output("TARGET_HEIGHT"), + io.String.Output("CLIP_L_POSITIVE"), + io.String.Output("CLIP_G_POSITIVE"), + io.String.Output("T5XXL_POSITIVE"), + io.String.Output("CLIP_L_NEGATIVE"), + io.String.Output("CLIP_G_NEGATIVE"), + io.String.Output("T5XXL_NEGATIVE"), + io.String.Output("LORA_TRIGGERS"), ] ) @@ -397,6 +564,10 @@ class WorkflowNodesExtension(ComfyExtension): @override async def get_node_list(self) -> list[type[io.ComfyNode]]: return [ + TT_SdxlWorkflowSettingsNode, + TT_SdxlWorkflowSettingsAdvancedNode, + TT_FluxWorkflowSettingsNode, + TT_FluxWorkflowSettingsAdvancedNode, TT_Flux2WorkflowSettingsNode, TT_Flux2WorkflowSettingsAdvancedNode, TT_Sd35WorkflowSettingsNode, @@ -413,6 +584,10 @@ async def comfy_entrypoint() -> WorkflowNodesExtension: # ============================================================================== __all__ = [ + "TT_SdxlWorkflowSettingsNode", + "TT_SdxlWorkflowSettingsAdvancedNode", + "TT_FluxWorkflowSettingsNode", + "TT_FluxWorkflowSettingsAdvancedNode", "TT_Flux2WorkflowSettingsNode", "TT_Flux2WorkflowSettingsAdvancedNode", "TT_Sd35WorkflowSettingsNode", diff --git a/web/docs/TT_FluxWorkflowSettingsAdvancedNode.md b/web/docs/TT_FluxWorkflowSettingsAdvancedNode.md new file mode 100644 index 0000000..15a9d38 --- /dev/null +++ b/web/docs/TT_FluxWorkflowSettingsAdvancedNode.md @@ -0,0 +1,48 @@ +## TT FLUX Workflow Settings (Advanced) *TT_FluxWorkflowSettingsAdvancedNode* + +*This description was generated with AI assistance. If you spot any errors, please create an issue on GitHub.* + +Extended FLUX workflow settings node with built-in prompt inputs for CLIP-L and T5-XXL encoders. Combines sampler configuration and text prompts in a +single node. + +### Inputs + +| Parameter | Type | Required | Description | +|-------------------|--------|----------|--------------------------------------| +| `seed` | INT | Yes | Generation seed | +| `steps` | INT | Yes | Number of sampling steps, default 30 | +| `cfg` | FLOAT | Yes | Guidance scale, default 5.0 | +| `sampler_name` | COMBO | Yes | Sampler algorithm | +| `scheduler` | COMBO | Yes | Noise schedule | +| `clip_l_positive` | STRING | Yes | CLIP-L positive prompt | +| `t5xxl_positive` | STRING | Yes | T5-XXL positive prompt | +| `clip_l_negative` | STRING | Yes | CLIP-L negative prompt | +| `t5xxl_negative` | STRING | Yes | T5-XXL negative prompt | +| `lora_triggers` | STRING | No | LoRA trigger words (advanced) | +| `guidance` | FLOAT | Yes | FLUX guidance scale, default 3.0 | + +### Outputs + +| Parameter | Type | Description | +|-------------------|-----------------|------------------------------------------| +| `WORKFLOW_CONFIG` | WORKFLOW_CONFIG | Workflow config object for context nodes | +| `SEED` | INT | Generation seed | +| `STEPS` | INT | Number of sampling steps | +| `CFG` | FLOAT | Guidance scale | +| `SAMPLER_NAME` | STRING | Sampler algorithm name | +| `SCHEDULER` | STRING | Noise schedule name | +| `CLIP_L_POSITIVE` | STRING | CLIP-L positive prompt | +| `T5XXL_POSITIVE` | STRING | T5-XXL positive prompt | +| `CLIP_L_NEGATIVE` | STRING | CLIP-L negative prompt | +| `T5XXL_NEGATIVE` | STRING | T5-XXL negative prompt | +| `LORA_TRIGGERS` | STRING | LoRA trigger words | +| `GUIDANCE` | FLOAT | FLUX guidance scale | + +### Usage + +Use when you want prompts and sampler settings in one place. Connect `WORKFLOW_CONFIG` to context nodes, or use individual outputs for direct +connections. LoRA trigger words are appended to the positive prompt automatically in the text encoder node. + +--- + +[View on GitHub](https://github.com/tenser-tensor/ComfyUI-TenserTensor) diff --git a/web/docs/TT_FluxWorkflowSettingsNode.md b/web/docs/TT_FluxWorkflowSettingsNode.md new file mode 100644 index 0000000..eb01e8f --- /dev/null +++ b/web/docs/TT_FluxWorkflowSettingsNode.md @@ -0,0 +1,38 @@ +## TT FLUX Workflow Settings *TT_FluxWorkflowSettingsNode* + +*This description was generated with AI assistance. If you spot any errors, please create an issue on GitHub.* + +Configures global workflow parameters for FLUX pipelines. Outputs a workflow config object alongside individual parameters for direct node +connections. + +### Inputs + +| Parameter | Type | Required | Description | +|----------------|-------|----------|--------------------------------------| +| `seed` | INT | Yes | Generation seed | +| `steps` | INT | Yes | Number of sampling steps, default 30 | +| `cfg` | FLOAT | Yes | Guidance scale, default 5.0 | +| `sampler_name` | COMBO | Yes | Sampler algorithm | +| `scheduler` | COMBO | Yes | Noise schedule | +| `guidance` | FLOAT | Yes | FLUX guidance scale, default 3.0 | + +### Outputs + +| Parameter | Type | Description | +|-------------------|-----------------|------------------------------------------| +| `WORKFLOW_CONFIG` | WORKFLOW_CONFIG | Workflow config object for context nodes | +| `SEED` | INT | Generation seed | +| `STEPS` | INT | Number of sampling steps | +| `CFG` | FLOAT | Guidance scale | +| `SAMPLER_NAME` | STRING | Sampler algorithm name | +| `SCHEDULER` | STRING | Noise schedule name | +| `GUIDANCE` | FLOAT | FLUX guidance scale | + +### Usage + +Connect `WORKFLOW_CONFIG` to context-based nodes. Use individual outputs for direct connections to sampler and encoder nodes. `guidance` controls the +FLUX-specific distilled guidance — recommended range is 1.0–5.0. + +--- + +[View on GitHub](https://github.com/tenser-tensor/ComfyUI-TenserTensor) diff --git a/web/docs/TT_SdxlWorkflowSettingsAdvancedNode.md b/web/docs/TT_SdxlWorkflowSettingsAdvancedNode.md new file mode 100644 index 0000000..dded395 --- /dev/null +++ b/web/docs/TT_SdxlWorkflowSettingsAdvancedNode.md @@ -0,0 +1,58 @@ +## TT SDXL Workflow Settings (Advanced) *TT_SdxlWorkflowSettingsAdvancedNode* + +*This description was generated with AI assistance. If you spot any errors, please create an issue on GitHub.* + +Extended SDXL workflow settings node with built-in prompt inputs for CLIP-L and CLIP-G encoders. Combines sampler configuration and text prompts in a +single node. + +### Inputs + +| Parameter | Type | Required | Description | +|-------------------|--------|----------|--------------------------------------------------------| +| `seed` | INT | Yes | Generation seed | +| `steps` | INT | Yes | Number of sampling steps, default 30 | +| `cfg` | FLOAT | Yes | Guidance scale, default 5.0 | +| `sampler_name` | COMBO | Yes | Sampler algorithm | +| `scheduler` | COMBO | Yes | Noise schedule | +| `ascore_positive` | FLOAT | Yes | Aesthetic score for positive conditioning, default 9.0 | +| `ascore_negative` | FLOAT | Yes | Aesthetic score for negative conditioning, default 6.0 | +| `clip_l_positive` | STRING | Yes | CLIP-L positive prompt | +| `clip_g_positive` | STRING | Yes | CLIP-G positive prompt | +| `clip_l_negative` | STRING | Yes | CLIP-L negative prompt | +| `clip_g_negative` | STRING | Yes | CLIP-G negative prompt | +| `lora_triggers` | STRING | No | LoRA trigger words (advanced) | +| `width` | INT | Yes | Image width in pixels | +| `height` | INT | Yes | Image height in pixels | +| `target_width` | INT | No | CLIP target width (advanced) | +| `target_height` | INT | No | CLIP target height (advanced) | + +### Outputs + +| Parameter | Type | Description | +|-------------------|-----------------|-------------------------------------------| +| `WORKFLOW_CONFIG` | WORKFLOW_CONFIG | Workflow config object for context nodes | +| `SEED` | INT | Generation seed | +| `STEPS` | INT | Number of sampling steps | +| `CFG` | FLOAT | Guidance scale | +| `SAMPLER_NAME` | STRING | Sampler algorithm name | +| `SCHEDULER` | STRING | Noise schedule name | +| `ASCORE_POSITIVE` | FLOAT | Aesthetic score for positive conditioning | +| `ASCORE_NEGATIVE` | FLOAT | Aesthetic score for negative conditioning | +| `CLIP_L_POSITIVE` | STRING | CLIP-L positive prompt | +| `CLIP_G_POSITIVE` | STRING | CLIP-G positive prompt | +| `CLIP_L_NEGATIVE` | STRING | CLIP-L negative prompt | +| `CLIP_G_NEGATIVE` | STRING | CLIP-G negative prompt | +| `LORA_TRIGGERS` | STRING | LoRA trigger words | +| `WIDTH` | INT | Image width | +| `HEIGHT` | INT | Image height | +| `TARGET_WIDTH` | INT | CLIP target width | +| `TARGET_HEIGHT` | INT | CLIP target height | + +### Usage + +Use when you want prompts and sampler settings in one place. Connect `WORKFLOW_CONFIG` to context nodes, or use individual outputs for direct +connections. LoRA trigger words are appended to the positive prompt automatically in the text encoder node. + +--- + +[View on GitHub](https://github.com/tenser-tensor/ComfyUI-TenserTensor) diff --git a/web/docs/TT_SdxlWorkflowSettingsNode.md b/web/docs/TT_SdxlWorkflowSettingsNode.md new file mode 100644 index 0000000..e0099f4 --- /dev/null +++ b/web/docs/TT_SdxlWorkflowSettingsNode.md @@ -0,0 +1,48 @@ +## TT SDXL Workflow Settings *TT_SdxlWorkflowSettingsNode* + +*This description was generated with AI assistance. If you spot any errors, please create an issue on GitHub.* + +Configures global workflow parameters for SDXL pipelines. Outputs a workflow config object alongside individual parameters for direct node +connections. + +### Inputs + +| Parameter | Type | Required | Description | +|-------------------|-------|----------|--------------------------------------------------------| +| `seed` | INT | Yes | Generation seed | +| `steps` | INT | Yes | Number of sampling steps, default 30 | +| `cfg` | FLOAT | Yes | Guidance scale, default 5.0 | +| `sampler_name` | COMBO | Yes | Sampler algorithm | +| `scheduler` | COMBO | Yes | Noise schedule | +| `ascore_positive` | FLOAT | Yes | Aesthetic score for positive conditioning, default 9.0 | +| `ascore_negative` | FLOAT | Yes | Aesthetic score for negative conditioning, default 6.0 | +| `width` | INT | Yes | Image width in pixels | +| `height` | INT | Yes | Image height in pixels | +| `target_width` | INT | No | CLIP target width (advanced) | +| `target_height` | INT | No | CLIP target height (advanced) | + +### Outputs + +| Parameter | Type | Description | +|-------------------|-----------------|-------------------------------------------| +| `WORKFLOW_CONFIG` | WORKFLOW_CONFIG | Workflow config object for context nodes | +| `SEED` | INT | Generation seed | +| `STEPS` | INT | Number of sampling steps | +| `CFG` | FLOAT | Guidance scale | +| `SAMPLER_NAME` | STRING | Sampler algorithm name | +| `SCHEDULER` | STRING | Noise schedule name | +| `ASCORE_POSITIVE` | FLOAT | Aesthetic score for positive conditioning | +| `ASCORE_NEGATIVE` | FLOAT | Aesthetic score for negative conditioning | +| `WIDTH` | INT | Image width | +| `HEIGHT` | INT | Image height | +| `TARGET_WIDTH` | INT | CLIP target width | +| `TARGET_HEIGHT` | INT | CLIP target height | + +### Usage + +Connect `WORKFLOW_CONFIG` to context-based nodes. Use individual outputs for direct connections to sampler and encoder nodes. Set `target_width` and +`target_height` to match the original training resolution for best results — defaults to image dimensions if not set. + +--- + +[View on GitHub](https://github.com/tenser-tensor/ComfyUI-TenserTensor)