Main reasons for performance differences between WebGL frameworks

Hello BabylonJS team,

I am not pretty sure, if this forum is the right place for my question, but I am writing a dissertation about a 3D visualization monitoring system.

I was discussing the pros and cons about some WebGL frameworks and the decision was between ThreeJS and BabylonJS.
One big part during this decision making dealt with the performance.

I read some articles and two main buzzwords I found were Change Detection and Culling. But I did not find enough information about how these concepts could cause performance differences.

Are these concepts implemented in WebGL and therefore equally for derived libraries or are there different approaches in each of the libraries?

Are there other big concepts that need to be taken into account analyzing performance differences?

Thanks a lot in regard
Jonas

Hey and welcome!
performance is not everything. Having great support is key as well :wink:

To your question: I believe that correctly used both engines will spit out the same (ish) performance.
One caveat I see often in these comparisons is that depending on the author knowledge of the frameworks they will end up with screwed conclusions :slight_smile:

Change detection (the need to update shaders) or culling (the system responsible to build what is visible on the screen) are implemented differently in both engines but at the end of the day they both do it in their ways :slight_smile:

I know I do not help here but I will not lie to you by stating that bjs is better than 3js on performance side because it would be a blatant lie :smiley:

1 Like

Hey and thank you for your answer. I tried to make a little analysis on the initial (built-in) performance.

I guess I have to point that out a bit more clearly in my dissertation. And I also came to the conclusion that ThreeJS is a little more performant (only examining a rudimentary scene without any own performance optimizations).

And it is pretty helpful to have a confirmation that both concepts are implemented individually in the frameworks. Thanks!

This is actually my point :slight_smile: This is not really true because maybe bjs does things differently but have options to do them as fast.

Anyway you get my point :smiley: