This commit is contained in:
Qing 2023-12-16 13:59:18 +08:00
parent 24e95daac1
commit 36b0782933
6 changed files with 55 additions and 49 deletions

View File

@ -231,7 +231,7 @@ export function SettingsDialog() {
Diffusion other Diffusion other
</TabsTrigger> </TabsTrigger>
</TabsList> </TabsList>
<ScrollArea className="h-[240px] w-full mt-2"> <ScrollArea className="h-[240px] w-full mt-2 outline-none">
<TabsContent value={MODEL_TYPE_INPAINT}> <TabsContent value={MODEL_TYPE_INPAINT}>
{renderModelList([MODEL_TYPE_INPAINT])} {renderModelList([MODEL_TYPE_INPAINT])}
</TabsContent> </TabsContent>

View File

@ -49,7 +49,7 @@ const SidePanel = () => {
state.updateAppState, state.updateAppState,
]) ])
const [exampleImage, isExampleImageLoaded] = useImage(paintByExampleFile) const [exampleImage, isExampleImageLoaded] = useImage(paintByExampleFile)
const [open, toggleOpen] = useToggle(false) const [open, toggleOpen] = useToggle(true)
useHotKey("c", () => { useHotKey("c", () => {
toggleOpen() toggleOpen()
@ -363,6 +363,40 @@ const SidePanel = () => {
) )
} }
const renderStrength = () => {
if (!settings.model.support_strength) {
return null
}
return (
<div className="flex flex-col gap-1">
<Label htmlFor="strength">Strength</Label>
<RowContainer>
<Slider
className="w-[180px]"
defaultValue={[100]}
min={10}
max={100}
step={1}
value={[Math.floor(settings.sdStrength * 100)]}
onValueChange={(vals) =>
updateSettings({ sdStrength: vals[0] / 100 })
}
/>
<NumberInput
id="strength"
className="w-[60px] rounded-full"
numberValue={settings.sdStrength}
allowFloat
onNumberValueChange={(val) => {
updateSettings({ sdStrength: val })
}}
/>
</RowContainer>
</div>
)
}
return ( return (
<Sheet open={open} modal={false}> <Sheet open={open} modal={false}>
<SheetTrigger <SheetTrigger
@ -381,7 +415,7 @@ const SidePanel = () => {
</SheetTrigger> </SheetTrigger>
<SheetContent <SheetContent
side="right" side="right"
className="w-[300px] mt-[60px] outline-none pl-4 pr-1 backdrop-filter backdrop-blur-md bg-background/70" className="w-[300px] mt-[60px] outline-none pl-4 pr-1"
onOpenAutoFocus={(event) => event.preventDefault()} onOpenAutoFocus={(event) => event.preventDefault()}
onPointerDownOutside={(event) => event.preventDefault()} onPointerDownOutside={(event) => event.preventDefault()}
> >
@ -472,32 +506,7 @@ const SidePanel = () => {
</div> </div>
{renderP2PImageGuidanceScale()} {renderP2PImageGuidanceScale()}
{renderStrength()}
<div className="flex flex-col gap-1">
<Label htmlFor="strength">Strength</Label>
<RowContainer>
<Slider
className="w-[180px]"
defaultValue={[100]}
min={10}
max={100}
step={1}
value={[Math.floor(settings.sdStrength * 100)]}
onValueChange={(vals) =>
updateSettings({ sdStrength: vals[0] / 100 })
}
/>
<NumberInput
id="strength"
className="w-[60px] rounded-full"
numberValue={settings.sdStrength}
allowFloat
onNumberValueChange={(val) => {
updateSettings({ sdStrength: val })
}}
/>
</RowContainer>
</div>
<RowContainer> <RowContainer>
<Label htmlFor="sampler">Sampler</Label> <Label htmlFor="sampler">Sampler</Label>

View File

@ -16,7 +16,7 @@ const Slider = React.forwardRef<
tabIndex={-1} tabIndex={-1}
{...props} {...props}
> >
<SliderPrimitive.Track className="relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20 data-[disabled]:cursor-not-allowed"> <SliderPrimitive.Track className="relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50">
<SliderPrimitive.Range className="absolute h-full bg-primary data-[disabled]:cursor-not-allowed " /> <SliderPrimitive.Range className="absolute h-full bg-primary data-[disabled]:cursor-not-allowed " />
</SliderPrimitive.Track> </SliderPrimitive.Track>
<SliderPrimitive.Thumb <SliderPrimitive.Thumb

View File

@ -44,7 +44,12 @@ export default async function inpaint(
fd.append("sdSteps", settings.sdSteps.toString()) fd.append("sdSteps", settings.sdSteps.toString())
fd.append("sdGuidanceScale", settings.sdGuidanceScale.toString()) fd.append("sdGuidanceScale", settings.sdGuidanceScale.toString())
fd.append("sdSampler", settings.sdSampler.toString()) fd.append("sdSampler", settings.sdSampler.toString())
if (settings.seedFixed) {
fd.append("sdSeed", settings.seed.toString()) fd.append("sdSeed", settings.seed.toString())
} else {
fd.append("sdSeed", "-1")
}
fd.append("sdMatchHistograms", settings.sdMatchHistograms ? "true" : "false") fd.append("sdMatchHistograms", settings.sdMatchHistograms ? "true" : "false")
fd.append("sdScale", (settings.sdScale / 100).toString()) fd.append("sdScale", (settings.sdScale / 100).toString())
@ -61,6 +66,7 @@ export default async function inpaint(
fd.append("p2pImageGuidanceScale", settings.p2pImageGuidanceScale.toString()) fd.append("p2pImageGuidanceScale", settings.p2pImageGuidanceScale.toString())
// ControlNet // ControlNet
fd.append("controlnet_enabled", settings.enableControlnet.toString())
fd.append( fd.append(
"controlnet_conditioning_scale", "controlnet_conditioning_scale",
settings.controlnetConditioningScale.toString() settings.controlnetConditioningScale.toString()

View File

@ -247,6 +247,7 @@ const defaultValues: AppState = {
path: "lama", path: "lama",
model_type: "inpaint", model_type: "inpaint",
support_controlnet: false, support_controlnet: false,
support_strength: false,
controlnets: [], controlnets: [],
support_freeu: false, support_freeu: false,
support_lcm_lora: false, support_lcm_lora: false,
@ -410,16 +411,6 @@ export const useStore = createWithEqualityFn<AppState & AppAction>()(
} }
const newRender = new Image() const newRender = new Image()
await loadImage(newRender, blob) await loadImage(newRender, blob)
if (useLastLineGroup === true) {
const prevRenders = renders.slice(0, -1)
const newRenders = [...prevRenders, newRender]
get().updateEditorState({
renders: newRenders,
lineGroups: newLineGroups,
lastLineGroup: curLineGroup,
curLineGroup: [],
})
} else {
const newRenders = [...renders, newRender] const newRenders = [...renders, newRender]
get().updateEditorState({ get().updateEditorState({
renders: newRenders, renders: newRenders,
@ -427,7 +418,6 @@ export const useStore = createWithEqualityFn<AppState & AppAction>()(
lastLineGroup: curLineGroup, lastLineGroup: curLineGroup,
curLineGroup: [], curLineGroup: [],
}) })
}
} catch (e: any) { } catch (e: any) {
toast({ toast({
variant: "destructive", variant: "destructive",

View File

@ -8,6 +8,7 @@ export interface ModelInfo {
| "diffusers_sd_inpaint" | "diffusers_sd_inpaint"
| "diffusers_sdxl_inpaint" | "diffusers_sdxl_inpaint"
| "diffusers_other" | "diffusers_other"
support_strength: boolean
support_controlnet: boolean support_controlnet: boolean
controlnets: string[] controlnets: string[]
support_freeu: boolean support_freeu: boolean