Implement webgl draft ext WEBGL_multi_draw
Categories
(Core :: Graphics: CanvasWebGL, enhancement, P3)
Tracking
()
People
(Reporter: jgilbert, Unassigned)
References
(Blocks 1 open bug, )
Details
(Keywords: dev-doc-needed, Whiteboard: gfx-noted)
Also WEBGL_multi_draw_instanced:
https://www.khronos.org/registry/webgl/extensions/WEBGL_multi_draw_instanced/
Updated•6 years ago
|
Reporter | ||
Updated•6 years ago
|
Comment 1•4 years ago
|
||
Are there any plan or news on this?
We're planning to implement a web project that will really benefit from multi_draw and it would be bad to have a better implementation only available on chrome and chromium based browsers.
Reporter | ||
Comment 2•4 years ago
|
||
How's the perf if you use non-multidraw in Firefox? Chrome is generally much, much more sensitive to many (single-)draw calls than Firefox.
Comment 3•4 years ago
|
||
We want to render complex tree like cad structures with multiple parts, so even instancing could help.
We defined 3 strategies
- One draw call for part
- Create on big triangle blob and draw that using a texture for materials
- MultiDraw
We would like to not use the 2nd solution as the main overhead is too much.
Using the other two strategies, with our sample datasets, we get
Chrome + One Draw Call For Part = 50ms render time (20 fps)
Chrome + MultiDraw = ~1ms render time (capped at 30fps)
Firefox + One Draw Call For Part = 70ms render time (~15 fps)
Firefox + MultiDraw = Not Available
And we don't have control on the input scene to render so we can't do magic optimizations.
In this situation Chrome is really offering a nice user expirience that we're not able to reproduce in Firefox for now but we want to!
Comment 4•3 years ago
|
||
We Three.js are thinking of using WEBGL_multi_draw
https://github.com/mrdoob/three.js/issues/22376
It will be really nice if Firefox supports the WEBGL_multi_draw extension.
Reporter | ||
Comment 6•3 years ago
|
||
We have to prototype it to see if the performance is worth it.
Reporter | ||
Comment 7•3 years ago
|
||
Specifically, even better than implementing this would be getting draw call performance good enough that it's not needed.
Chrome is a little different than Firefox here, as (historically?) their js<->cpp bindings code is slower, so many-draw-calls will much more often slower for them than one multi-draw call.
Updated•2 years ago
|
Reporter | ||
Comment 8•7 months ago
|
||
I don't think this is how we should try to optimize this case.
Our bindings code in this case doesn't really show up in profiles, so the only benefit here would be optimization opportunities around not re-checking come kinds of validation each call. That validation is decently cached, so this isn't probably a huge win anyways.
Effectively, we should be optimizing for this use-case, but we don't think we need an extension to do so.
Description
•