add some hrfix compatibility with old version

Signed-off-by: Victor Seiji Hariki <victorseijih@gmail.com>
This commit is contained in:
Victor Seiji Hariki 2023-01-04 21:00:17 -03:00
parent f3eaa84a76
commit ad66f0ec29
4 changed files with 63 additions and 46 deletions

View file

@ -100,11 +100,11 @@
<input type="checkbox" id="cbxHRFix" onchange="changeHiResFix()" /> <input type="checkbox" id="cbxHRFix" onchange="changeHiResFix()" />
<label for="cbxHRFix">Apply txt2img HRfix</label> <label for="cbxHRFix">Apply txt2img HRfix</label>
<br /> <br />
<div id="hrFixScale"></div> <div id="hrFixScale" class="hrfix"></div>
<div id="hrFixLockPx"></div> <div id="hrFixLockPx" class="hrfix"></div>
<label id="hrFixLabel">Choose HRfix upscaler</label> <label id="hrFixLabel" class="hrfix">Choose HRfix upscaler</label>
<div id="hrFixUpscaler"></div> <div id="hrFixUpscaler" class="hrfix"></div>
<div id="hrDenoising"></div> <div id="hrDenoising" class="hrfix"></div>
<input <input
type="checkbox" type="checkbox"
id="cbxRestoreFaces" id="cbxRestoreFaces"
@ -320,7 +320,7 @@
</div> </div>
<!-- Basics --> <!-- Basics -->
<script src="js/global.js?v=1807d6e" type="text/javascript"></script> <script src="js/global.js?v=3a1cde6" type="text/javascript"></script>
<!-- Base Libs --> <!-- Base Libs -->
<script src="js/lib/util.js?v=7f6847c" type="text/javascript"></script> <script src="js/lib/util.js?v=7f6847c" type="text/javascript"></script>
@ -341,7 +341,7 @@
<!-- Content --> <!-- Content -->
<script src="js/prompt.js?v=7a1c68c" type="text/javascript"></script> <script src="js/prompt.js?v=7a1c68c" type="text/javascript"></script>
<script src="js/index.js?v=57dca90" type="text/javascript"></script> <script src="js/index.js?v=afc36b6" type="text/javascript"></script>
<script <script
src="js/ui/floating/history.js?v=fc92d14" src="js/ui/floating/history.js?v=fc92d14"
@ -355,7 +355,7 @@
src="js/ui/tool/generic.js?v=2bcd36d" src="js/ui/tool/generic.js?v=2bcd36d"
type="text/javascript"></script> type="text/javascript"></script>
<script src="js/ui/tool/dream.js?v=51db348" type="text/javascript"></script> <script src="js/ui/tool/dream.js?v=e4e5883" type="text/javascript"></script>
<script <script
src="js/ui/tool/maskbrush.js?v=1e8a893" src="js/ui/tool/maskbrush.js?v=1e8a893"
type="text/javascript"></script> type="text/javascript"></script>

View file

@ -50,6 +50,9 @@ const global = {
toggledebug() { toggledebug() {
this.debug = !this.debug; this.debug = !this.debug;
}, },
// HRFix compatibility shenanigans
isOldHRFix: false,
}; };
global._firstRun = !localStorage.getItem("openoutpaint/host"); global._firstRun = !localStorage.getItem("openoutpaint/host");

View file

