From 3bd9c27a798b37b300fb8eb3a7143c9404bd86ca Mon Sep 17 00:00:00 2001 From: blessedcoolant <54517381+blessedcoolant@users.noreply.github.com> Date: Thu, 27 Jul 2023 04:55:55 +1200 Subject: [PATCH] feat: Add SDXL Style Prompt Concat Toggle --- .../buildLinearSDXLImageToImageGraph.ts | 9 ++++- .../buildLinearSDXLTextToImageGraph.ts | 9 ++++- .../sdxl/components/ParamSDXLConcatPrompt.tsx | 37 +++++++++++++++++++ .../SDXLImageToImageTabParameters.tsx | 3 +- .../SDXLTextToImageTabParameters.tsx | 2 + .../web/src/features/sdxl/store/sdxlSlice.ts | 6 +++ 6 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 invokeai/frontend/web/src/features/sdxl/components/ParamSDXLConcatPrompt.tsx diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts index 5a032db399..a260dbc467 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts @@ -50,6 +50,7 @@ export const buildLinearSDXLImageToImageGraph = ( const { positiveStylePrompt, negativeStylePrompt, + shouldConcatSDXLStylePrompt, shouldUseSDXLRefiner, refinerStart, sdxlImg2ImgDenoisingStrength: strength, @@ -91,13 +92,17 @@ export const buildLinearSDXLImageToImageGraph = ( type: 'sdxl_compel_prompt', id: POSITIVE_CONDITIONING, prompt: positivePrompt, - style: `${positivePrompt} ${positiveStylePrompt}`, + style: shouldConcatSDXLStylePrompt + ? `${positivePrompt} ${positiveStylePrompt}` + : positiveStylePrompt, }, [NEGATIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, - style: `${negativePrompt} ${negativeStylePrompt}`, + style: shouldConcatSDXLStylePrompt + ? `${negativePrompt} ${negativeStylePrompt}` + : negativeStylePrompt, }, [NOISE]: { type: 'noise', diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts index 42b7d5e038..c10e7831d3 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts @@ -39,6 +39,7 @@ export const buildLinearSDXLTextToImageGraph = ( const { positiveStylePrompt, negativeStylePrompt, + shouldConcatSDXLStylePrompt, shouldUseSDXLRefiner, refinerStart, } = state.sdxl; @@ -74,13 +75,17 @@ export const buildLinearSDXLTextToImageGraph = ( type: 'sdxl_compel_prompt', id: POSITIVE_CONDITIONING, prompt: positivePrompt, - style: `${positivePrompt} ${positiveStylePrompt}`, + style: shouldConcatSDXLStylePrompt + ? `${positivePrompt} ${positiveStylePrompt}` + : positiveStylePrompt, }, [NEGATIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, - style: `${negativePrompt} ${negativeStylePrompt}`, + style: shouldConcatSDXLStylePrompt + ? `${negativePrompt} ${negativeStylePrompt}` + : negativeStylePrompt, }, [NOISE]: { type: 'noise', diff --git a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLConcatPrompt.tsx b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLConcatPrompt.tsx new file mode 100644 index 0000000000..ad48a8af14 --- /dev/null +++ b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLConcatPrompt.tsx @@ -0,0 +1,37 @@ +import { Box } from '@chakra-ui/react'; +import { RootState } from 'app/store/store'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAISwitch from 'common/components/IAISwitch'; +import { ChangeEvent } from 'react'; +import { setShouldConcatSDXLStylePrompt } from '../store/sdxlSlice'; + +export default function ParamSDXLConcatPrompt() { + const shouldConcatSDXLStylePrompt = useAppSelector( + (state: RootState) => state.sdxl.shouldConcatSDXLStylePrompt + ); + + const dispatch = useAppDispatch(); + + const handleShouldConcatPromptChange = (e: ChangeEvent) => { + dispatch(setShouldConcatSDXLStylePrompt(e.target.checked)); + }; + + return ( + + + + ); +} diff --git a/invokeai/frontend/web/src/features/sdxl/components/SDXLImageToImageTabParameters.tsx b/invokeai/frontend/web/src/features/sdxl/components/SDXLImageToImageTabParameters.tsx index 778116eefe..4a0c46eb7c 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/SDXLImageToImageTabParameters.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/SDXLImageToImageTabParameters.tsx @@ -2,8 +2,8 @@ import ParamDynamicPromptsCollapse from 'features/dynamicPrompts/components/Para import ParamNegativeConditioning from 'features/parameters/components/Parameters/Core/ParamNegativeConditioning'; import ParamPositiveConditioning from 'features/parameters/components/Parameters/Core/ParamPositiveConditioning'; import ParamNoiseCollapse from 'features/parameters/components/Parameters/Noise/ParamNoiseCollapse'; -// import ParamVariationCollapse from 'features/parameters/components/Parameters/Variations/ParamVariationCollapse'; import ProcessButtons from 'features/parameters/components/ProcessButtons/ProcessButtons'; +import ParamSDXLConcatPrompt from './ParamSDXLConcatPrompt'; import ParamSDXLNegativeStyleConditioning from './ParamSDXLNegativeStyleConditioning'; import ParamSDXLPositiveStyleConditioning from './ParamSDXLPositiveStyleConditioning'; import ParamSDXLRefinerCollapse from './ParamSDXLRefinerCollapse'; @@ -16,6 +16,7 @@ const SDXLImageToImageTabParameters = () => { + diff --git a/invokeai/frontend/web/src/features/sdxl/components/SDXLTextToImageTabParameters.tsx b/invokeai/frontend/web/src/features/sdxl/components/SDXLTextToImageTabParameters.tsx index 2175fcc9e3..e740cc336b 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/SDXLTextToImageTabParameters.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/SDXLTextToImageTabParameters.tsx @@ -4,6 +4,7 @@ import ParamPositiveConditioning from 'features/parameters/components/Parameters import ParamNoiseCollapse from 'features/parameters/components/Parameters/Noise/ParamNoiseCollapse'; import ProcessButtons from 'features/parameters/components/ProcessButtons/ProcessButtons'; import TextToImageTabCoreParameters from 'features/ui/components/tabs/TextToImage/TextToImageTabCoreParameters'; +import ParamSDXLConcatPrompt from './ParamSDXLConcatPrompt'; import ParamSDXLNegativeStyleConditioning from './ParamSDXLNegativeStyleConditioning'; import ParamSDXLPositiveStyleConditioning from './ParamSDXLPositiveStyleConditioning'; import ParamSDXLRefinerCollapse from './ParamSDXLRefinerCollapse'; @@ -15,6 +16,7 @@ const SDXLTextToImageTabParameters = () => { + diff --git a/invokeai/frontend/web/src/features/sdxl/store/sdxlSlice.ts b/invokeai/frontend/web/src/features/sdxl/store/sdxlSlice.ts index 16bb806029..7a8ccffa97 100644 --- a/invokeai/frontend/web/src/features/sdxl/store/sdxlSlice.ts +++ b/invokeai/frontend/web/src/features/sdxl/store/sdxlSlice.ts @@ -10,6 +10,7 @@ import { MainModelField } from 'services/api/types'; type SDXLInitialState = { positiveStylePrompt: PositiveStylePromptSDXLParam; negativeStylePrompt: NegativeStylePromptSDXLParam; + shouldConcatSDXLStylePrompt: boolean; shouldUseSDXLRefiner: boolean; sdxlImg2ImgDenoisingStrength: number; refinerModel: MainModelField | null; @@ -23,6 +24,7 @@ type SDXLInitialState = { const sdxlInitialState: SDXLInitialState = { positiveStylePrompt: '', negativeStylePrompt: '', + shouldConcatSDXLStylePrompt: true, shouldUseSDXLRefiner: false, sdxlImg2ImgDenoisingStrength: 0.7, refinerModel: null, @@ -43,6 +45,9 @@ const sdxlSlice = createSlice({ setNegativeStylePromptSDXL: (state, action: PayloadAction) => { state.negativeStylePrompt = action.payload; }, + setShouldConcatSDXLStylePrompt: (state, action: PayloadAction) => { + state.shouldConcatSDXLStylePrompt = action.payload; + }, setShouldUseSDXLRefiner: (state, action: PayloadAction) => { state.shouldUseSDXLRefiner = action.payload; }, @@ -76,6 +81,7 @@ const sdxlSlice = createSlice({ export const { setPositiveStylePromptSDXL, setNegativeStylePromptSDXL, + setShouldConcatSDXLStylePrompt, setShouldUseSDXLRefiner, setSDXLImg2ImgDenoisingStrength, refinerModelChanged,