Skip to content
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

Chrome vs Safari disappearing objects #3725

Closed
Afterlife7481 opened this issue Aug 7, 2013 · 4 comments
Closed

Chrome vs Safari disappearing objects #3725

Afterlife7481 opened this issue Aug 7, 2013 · 4 comments
Labels

Comments

@Afterlife7481
Copy link

Running three.js revision 59
The code that I am running is basically a modified version of your periodic table example but with loads more objects of bigger size

I have tested this on several computers, OS and browsers and it seems that while

http://www.onthefuckingmoon.com/2013/

renders perfectly well on SAFARI it fails to display all the objects on CHROME (the exact same happens for chrome running on windows and os x)

here is a video of the bug: http://www.youtube.com/watch?v=nxv6c3K7vVE

You will need to zoom out to see the objects disappearing in CHROME

Please note that if I reduce the size of each object, then then will render fine on Chrome, so I think this is linked not only to the number of objects but also the size.

I am thinking this may be a bug, I hope this is the right place to report such anomaly.

Thanks

@arodic
Copy link
Contributor

arodic commented Aug 7, 2013

This bug keeps coming back in various shapes and forms.

I made a test case for this long time ago mentioned in Issue #3546
http://aleksandarrodic.com/p/css3dbug/

Here is the chromium bug. Please vote for it to be solved.
https://code.google.com/p/chromium/issues/detail?id=222926

@Afterlife7481
Copy link
Author

Thank you arodic, you are right this is probably a chromium bug.

I added a video of the bug for those interested: http://www.youtube.com/watch?v=nxv6c3K7vVE

All the best,
Tim

@Afterlife7481
Copy link
Author

update from chromium:

https://code.google.com/p/chromium/issues/detail?id=222926

#9 shawnsingh@chromium.org
I spent today debugging this, and diagnosed what's going wrong.

(1) when we compute visible content rect, we are returning an empty rect when the layer's draw transform is uninvertible. We should consider returning the full layer_bounds here instead. It will indeed cost extra painting, but there may exist cases where this uninvertible transform can still be rendered - the gl_renderer actually does a hacky flattenTo2d operation, which could make that uninvertible matrix into an invertible one that can correctly be rendered.

(2) After solving #1, gl_renderer was still getting uninvertible matrices. Then I found the real root of the bug here - many values of the matrix are becoming quite small. As a result, the determinant is also small, and causes the code to think that the matrix is uninvertible when it actually is invertible.

I was able to solve this by normalizing the matrix on-the-fly (scale all elements proportionally so that the 4th row, 4th column element is 1). However, this will add 1 division and 16 multiplications to the computation of IsInvertible() and GetInverse(). This is tolerable, but not desired...

One hacked option that I can think of: we can do a slightly imprecise normalization that only requires one division (which can likely be masked by other operations in the instruction pipeline in this version) and one multiplication. The tradeoff is that we may still hit the uninvertible transforms due to imprecision, though the chances of it occurring are significantly reduced.

@arodic
Copy link
Contributor

arodic commented Aug 9, 2013

shawnsingh@chromium.org fixed it. The patch is coming!

@mrdoob mrdoob closed this as completed Aug 10, 2013
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants