| 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;
|
| };
|
| },
|
| });
|
|
|