From fcea65770f31df652a429fdbeca561591408acd4 Mon Sep 17 00:00:00 2001 From: Jennifer Player Date: Fri, 15 Sep 2023 10:37:05 -0400 Subject: [PATCH] added optional popovers for users to learn more about each setting --- invokeai/frontend/web/public/locales/en.json | 126 ++++++++++++++++++ .../components/IAIInformationalPopover.tsx | 19 +-- .../parameters/ParamControlNetBeginEnd.tsx | 105 ++++++++------- .../parameters/ParamControlNetControlMode.tsx | 17 ++- .../ParamControlNetFeatureToggle.tsx | 19 +-- .../parameters/ParamControlNetResizeMode.tsx | 17 ++- .../parameters/ParamControlNetWeight.tsx | 25 ++-- .../ParamDynamicPromptsCombinatorial.tsx | 15 ++- .../components/ParamDynamicPromptsEnabled.tsx | 13 +- .../components/clipSkip.tsx | 15 +++ .../components/compositingBlur.tsx | 15 +++ .../components/compositingBlurMethod.tsx | 15 +++ .../components/compositingCoherencePass.tsx | 15 +++ .../components/compositingMode.tsx | 15 +++ .../components/compositingSteps.tsx | 15 +++ .../components/compositingStrength.tsx | 15 +++ .../components/compositiveMaskAdjustments.tsx | 15 +++ .../components/controlNetBeginEnd.tsx | 15 +++ .../components/controlNetControlMode.tsx | 15 +++ .../components/controlNetResizeMode.tsx | 15 +++ .../components/controlNetToggle.tsx | 15 +++ .../components/controlNetWeight.tsx | 15 +++ .../dynamicPromptsCombinatorial.tsx | 17 +++ .../components/dynamicPromptsToggle.tsx | 15 +++ .../components/infillMethod.tsx | 15 +++ .../informationalPopovers/components/lora.tsx | 15 +++ .../components/noiseEnable.tsx | 15 +++ .../components/noiseUseCPU.tsx | 15 +++ .../components/paramCFGScale.tsx | 15 +++ .../components/paramDenoisingStrength.tsx | 15 +++ .../components/paramImages.tsx | 15 +++ .../components/paramModel.tsx | 15 +++ .../components/paramPositiveConditioning.tsx | 7 +- .../components/paramScheduler.tsx | 15 +++ .../components/paramSeed.tsx | 15 +++ .../components/paramSteps.tsx | 15 +++ .../components/paramVAE.tsx | 15 +++ .../components/paramVAEPrecision.tsx | 15 +++ .../components/scaleBeforeProcessing.tsx | 15 +++ .../features/lora/components/ParamLora.tsx | 51 +++---- .../Parameters/Advanced/ParamClipSkip.tsx | 31 +++-- .../ParamCanvasCoherenceMode.tsx | 15 ++- .../ParamCanvasCoherenceSteps.tsx | 37 ++--- .../ParamCanvasCoherenceStrength.tsx | 37 ++--- .../MaskAdjustment/ParamMaskBlur.tsx | 35 ++--- .../MaskAdjustment/ParamMaskBlurMethod.tsx | 15 ++- .../InfillAndScaling/ParamInfillMethod.tsx | 19 +-- .../ParamScaleBeforeProcessing.tsx | 15 ++- .../Parameters/Core/ParamCFGScale.tsx | 53 ++++---- .../Parameters/Core/ParamIterations.tsx | 53 ++++---- .../Parameters/Core/ParamScheduler.tsx | 15 ++- .../components/Parameters/Core/ParamSteps.tsx | 51 +++---- .../MainModel/ParamMainModelSelect.tsx | 41 +++--- .../Parameters/Noise/ParamCpuNoise.tsx | 15 ++- .../Parameters/Noise/ParamNoiseToggle.tsx | 13 +- .../Parameters/Seed/ParamSeedFull.tsx | 13 +- .../VAEModel/ParamVAEModelSelect.tsx | 25 ++-- .../Parameters/VAEModel/ParamVAEPrecision.tsx | 15 ++- .../ParamSDXLImg2ImgDenoisingStrength.tsx | 29 ++-- 59 files changed, 1018 insertions(+), 360 deletions(-) create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/clipSkip.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/compositingBlur.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/compositingBlurMethod.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/compositingCoherencePass.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/compositingMode.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/compositingSteps.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/compositingStrength.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/compositiveMaskAdjustments.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/controlNetBeginEnd.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/controlNetControlMode.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/controlNetResizeMode.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/controlNetToggle.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/controlNetWeight.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/dynamicPromptsCombinatorial.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/dynamicPromptsToggle.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/infillMethod.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/lora.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/noiseEnable.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/noiseUseCPU.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/paramCFGScale.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/paramDenoisingStrength.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/paramImages.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/paramModel.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/paramScheduler.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/paramSeed.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/paramSteps.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/paramVAE.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/paramVAEPrecision.tsx create mode 100644 invokeai/frontend/web/src/features/informationalPopovers/components/scaleBeforeProcessing.tsx diff --git a/invokeai/frontend/web/public/locales/en.json b/invokeai/frontend/web/public/locales/en.json index 125554fc40..03e41fc571 100644 --- a/invokeai/frontend/web/public/locales/en.json +++ b/invokeai/frontend/web/public/locales/en.json @@ -653,6 +653,132 @@ "infillAndScaling": "Manage infill methods (used on masked or erased areas of the canvas) and scaling (useful for small bounding box sizes)." } }, + "popovers": { + "clipSkip": { + "heading": "CLIP Skip", + "paragraph": "Choose how many layers of the CLIP model to skip. Certain models are better suited to be used with CLIP Skip." + }, + "compositingBlur": { + "heading": "Blur", + "paragraph": "The blur radius of the mask." + }, + "compositingBlurMethod": { + "heading": "Blur Method", + "paragraph": "The method of blur applied to the masked area." + }, + "compositingCoherencePass": { + "heading": "Coherence Pass", + "paragraph": "Composite the Inpainted/Outpainted images." + }, + "compositingMode": { + "heading": "Mode", + "paragraph": "The mode of the Coherence Pass." + }, + "compositingSteps": { + "heading": "Steps", + "paragraph": "Number of steps in the Coherence Pass. Similar to Denoising Steps." + }, + "compositingStrength": { + "heading": "Strength", + "paragraph": "Amount of noise added for the Coherence Pass. Similar to Denoising Strength." + }, + "compositingMaskAdjustments": { + "heading": "Mask Adjustments", + "paragraph": "Adjust the mask." + }, + "controlNetBeginEnd": { + "heading": "Begin / End Step Percentage", + "paragraph": "Which parts of the denoising process will have the ControlNet applied. ControlNets applied at the start of the process guide composition, and ControlNets applied at the end guide details." + }, + "controlNetControlMode": { + "heading": "Control Mode", + "paragraph": "Lends more weight to either the prompt or ControlNet." + }, + "controlNetResizeMode": { + "heading": "Resize Mode", + "paragraph": "How the ControlNet image will be fit to the image generation Ratio" + }, + "controlNetToggle": { + "heading": "Enable ControlNet", + "paragraph": "ControlNets provide guidance to the generation process, helping create images with controlled composition, structure, or style, depending on the model selected." + }, + "controlNetWeight": { + "heading": "Weight", + "paragraph": "How strongly the ControlNet will impact the generated image." + }, + "dynamicPromptsToggle": { + "heading": "Enable Dynamic Prompts", + "paragraph": "Dynamic prompts allow multiple options within a prompt. Dynamic prompts can be used by: {option1|option2|option3}. Combinations of prompts will be randomly generated until the “Images” number has been reached." + }, + "dynamicPromptsCombinatorial": { + "heading": "Combinatorial Generation", + "paragraph": "Generate an image for every possible combination of Dynamic Prompt until the Max Prompts is reached." + }, + "infillMethod": { + "heading": "Infill Method", + "paragraph": "Method to infill the selected area." + }, + "lora": { + "heading": "LoRA", + "paragraph": "Weight of the LoRA. Higher weight will lead to larger impacts on the final image." + }, + "noiseEnable": { + "heading": "Enable Noise Settings", + "paragraph": "Advanced control over noise generation." + }, + "noiseUseCPU": { + "heading": "Use CPU Noise", + "paragraph": "Uses the CPU to generate random noise." + }, + "paramsCFGScale": { + "heading": "CFG Scale", + "paragraph": "Controls how much your prompt influences the generation process." + }, + "paramDenoisingStrength": { + "heading": "Denoising Strength", + "paragraph": "How much noise is added to the input image. 0 will result in an identical image, while 1 will result in a completely new image." + }, + "paramImages": { + "heading": "Images", + "paragraph": "Number of images that will be generated." + }, + "paramModel": { + "heading": "Model", + "paragraph": "Model used for the denoising steps. Different models are trained to specialize in producing different aesthetic results and content." + }, + "paramPositiveConditioning": { + "heading": "Positive Prompts", + "paragraph": "This is where you enter your positive prompts." + }, + "paramScheduler": { + "heading": "Scheduler", + "paragraph": "Scheduler defines how to iteratively add noise to an image or how to update a sample based on a model's output." + }, + "paramSeed": { + "heading": "Seed", + "paragraph": "Controls the starting noise used for generation. Disable “Random Seed” to produce identical results with the same generation settings." + }, + "paramNegativeConditioning": { + "heading": "Negative Prompts", + "paragraph": "This is where you enter your negative prompts." + }, + "paramSteps": { + "heading": "Steps", + "paragraph": "Number of steps that will be performed in each generation. Higher step counts will typically create better images but will require more generation time." + }, + "paramVAE": { + "heading": "VAE", + "paragraph": "Model used for translating AI output into the final image." + }, + "paramVAEPrecision": { + "heading": "VAE Precision", + "paragraph": "The precision used during VAE encoding and decoding. Fp16/Half precision is more efficient, at the expense of minor image variations." + }, + "scaleBeforeProcessing": { + "heading": "Scale Before Processing", + "paragraph": "Scales the selected area to the size best suited for the model before the image generation process." + } + }, "unifiedCanvas": { "layer": "Layer", "base": "Base", diff --git a/invokeai/frontend/web/src/common/components/IAIInformationalPopover.tsx b/invokeai/frontend/web/src/common/components/IAIInformationalPopover.tsx index 8f4e6428db..a5bc691bf6 100644 --- a/invokeai/frontend/web/src/common/components/IAIInformationalPopover.tsx +++ b/invokeai/frontend/web/src/common/components/IAIInformationalPopover.tsx @@ -17,12 +17,13 @@ import { useAppSelector } from '../../app/store/storeHooks'; import { systemSelector } from '../../features/system/store/systemSelectors'; interface Props extends PopoverProps { - heading: string; + heading?: string; paragraph: string; triggerComponent: ReactNode; image?: string; buttonLabel?: string; buttonHref?: string; + placement?: string; } function IAIInformationalPopover({ @@ -32,6 +33,7 @@ function IAIInformationalPopover({ buttonLabel, buttonHref, triggerComponent, + placement, }: Props) { const { shouldDisableInformationalPopovers } = useAppSelector(systemSelector); @@ -40,7 +42,7 @@ function IAIInformationalPopover({ } else { return ( {image && ( - {heading} - {paragraph} + {heading && {heading}} + {paragraph} {buttonLabel && ( - +