dmvaldman / samsara

Continuous UI
http://samsaraJS.org
Other
1.05k stars 66 forks source link

Non-nested CSS3D seems to be getting bad in Chrome. #74

Open trusktr opened 7 years ago

trusktr commented 7 years ago

For example, check out the old Famous periodic table: http://disrupt.famo.us/periodic402/

Look like Chrome hasn't been keeping their CSS3D (non-nested stuff) in good working order, as the demo flickers a lot for me in Chrome 60 in MacOS on a new MacBook Pro I just got in June.

Nested CSS3D seems to be doing better, but it still has problems too.

It might be worth making a nested renderer for Samsara to see which one works better.

trusktr commented 7 years ago

It wouldn't be too hard: you would simply not have to calculate world transforms in this case, only nest the elements and apply their local transforms (the HTML engine calculates the world transforms instead, when it traverses the DOM). You'd need to apply preserve-3d to all of them.

I'm sure you know how it works. ;)

dmvaldman commented 7 years ago

I am noticing a lot more stuttering. Still not sure as to why though. What's your reason for thinking it has to do with unnested DOM?

culyun commented 7 years ago

It's a pretty recent regression. Tested demo with Opera 46 and Opera 48 on the same box. Opera 46 was smooth, Opera 48 stuttered.

trusktr commented 7 years ago

@dmvaldman I'm not sure it's a regression for non-nested DOM actually. Maybe it would be useful having both forms of renderer so that we can test it?

@culyun Nice catch. If you can post that at http://crbug.com, it will help Chrome authors determine which version of Blink caused it since you know the Opera versions.

culyun commented 7 years ago

@trusktr I've reported issue [upstream|https://bugs.chromium.org/p/chromium/issues/detail?id=770545]

NB. one big change that happened in Chrome 60 (I think) was the introduction of webasm. So it might be worth fishing around for other performance regressions.