From 8f385279a2d65e869c251e52f657671b3fd281f6 Mon Sep 17 00:00:00 2001 From: lllyasviel Date: Tue, 30 Jan 2024 15:54:01 -0800 Subject: [PATCH] Update preprocessor_tile.py --- .../scripts/preprocessor_tile.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/extensions-builtin/forge_preprocessor_tile/scripts/preprocessor_tile.py b/extensions-builtin/forge_preprocessor_tile/scripts/preprocessor_tile.py index 1e293f73..497d493c 100644 --- a/extensions-builtin/forge_preprocessor_tile/scripts/preprocessor_tile.py +++ b/extensions-builtin/forge_preprocessor_tile/scripts/preprocessor_tile.py @@ -12,6 +12,16 @@ class PreprocessorTile(Preprocessor): self.tags = ['Tile'] self.model_filename_filters = ['tile'] self.slider_resolution = PreprocessorParameter(visible=False) + self.latent = None + + def register_latent(self, process, cond): + vae = process.sd_model.forge_objects.vae + # This is a powerful VAE with integrated memory management, bf16, and tiled fallback. + + latent_image = vae.encode(cond.movedim(1, -1)) + latent_image = process.sd_model.forge_objects.unet.model.latent_format.process_in(latent_image) + self.latent = latent_image + return self.latent class PreprocessorTileColorFix(PreprocessorTile): @@ -20,6 +30,15 @@ class PreprocessorTileColorFix(PreprocessorTile): self.name = 'tile_colorfix' self.slider_1 = PreprocessorParameter(label='Variation', value=8.0, minimum=3.0, maximum=32.0, step=1.0, visible=True) + def process_before_every_sampling(self, process, cond, *args, **kwargs): + latent = self.register_latent(process, cond) + + unet = process.sd_model.forge_objects.unet.clone() + + process.sd_model.forge_objects.unet = unet + + return + class PreprocessorTileColorFixSharp(PreprocessorTileColorFix): def __init__(self): @@ -27,6 +46,15 @@ class PreprocessorTileColorFixSharp(PreprocessorTileColorFix): self.name = 'tile_colorfix+sharp' self.slider_2 = PreprocessorParameter(label='Sharpness', value=1.0, minimum=0.0, maximum=2.0, step=0.01, visible=True) + def process_before_every_sampling(self, process, cond, *args, **kwargs): + latent = self.register_latent(process, cond) + + unet = process.sd_model.forge_objects.unet.clone() + + process.sd_model.forge_objects.unet = unet + + return + add_supported_preprocessor(PreprocessorTile())