Issue metadata
Sign in to add a comment
|
Flickering on Poster Circle |
||||||||||||||||||||||
Issue descriptionChrome Version: 56.0.2924.87 (reproduced back in r403559) OS: Linux What steps will reproduce the problem? (1) Open https://webkit.org/blog-files/3d-transforms/poster-circle.html (2) Observe posters for several seconds. Occasionally seeing flickering on 1/2 of a poster. This issue bisects to the following change: commit 3e9082bfc63be6b304543ee499354fd71ea063ae [log] [tgz] author tobiasjs <tobiasjs@chromium.org> Fri Jul 01 23:18:38 2016 Perform BSP polygon splitting and orientation selection in a single step. This eliminates redundant testing of vertices for orientation with respect to the splitting polygon. Previously, up to 3 sets of tests were made (once to determine whether the polygon was split, then once during the split, and then finally to determine the orientation of the split polygons. Merging these steps in order to reuse calculated values also eliminates the possibility that different calculations in testing and splitting could be inconsistent. BUG=606984 Review-Url: https://codereview.chromium.org/2043283002
,
Feb 23 2017
Ok, I've found a static repro case:
<html>
<style type="text/css">
#stage {
margin: 150px auto;
width: 600px;
height: 400px;
-webkit-perspective: 800;
}
#rotate {
margin: 0 auto;
width: 600px;
height: 400px;
-webkit-transform-style: preserve-3d;
}
.ring {
margin: 0 auto;
height: 110px;
width: 600px;
-webkit-transform-style: preserve-3d;
}
.ring > div {
background-color: #995C7F;
}
.poster {
position: absolute;
left: 250px;
width: 100px;
height: 100px;
}
</style>
</head>
<body>
<div id="stage">
<div id="rotate" style="transform: rotateX(139.571deg);">
<div id="ring-1" class="ring" style="transform: rotateY(325.667deg);">
<div class="poster" style="transform: rotateY(30deg) translateZ(200px);"></div>
</div>
<div id="ring-2" class="ring" style="transform: rotateY(-244.25deg);">
<div class="poster" style="transform: rotateY(240deg) translateZ(200px);"></div>
</div>
</div>
</div>
</body>
</html>
,
Feb 23 2017
The vertex_distance array in SplitPolygon has signs [ 0, 0, -, + ] Which indicates that floating point rounding has ended up creating a polygon that is not flat, which is why the splitting is failing.
,
Feb 23 2017
#1 I haven't tried on a local build, as I was able to bisect to the one revision with bot builds.
,
Mar 1 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/02a3371e8aa5f5ec354509e3625371cbf6f81707 commit 02a3371e8aa5f5ec354509e3625371cbf6f81707 Author: tobiasjs <tobiasjs@chromium.org> Date: Wed Mar 01 09:01:38 2017 Correct polygon splitting in an almost-coplanar case. In the case described in the associated bug, the signs of the vertices of the quad to be split are [ 0 0 + - ], which means that floating point rounding has resulted in a polygon that is not flat. Originally one of the two points that lies on the splitting plane was not being included in either output polygon, which caused the result to be incorrect. This corrects the case when two consecutive points are on the splitting plane. BUG= 693826 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel Review-Url: https://codereview.chromium.org/2714243002 Cr-Commit-Position: refs/heads/master@{#453888} [modify] https://crrev.com/02a3371e8aa5f5ec354509e3625371cbf6f81707/cc/quads/draw_polygon.cc [modify] https://crrev.com/02a3371e8aa5f5ec354509e3625371cbf6f81707/cc/quads/draw_polygon_unittest.cc
,
Mar 1 2017
|
|||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||
Comment 1 by tobiasjs@chromium.org
, Feb 20 2017