Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Conversation

@bdero
Copy link
Member

@bdero bdero commented Mar 26, 2024

Resolves flutter/flutter#144333. (Specifically, this follow-up issue)

When drawing objects with a perspective transform, the rasterizer applies perspective correction for interpolated vertex attributes. By absorbing W and replacing Z with a discrete value, we were essentially removing all perspective information and disabling perspective correction.

Instead, we can manipulate the Entity transform to remap the output Z range to fit within the small depth slices that each Entity is allotted.

The golden draws a clip sandwich:

  1. Draw and restore a difference clip before drawing the airplane image. This clip will get drawn to the depth buffer behind the airplane image.
  2. Draw an oval clip that applies to the airplane image. This clip will get drawn in front of the airplane image on the depth buffer.
  3. Draw the airplane image with a 3D rotation and perspective transform.
  4. Draw a semi-translucent blue circle atop all previous draws.

Before:

Screen.Recording.2024-03-25.at.10.51.30.PM.mov

After:

Screen.Recording.2024-03-25.at.10.46.43.PM.mov

@bdero bdero changed the title [Impeller] Transform geometry to a safe depth range instead of forcing discrete depth values. [Impeller] Transform geometry to a safe depth ranges instead of forcing discrete depth values in vertex shaders. Mar 26, 2024
@bdero bdero changed the title [Impeller] Transform geometry to a safe depth ranges instead of forcing discrete depth values in vertex shaders. [Impeller] Transform geometry to safe depth ranges instead of forcing discrete depth values. Mar 26, 2024
@bdero bdero force-pushed the bdero/clip-depth-range branch from 6a66e8f to 40ab7f7 Compare March 26, 2024 08:00
Copy link
Contributor

@jonahwilliams jonahwilliams left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@bdero bdero force-pushed the bdero/clip-depth-range branch from f13b027 to 19cf165 Compare March 26, 2024 18:51
@flutter-dashboard
Copy link

Golden file changes have been found for this pull request. Click here to view and triage (e.g. because this is an intentional change).

If you are still iterating on this change and are not ready to resolve the images on the Flutter Gold dashboard, consider marking this PR as a draft pull request above. You will still be able to view image results on the dashboard, commenting will be silenced, and the check will not try to resolve itself until marked ready for review.

Changes reported for pull request #51673 at sha afdb653

@flutter-dashboard
Copy link

Golden file changes are available for triage from new commit, Click here to view.

Changes reported for pull request #51673 at sha 81fb9ca

@bdero bdero added the autosubmit Merge PR when tree becomes green via auto submit App label Mar 27, 2024
@auto-submit auto-submit bot merged commit 9d95743 into flutter:main Mar 27, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 27, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 27, 2024
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Mar 27, 2024
…145851)

flutter/engine@b7dddee...d656625

2024-03-27 [email protected] Add local paths for the Dart macros package, which is now a dependency of the analyzer package (flutter/engine#51709)
2024-03-27 [email protected] [Impeller] Transform geometry to safe depth ranges instead of forcing discrete depth values. (flutter/engine#51673)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC [email protected],[email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

autosubmit Merge PR when tree becomes green via auto submit App e: impeller will affect goldens

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[impeller][ios][regression] Text is transformed incorrectly

2 participants