-
Notifications
You must be signed in to change notification settings - Fork 560
fix(load3d): update renderer pixel ratio on canvas zoom to fix LOD resolution #11734
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
kaili-yang
wants to merge
11
commits into
main
Choose a base branch
from
fix/load3d-lod-zoom-resolution
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
76714b3
fix(load3d): update renderer pixel ratio on canvas zoom to fix LOD re…
kaili-yang c093637
test(load3d): add unit tests for zoom-aware pixel ratio in handleResize
kaili-yang 3b91cd5
test(load3d): E2E regression test for LOD zoom resolution fix
kaili-yang b281e0d
test(load3d): fix E2E LOD test to use programmatic zoom instead of sc…
kaili-yang 928046f
test(load3d): fix LOD E2E test to call node.onResize with size arg
kaili-yang 6f088dc
test(load3d): add SceneManager unit tests for captureScene pixelRatio…
kaili-yang 6838a44
refactor(load3d): restore renderer state in finally block on capture …
kaili-yang 768f1d4
fix(load3d): restore camera projection and dispose temp materials aft…
kaili-yang 1c6fdd4
perf(load3d): debounce zoom-driven resize and cap pixel ratio at 3x
kaili-yang f908653
test: assert captureScene restores camera projection and disposes tem…
kaili-yang 4cb29c3
fix(load3d): add missing getSize/getPixelRatio/setPixelRatio mocks to…
kaili-yang File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| import { expect } from '@playwright/test' | ||
|
|
||
| import { load3dTest as test } from '@e2e/fixtures/helpers/Load3DFixtures' | ||
|
|
||
| test.describe('Load3D LOD', () => { | ||
| test( | ||
| 'canvas pixel dimensions scale with ComfyUI canvas zoom level', | ||
| { tag: '@smoke' }, | ||
| async ({ comfyPage, load3d }) => { | ||
| await expect(load3d.canvas).toBeVisible() | ||
|
|
||
| await expect | ||
| .poll(() => load3d.canvas.evaluate((el: HTMLCanvasElement) => el.width)) | ||
| .toBeGreaterThan(0) | ||
|
|
||
| const initialWidth = await load3d.canvas.evaluate( | ||
| (el: HTMLCanvasElement) => el.width | ||
| ) | ||
|
|
||
| await comfyPage.page.evaluate(() => { | ||
| const node = window.app!.graph!.nodes[0] | ||
| window.app!.canvas.ds.scale = 2.0 | ||
| node.onResize?.(node.size) | ||
| }) | ||
| await comfyPage.nextFrame() | ||
|
|
||
| await expect | ||
| .poll(() => load3d.canvas.evaluate((el: HTMLCanvasElement) => el.width)) | ||
| .toBeGreaterThan(initialWidth) | ||
| } | ||
| ) | ||
| }) | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
issue: This assertion is currently failing in CI on this PR head. The log shows
initialWidthis374, and aftercanvasOps.zoom(-120, 5)the polledcanvas.widthis still374through all retries. Since this test is the regression coverage for the feature, we should fix the actual zoom-to-resize path (or the test setup if it is not exercising the real zoom path) before merging.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in the latest commits. The test now calls
node.onResize(node.size)directly after settingds.scale = 2.0, which invokesload3d.handleResize()via theonResizechain without relying on theinitScaleSync → appScalePercentage → Vue watchpath (which requiresGraphCanvasMenuto be mounted). CI passes on the latest head.