You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
After conversion this scene has 583 nodes with a total of 610 mesh primitives, but many of these are instanced; the cumulative instance count is around 27K.
three.js has an open PR for support of this extension; using that, it takes ~140ms to fully deserialize the file including mesh parsing etc., and ~3ms each frame to submit draw commands to the GPU, with scene looking a bit like this
In comparison, Babylon.JS takes ~16 seconds (~114x longer) to deserialize the file, and ~55ms (~18x longer) to render each frame on the CPU. The GPU cost looks comparable, maybe better on Babylon side.
Here's a breakdown of loading process, with a separate section for createDefaultCamera (it seems to run into some sort of N^2 behavior?), and a few other expensive bits:
Here's a breakdown of a single render frame:
The most severe issues here are the problem with createDefaultCamera and the render frame performance. I'm wondering if Babylon.JS provides a more efficient way to represent instanced draws? Right now it looks like the loader just creates a node per mesh, and presumably then relies on auto-instancing functionality to dispatch draw calls more efficiently, but it looks like the scene graph checks are not very fast here.
The text was updated successfully, but these errors were encountered:
I've been testing instancing using models provided in KhronosGroup/glTF#1699; attached is the ice stadium model encoded using EXT_mesh_gpu_instancing.
stadium.glb.zip
After conversion this scene has 583 nodes with a total of 610 mesh primitives, but many of these are instanced; the cumulative instance count is around 27K.
three.js has an open PR for support of this extension; using that, it takes ~140ms to fully deserialize the file including mesh parsing etc., and ~3ms each frame to submit draw commands to the GPU, with scene looking a bit like this
In comparison, Babylon.JS takes ~16 seconds (~114x longer) to deserialize the file, and ~55ms (~18x longer) to render each frame on the CPU. The GPU cost looks comparable, maybe better on Babylon side.
Here's a breakdown of loading process, with a separate section for createDefaultCamera (it seems to run into some sort of N^2 behavior?), and a few other expensive bits:
Here's a breakdown of a single render frame:
The most severe issues here are the problem with
createDefaultCamera
and the render frame performance. I'm wondering if Babylon.JS provides a more efficient way to represent instanced draws? Right now it looks like the loader just creates a node per mesh, and presumably then relies on auto-instancing functionality to dispatch draw calls more efficiently, but it looks like the scene graph checks are not very fast here.The text was updated successfully, but these errors were encountered: