| | import { app } from "../../../scripts/app.js"; |
| | app.registerExtension({ |
| | name: "pysssss.KSamplerAdvDenoise", |
| | async beforeRegisterNodeDef(nodeType) { |
| | |
| | const origGetExtraMenuOptions = nodeType.prototype.getExtraMenuOptions; |
| | nodeType.prototype.getExtraMenuOptions = function (_, options) { |
| | const r = origGetExtraMenuOptions?.apply?.(this, arguments); |
| |
|
| | let stepsWidget = null; |
| | let startAtWidget = null; |
| | let endAtWidget = null; |
| | for (const w of this.widgets || []) { |
| | if (w.name === "steps") { |
| | stepsWidget = w; |
| | } else if (w.name === "start_at_step") { |
| | startAtWidget = w; |
| | } else if (w.name === "end_at_step") { |
| | endAtWidget = w; |
| | } |
| | } |
| |
|
| | if (stepsWidget && startAtWidget && endAtWidget) { |
| | options.push( |
| | { |
| | content: "Set Denoise", |
| | callback: () => { |
| | const steps = +prompt("How many steps do you want?", 15); |
| | if (isNaN(steps)) { |
| | return; |
| | } |
| | const denoise = +prompt("How much denoise? (0-1)", 0.5); |
| | if (isNaN(denoise)) { |
| | return; |
| | } |
| |
|
| | stepsWidget.value = Math.floor(steps / Math.max(0, Math.min(1, denoise))); |
| | stepsWidget.callback?.(stepsWidget.value); |
| |
|
| | startAtWidget.value = stepsWidget.value - steps; |
| | startAtWidget.callback?.(startAtWidget.value); |
| |
|
| | endAtWidget.value = stepsWidget.value; |
| | endAtWidget.callback?.(endAtWidget.value); |
| | }, |
| | }, |
| | null |
| | ); |
| | } |
| |
|
| | return r; |
| | }; |
| | }, |
| | }); |
| |
|