Try to run the : webgl_instancing_performance
I found that when use the ThreeJS to render stuff no matter if i just render in native drawcalls or merge them to render once, or use instance rendering, the FPS is almost that same, sometimes the native mode is even faster with chrome + any integrated graphics card.
The graphics card I use is Inter(R) HD Graphics 630(desktop) and Intel® Iris® Plus Graphics 655(macbook pro)
If I tested on Discrete graphics then i can see the difference, which merged > instance > native.
If I use the same integrated card + firefox, then I can see the FPS difference: merged > instance > native, too , So I am sure it’s Chromes’ issue.
However the key problems is, the FPS in chrome is faster than firefox with integrated card!.
for chrome maybe it’s native(27) > merged(25) = instance(25), but for firefox it’s merged(22) > instance(20) > native(18), so basically chrome performs better than firefox but not showing the effect of any merge drawall effects.
I suppose it’s not a bug, but chrome did something with Integrated Graphics Card inside but I can not understand.
If merge or instance can not make a big difference, then how can we optimize the rendering speed with Chrome.
I am sure this is not threejs’ problem, just any idea what’s the root cause?
I’ve noticed this with this example as well on my mobile device with adreno 506 GPU. I’ve tested quite a few count values, and there is no clear difference between instanced, merged, or naive. If anything, instanced is the slowest of the three but only by 1 or 2 fps.
It’s indeed strange that the naive approach performs better in Chrome
The result in Firefox seems to perform better. With 10.000 objects, I get 36 FPS for instanced and merged settings. 26 FPS with the naive approach. Tested on macOS.
I’m wondering if this might have something to do with the demo itself, in addition to the browser and GPU… the “naive” approach performs better than I’d expect in this example.
without changing anything in the code, the FPS works as expected on firefox or other browsers, so if there is nothing THRES.JS process chrome differently, it should be the browser’s bug?
I tested this on my laptop, latest chrome beta 81, GTX 970m. I’m not sure if this configuration was giving problems before, but now there’s a big difference between naive and the other two.
Naive is much slower, as expected.
Yes, I tested it on my AMD desktop and it works as expectation. Instance has better performance than Naive. But for Intel UHD620 on my laptop, the issue can be reproduced. So as https://bugs.chromium.org/p/chromium/issues/detail?id=1043925 said, it maybe a Intel specific issue?
But I have tested this on my intel card, chrome has this issue, but Firefox is fine, they both use Angle. So why Firefox is ok but chrome is wrong? Just so wired
I actually wasn’t really expecting any major FPS difference between instancing and merged, just a very different memory footprint. What do you see at 50k instances? I’m curious if that’d be consistent across different mesh sizes and devices.