@ -345,12 +345,16 @@ async function testHostConnection() {
); );
const optionsdata = await response.json(); const optionsdata = await response.json();
if (optionsdata["use_scale_latent_for_hires_fix"]) { if (optionsdata["use_scale_latent_for_hires_fix"]) {
const message = `You are using an outdated version of A1111 webUI.\nThe HRfix options will not work until you update to at least commit ef27a18 or newer.\n(https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/ef27a18b6b7cb1a8eebdc9b2e88d25baf2c2414d)\nHRfix options have been disabled.`; const message = `You are using an outdated version of A1111 webUI.\nThe HRfix options will not work until you update to at least commit ef27a18 or newer.\n(https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/ef27a18b6b7cb1a8eebdc9b2e88d25baf2c2414d)\nHRfix will fallback to half-resolution only.`;
console.error(message); console.warn(message);
if (notify) alert(message); if (notify) alert(message);
// Hide all new hrfix options
document document
.getElementById("cbxHRFix") .querySelectorAll(".hrfix")
.setAttribute("disabled", "disabled"); .forEach((el) => (el.style.display = "none"));
// We are using old HRFix
global.isOldHRFix = true;
stableDiffusionData.enable_hr = false; stableDiffusionData.enable_hr = false;
} }
switch (response.status) { switch (response.status) {

View file

@ -141,41 +141,7 @@ const _dream = async (endpoint, request) => {
let data = null; let data = null;
try { try {
generating(true); generating(true);
if (
endpoint == "txt2img" &&
request.enable_hr &&
localStorage.getItem("openoutpaint/settings.hrfix-liar") == "true"
) {
/**
* try and make the new HRfix method useful for our purposes
* since it now returns an image that's been upscaled x the hr_scale parameter,
* we cheekily lie to SD and tell it that the original dimensions are _divided_
* by the scale factor so it returns something about the same size as we wanted initially
*/
// ok so instead, only do that if stableDiffusionData.hr_fix_lock_px > 0
if (stableDiffusionData.hr_fix_lock_px > 0) {
// find the appropriate scale factor for hrfix
var widthFactor =
request.width / stableDiffusionData.hr_fix_lock_px <= 4
? request.width / stableDiffusionData.hr_fix_lock_px
: 4;
var heightFactor =
request.height / stableDiffusionData.hr_fix_lock_px <= 4
? request.height / stableDiffusionData.hr_fix_lock_px
: 4;
var factor = heightFactor > widthFactor ? heightFactor : widthFactor;
request.hr_scale = hrFixScaleSlider.value = factor < 1 ? 1 : factor;
}
var newWidth = Math.floor(request.width / request.hr_scale);
var newHeight = Math.floor(request.height / request.hr_scale);
request.width = newWidth;
request.height = newHeight;
}
if (endpoint == "txt2img") {
request.denoising_strength = stableDiffusionData.hr_denoising_strength;
}
const response = await fetch(apiURL, { const response = await fetch(apiURL, {
method: "POST", method: "POST",
headers: { headers: {
@ -849,6 +815,50 @@ const dream_generate_callback = async (bb, resolution, state) => {
// Use txt2img if canvas is blank // Use txt2img if canvas is blank
if (isCanvasBlank(0, 0, bb.w, bb.h, visibleCanvas)) { if (isCanvasBlank(0, 0, bb.w, bb.h, visibleCanvas)) {
if (
!global.isOldHRFix &&
request.enable_hr &&
localStorage.getItem("openoutpaint/settings.hrfix-liar") == "true"
) {
/**
* try and make the new HRfix method useful for our purposes
* since it now returns an image that's been upscaled x the hr_scale parameter,
* we cheekily lie to SD and tell it that the original dimensions are _divided_
* by the scale factor so it returns something about the same size as we wanted initially
*/
// ok so instead, only do that if stableDiffusionData.hr_fix_lock_px > 0
if (stableDiffusionData.hr_fix_lock_px > 0) {
// find the appropriate scale factor for hrfix
var widthFactor =
request.width / stableDiffusionData.hr_fix_lock_px <= 4
? request.width / stableDiffusionData.hr_fix_lock_px
: 4;
var heightFactor =
request.height / stableDiffusionData.hr_fix_lock_px <= 4
? request.height / stableDiffusionData.hr_fix_lock_px
: 4;
var factor = heightFactor > widthFactor ? heightFactor : widthFactor;
request.hr_scale = hrFixScaleSlider.value = factor < 1 ? 1 : factor;
}
var newWidth = Math.floor(request.width / request.hr_scale);
var newHeight = Math.floor(request.height / request.hr_scale);
request.width = newWidth;
request.height = newHeight;
}
// For compatibility with the old HRFix API
if (global.isOldHRFix && request.enable_hr) {
request.firstphase_width = request.width / 2;
request.firstphase_height = request.height / 2;
}
// Only set this if HRFix is enabled in the first place
request.denoising_strength = request.enable_hr
? stableDiffusionData.hr_denoising_strength
: 1;
// Dream // Dream
_generate("txt2img", request, bb); _generate("txt2img", request, bb);
} else { } else {