feat(gui): add tile and stride params
This commit is contained in:
parent
8b57767f4a
commit
d63130cd75
|
@ -48,6 +48,10 @@ export interface BaseImgParams {
|
||||||
negativePrompt?: string;
|
negativePrompt?: string;
|
||||||
|
|
||||||
batch: number;
|
batch: number;
|
||||||
|
tiledVAE: boolean;
|
||||||
|
tiles: number;
|
||||||
|
overlap: number;
|
||||||
|
|
||||||
cfg: number;
|
cfg: number;
|
||||||
steps: number;
|
steps: number;
|
||||||
seed: number;
|
seed: number;
|
||||||
|
@ -160,8 +164,6 @@ export interface HighresParams {
|
||||||
highresScale: number;
|
highresScale: number;
|
||||||
highresSteps: number;
|
highresSteps: number;
|
||||||
highresStrength: number;
|
highresStrength: number;
|
||||||
|
|
||||||
tiledVAE: boolean;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -404,6 +406,9 @@ export function makeImageURL(root: string, type: string, params: BaseImgParams):
|
||||||
url.searchParams.append('cfg', params.cfg.toFixed(FIXED_FLOAT));
|
url.searchParams.append('cfg', params.cfg.toFixed(FIXED_FLOAT));
|
||||||
url.searchParams.append('eta', params.eta.toFixed(FIXED_FLOAT));
|
url.searchParams.append('eta', params.eta.toFixed(FIXED_FLOAT));
|
||||||
url.searchParams.append('steps', params.steps.toFixed(FIXED_INTEGER));
|
url.searchParams.append('steps', params.steps.toFixed(FIXED_INTEGER));
|
||||||
|
url.searchParams.append('tiledVAE', String(params.tiledVAE));
|
||||||
|
url.searchParams.append('tiles', params.tiles.toFixed(FIXED_INTEGER));
|
||||||
|
url.searchParams.append('overlap', params.overlap.toFixed(FIXED_FLOAT));
|
||||||
|
|
||||||
if (doesExist(params.scheduler)) {
|
if (doesExist(params.scheduler)) {
|
||||||
url.searchParams.append('scheduler', params.scheduler);
|
url.searchParams.append('scheduler', params.scheduler);
|
||||||
|
@ -455,10 +460,6 @@ export function appendUpscaleToURL(url: URL, upscale: UpscaleParams) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function appendHighresToURL(url: URL, highres: HighresParams) {
|
export function appendHighresToURL(url: URL, highres: HighresParams) {
|
||||||
if (highres.tiledVAE) {
|
|
||||||
url.searchParams.append('tiledVAE', String(highres.tiledVAE));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (highres.enabled) {
|
if (highres.enabled) {
|
||||||
url.searchParams.append('highresIterations', highres.highresIterations.toFixed(FIXED_INTEGER));
|
url.searchParams.append('highresIterations', highres.highresIterations.toFixed(FIXED_INTEGER));
|
||||||
url.searchParams.append('highresMethod', highres.highresMethod);
|
url.searchParams.append('highresMethod', highres.highresMethod);
|
||||||
|
|
|
@ -17,18 +17,6 @@ export function HighresControl() {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
return <Stack direction='row' spacing={4}>
|
return <Stack direction='row' spacing={4}>
|
||||||
<FormControlLabel
|
|
||||||
label={t('parameter.tiledVAE')}
|
|
||||||
control={<Checkbox
|
|
||||||
checked={highres.tiledVAE}
|
|
||||||
value='check'
|
|
||||||
onChange={(event) => {
|
|
||||||
setHighres({
|
|
||||||
tiledVAE: highres.tiledVAE === false,
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
/>}
|
|
||||||
/>
|
|
||||||
<FormControlLabel
|
<FormControlLabel
|
||||||
label={t('parameter.highres.label')}
|
label={t('parameter.highres.label')}
|
||||||
control={<Checkbox
|
control={<Checkbox
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { doesExist, mustDefault, mustExist } from '@apextoaster/js-utils';
|
import { doesExist, mustDefault, mustExist } from '@apextoaster/js-utils';
|
||||||
import { Casino } from '@mui/icons-material';
|
import { Casino } from '@mui/icons-material';
|
||||||
import { Button, Stack } from '@mui/material';
|
import { Button, Checkbox, FormControlLabel, Stack } from '@mui/material';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { useContext } from 'react';
|
import { useContext } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
|
@ -84,6 +84,54 @@ export function ImageControl(props: ImageControlProps) {
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
<FormControlLabel
|
||||||
|
label={t('parameter.tiledVAE')}
|
||||||
|
control={<Checkbox
|
||||||
|
checked={controlState.tiledVAE}
|
||||||
|
value='check'
|
||||||
|
onChange={(event) => {
|
||||||
|
if (doesExist(props.onChange)) {
|
||||||
|
props.onChange({
|
||||||
|
...controlState,
|
||||||
|
tiledVAE: controlState.tiledVAE === false,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
/>}
|
||||||
|
/>
|
||||||
|
<NumericField
|
||||||
|
label={t('parameter.tiles')}
|
||||||
|
min={params.tiles.min}
|
||||||
|
max={params.tiles.max}
|
||||||
|
step={params.tiles.step}
|
||||||
|
value={controlState.tiles}
|
||||||
|
onChange={(tiles) => {
|
||||||
|
if (doesExist(props.onChange)) {
|
||||||
|
props.onChange({
|
||||||
|
...controlState,
|
||||||
|
tiles,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<NumericField
|
||||||
|
decimal
|
||||||
|
label={t('parameter.overlap')}
|
||||||
|
min={params.overlap.min}
|
||||||
|
max={params.overlap.max}
|
||||||
|
step={params.overlap.step}
|
||||||
|
value={controlState.overlap}
|
||||||
|
onChange={(overlap) => {
|
||||||
|
if (doesExist(props.onChange)) {
|
||||||
|
props.onChange({
|
||||||
|
...controlState,
|
||||||
|
overlap,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Stack>
|
||||||
|
<Stack direction='row' spacing={4}>
|
||||||
<NumericField
|
<NumericField
|
||||||
decimal
|
decimal
|
||||||
label={t('parameter.cfg')}
|
label={t('parameter.cfg')}
|
||||||
|
|
|
@ -217,6 +217,9 @@ export function baseParamsFromServer(defaults: ServerParams): Required<BaseImgPa
|
||||||
scheduler: defaults.scheduler.default,
|
scheduler: defaults.scheduler.default,
|
||||||
steps: defaults.steps.default,
|
steps: defaults.steps.default,
|
||||||
seed: defaults.seed.default,
|
seed: defaults.seed.default,
|
||||||
|
tiledVAE: defaults.tiledVAE.default,
|
||||||
|
tiles: defaults.tiles.default,
|
||||||
|
overlap: defaults.overlap.default,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -447,7 +450,6 @@ export function createStateSlices(server: ServerParams) {
|
||||||
highresSteps: server.highresSteps.default,
|
highresSteps: server.highresSteps.default,
|
||||||
highresScale: server.highresScale.default,
|
highresScale: server.highresScale.default,
|
||||||
highresStrength: server.highresStrength.default,
|
highresStrength: server.highresStrength.default,
|
||||||
tiledVAE: server.tiledVAE.default,
|
|
||||||
},
|
},
|
||||||
setHighres(params) {
|
setHighres(params) {
|
||||||
set((prev) => ({
|
set((prev) => ({
|
||||||
|
@ -466,7 +468,6 @@ export function createStateSlices(server: ServerParams) {
|
||||||
highresSteps: server.highresSteps.default,
|
highresSteps: server.highresSteps.default,
|
||||||
highresScale: server.highresScale.default,
|
highresScale: server.highresScale.default,
|
||||||
highresStrength: server.highresStrength.default,
|
highresStrength: server.highresStrength.default,
|
||||||
tiledVAE: server.tiledVAE.default,
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -537,7 +538,7 @@ export function createStateSlices(server: ServerParams) {
|
||||||
const createResetSlice: Slice<ResetSlice> = (set) => ({
|
const createResetSlice: Slice<ResetSlice> = (set) => ({
|
||||||
resetAll() {
|
resetAll() {
|
||||||
set((prev) => {
|
set((prev) => {
|
||||||
const next = {...prev};
|
const next = { ...prev };
|
||||||
next.resetImg2Img();
|
next.resetImg2Img();
|
||||||
next.resetInpaint();
|
next.resetInpaint();
|
||||||
next.resetTxt2Img();
|
next.resetTxt2Img();
|
||||||
|
|
Loading…
Reference in New Issue