From 98c197e8b11317d286998fd6ebdbacb352ebcf55 Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Mon, 3 Feb 2025 17:28:07 -0800 Subject: [PATCH] Add LiteGraph.Canvas.LowQualityRenderingZoomThreshold setting (#2412) Co-authored-by: github-actions --- src/components/graph/GraphCanvas.vue | 11 +++++++++++ src/constants/coreSettings.ts | 13 +++++++++++++ src/locales/en/settings.json | 4 ++++ src/locales/fr/settings.json | 4 ++++ src/locales/ja/settings.json | 4 ++++ src/locales/ko/settings.json | 4 ++++ src/locales/ru/settings.json | 4 ++++ src/locales/zh/settings.json | 4 ++++ src/types/apiTypes.ts | 3 ++- 9 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/components/graph/GraphCanvas.vue b/src/components/graph/GraphCanvas.vue index 97b165896..6d2fe1670 100644 --- a/src/components/graph/GraphCanvas.vue +++ b/src/components/graph/GraphCanvas.vue @@ -142,6 +142,17 @@ watchEffect(() => { } }) +watchEffect(() => { + const lowQualityRenderingZoomThreshold = settingStore.get( + 'LiteGraph.Canvas.LowQualityRenderingZoomThreshold' + ) + if (canvasStore.canvas) { + canvasStore.canvas.low_quality_zoom_threshold = + lowQualityRenderingZoomThreshold + canvasStore.canvas.setDirty(/* fg */ true, /* bg */ true) + } +}) + watchEffect(() => { const linkMarkerShape = settingStore.get('Comfy.Graph.LinkMarkers') const { canvas } = canvasStore diff --git a/src/constants/coreSettings.ts b/src/constants/coreSettings.ts index 6d1932988..46bd1d686 100644 --- a/src/constants/coreSettings.ts +++ b/src/constants/coreSettings.ts @@ -734,5 +734,18 @@ export const CORE_SETTINGS: SettingParams[] = [ defaultValue: false, type: 'boolean', versionAdded: '1.8.8' + }, + { + id: 'LiteGraph.Canvas.LowQualityRenderingZoomThreshold', + name: 'Low quality rendering zoom threshold', + tooltip: 'Render low quality shapes when zoomed out', + type: 'slider', + attrs: { + min: 0.1, + max: 1, + step: 0.01 + }, + defaultValue: 0.6, + versionAdded: '1.9.1' } ] diff --git a/src/locales/en/settings.json b/src/locales/en/settings.json index fe9362a5f..9d9c715a0 100644 --- a/src/locales/en/settings.json +++ b/src/locales/en/settings.json @@ -317,6 +317,10 @@ "Topbar (2nd-row)": "Topbar (2nd-row)" } }, + "LiteGraph_Canvas_LowQualityRenderingZoomThreshold": { + "name": "Low quality rendering zoom threshold", + "tooltip": "Render low quality shapes when zoomed out" + }, "LiteGraph_Canvas_MaximumFps": { "name": "Maximum FPS", "tooltip": "The maximum frames per second that the canvas is allowed to render. Caps GPU usage at the cost of smoothness. If 0, the screen refresh rate is used. Default: 0" diff --git a/src/locales/fr/settings.json b/src/locales/fr/settings.json index 60c1df387..40dee6ea0 100644 --- a/src/locales/fr/settings.json +++ b/src/locales/fr/settings.json @@ -317,6 +317,10 @@ "Topbar (2nd-row)": "Barre supérieure (2ème rangée)" } }, + "LiteGraph_Canvas_LowQualityRenderingZoomThreshold": { + "name": "Seuil de zoom pour le rendu de faible qualité", + "tooltip": "Rendre des formes de faible qualité lorsqu'on est dézoomé" + }, "LiteGraph_Canvas_MaximumFps": { "name": "FPS maximum", "tooltip": "Le nombre maximum d'images par seconde que le canevas est autorisé à rendre. Limite l'utilisation du GPU au détriment de la fluidité. Si 0, le taux de rafraîchissement de l'écran est utilisé. Par défaut : 0" diff --git a/src/locales/ja/settings.json b/src/locales/ja/settings.json index b99c7956e..b8ae157ea 100644 --- a/src/locales/ja/settings.json +++ b/src/locales/ja/settings.json @@ -317,6 +317,10 @@ "Topbar (2nd-row)": "トップバー(2行目)" } }, + "LiteGraph_Canvas_LowQualityRenderingZoomThreshold": { + "name": "低品質レンダリングズーム閾値", + "tooltip": "ズームアウト時に低品質の形状をレンダリングする" + }, "LiteGraph_Canvas_MaximumFps": { "name": "最大FPS", "tooltip": "キャンバスがレンダリングできる最大フレーム数です。スムーズさの代わりにGPU使用量を制限します。0の場合、画面のリフレッシュレートが使用されます。デフォルト:0" diff --git a/src/locales/ko/settings.json b/src/locales/ko/settings.json index 9ea3120b0..792018265 100644 --- a/src/locales/ko/settings.json +++ b/src/locales/ko/settings.json @@ -317,6 +317,10 @@ "Topbar (2nd-row)": "상단바 (2번째 행)" } }, + "LiteGraph_Canvas_LowQualityRenderingZoomThreshold": { + "name": "저품질 렌더링 줌 임계값", + "tooltip": "줌 아웃시 저품질 도형 렌더링" + }, "LiteGraph_Canvas_MaximumFps": { "name": "최대 FPS", "tooltip": "캔버스가 렌더링할 수 있는 최대 프레임 수입니다. 부드럽게 동작하도록 GPU 사용률을 제한 합니다. 0이면 화면 주사율로 작동 합니다. 기본값: 0" diff --git a/src/locales/ru/settings.json b/src/locales/ru/settings.json index 41f1a4f0a..b0ba7af7d 100644 --- a/src/locales/ru/settings.json +++ b/src/locales/ru/settings.json @@ -317,6 +317,10 @@ "Topbar (2nd-row)": "Топбар (2-й ряд)" } }, + "LiteGraph_Canvas_LowQualityRenderingZoomThreshold": { + "name": "Порог масштабирования для рендеринга низкого качества", + "tooltip": "Рендеринг фигур низкого качества при уменьшении масштаба" + }, "LiteGraph_Canvas_MaximumFps": { "name": "Максимум FPS", "tooltip": "Максимальное количество кадров в секунду, которое холст может рендерить. Ограничивает использование GPU за счёт плавности. Если 0, используется частота обновления экрана. По умолчанию: 0" diff --git a/src/locales/zh/settings.json b/src/locales/zh/settings.json index e06ce6980..30418cea8 100644 --- a/src/locales/zh/settings.json +++ b/src/locales/zh/settings.json @@ -317,6 +317,10 @@ "Topbar (2nd-row)": "顶部栏 (第二行)" } }, + "LiteGraph_Canvas_LowQualityRenderingZoomThreshold": { + "name": "低质量渲染缩放阈值", + "tooltip": "在缩小时渲染低质量形状" + }, "LiteGraph_Canvas_MaximumFps": { "name": "最大FPS", "tooltip": "画布允许渲染的最大帧数。限制GPU使用以换取流畅度。如果为0,则使用屏幕刷新率。默认值:0" diff --git a/src/types/apiTypes.ts b/src/types/apiTypes.ts index e603371c6..b29c6a88c 100644 --- a/src/types/apiTypes.ts +++ b/src/types/apiTypes.ts @@ -559,7 +559,8 @@ const zSettings = z.record(z.any()).and( 'Comfy.Server.LaunchArgs': z.record(z.string(), z.string()), 'LiteGraph.Canvas.MaximumFps': z.number(), 'Comfy.Workflow.ConfirmDelete': z.boolean(), - 'Comfy.RerouteBeta': z.boolean() + 'Comfy.RerouteBeta': z.boolean(), + 'LiteGraph.Canvas.LowQualityRenderingZoomThreshold': z.number() }) .optional() )