I came back on my qt3d migration and it seems that I have really poor performances with Qt 5.8 branch from git.
Here is what I am able to display with qt3d : It runs at 30 FPS on average (here Nsight and VS are reducing the performances). After taking a look on how the frame is processed, I saw that there is no sort to reduce the number of state changes. Is it a bug or I missed something? I also saw that you use glDrawElementsInstancedBaseVertex, so I certainly have to manage my meshes to allow the use of instancing. What are the requirements to make it works, only same geometry and shader program? 2016-09-27 11:09 GMT+02:00 Xavier Bigand <flamaros.xav...@gmail.com>: > The previous mail was filtered due to the weight, I forward it with an > external link for the picture. > > > ---------- Forwarded message ---------- > From: Xavier Bigand <flamaros.xav...@gmail.com> > Date: 2016-09-26 17:46 GMT+02:00 > Subject: Re: [Interest] [qt3d] Batching optimization > To: Sean Harmer <sean.har...@kdab.com> > Cc: interest@qt-project.org > > > > > 2016-09-26 15:03 GMT+02:00 Sean Harmer <sean.har...@kdab.com>: > >> Hi, >> >> On 26/09/2016 13:59, Xavier Bigand wrote: >> >>> Doesn't the scene graph of qt3d use the instancing and sort the draw >>> calls to reduce the number of state changes? >>> In our engine the win was big when I add the sort to reduce calls of >>> glUniform* and glBindTexture,... especially on Android and Windows. >>> >> >> Yes, we do that level of batching. What we do not do however, is >> dynamically combine geometry data into fewer numbers of VBOs or anything >> fancy with glMultiDrawIndirect. > > > > Nice to read. > > >> >> >> We don't use instancing for the moment because it's hard for us to >>> maintain the backend, it's one of reasons I am planning the migration to >>> qt3d. >>> >>> In my opinion for qt3d the API have to expose a flag on entity to allow >>> or not automatic batching. >>> >> >> Yes I was thinking of something along those lines but the details have >> yet to be worked out and to what extent can/should we batch? >> > > > Here is what we are rendering : > > > > > > A such scene is close to 10 000 draw calls, because we have 3 passes > (light scattering occlusion, Sun Shadow Map, Normal rendering). > As the user is able to paint all parts of objects those entities have > separated meshes and don't use texture atlas, so it increase a lot the > number of draw calls. > Walls are generated by faces (6 per wall), but here the number of draw > calls is small compared to those for objects. > > There is some difficulties to be able to batch automatically our objects > with a win : > - Some have a lot of vertices (> 10 000), and applying the transformation > matrix on CPU could cost as much as the GPU win > - All textures are compressed (pvrtc, dxtc and etc1), so putting them in > a atlas might be non trivial depending on formats > - Having a good management of pre-allocated geometry buffers (I think > that a pool is necessary) > - There is some check to do before merging geometries in the same buffer > (some types aren't compatible, triangle, line, triangle_strip,..) > > I think that I have to progress on our qt3d migration before being able to > compare performances between OpenGL and DirectX 12 backends. If there is a > good win, so it will certainly not interesting to implement an advanced > batching system just for older devices that will stay on OpenGL. > > > > >> >> Cheers, >> >> Sean >> >> Else the automatic batching could be applied on meshes that doesn't have >>> a transformation and don't require to be rendered in a particular order >>> (like those with alpha). >>> >>> I'll made some tests on our engine to evaluate the performance win, it >>> may be insignificance due to the sort. >>> >>> >>> 2016-09-25 11:55 GMT+02:00 Sean Harmer <sean.har...@kdab.com >>> <mailto:sean.har...@kdab.com>>: >>> >>> >>> Hi Xavier, >>> >>> On 23/09/2016 17:13, Xavier Bigand wrote: >>> >>> Hi, >>> >>> Does qt3d backend capable to batch geometries to reduce the >>> number of >>> draw calls? >>> >>> In our case this optimization should improve performances a lot, >>> because >>> we generate dynamically geometries that doesn't change often and >>> are >>> created in world coordinates (no transformations applied). >>> >>> >>> Qt 3D does not yet do batching automatically. However we do support >>> stuff that may help you. >>> >>> * You can use instancing if you have GL 3.2 or newer >>> * You can do your own batching by putting such geometry into a >>> single buffer, either >>> >>> ** to be rendered as a single entity if you don't need interaction >>> with the individual parts or >>> ** to be rendered as separate entities with GeometryRenderer's all >>> referencing the same Buffer. >>> >>> The latter doesn't reduce the draw call count but does minimise the >>> state changes related to binding different buffers. >>> >>> We hope to add automatic batching in the future but we're still >>> looking into a nice API to expose this without reducing the control >>> the user has over organising their data. >>> >>> Cheers, >>> >>> Sean >>> >>> >>> >>> >>> -- >>> Xavier >>> >>> >>> _______________________________________________ >>> Interest mailing list >>> Interest@qt-project.org <mailto:Interest@qt-project.org> >>> http://lists.qt-project.org/mailman/listinfo/interest >>> <http://lists.qt-project.org/mailman/listinfo/interest> >>> >>> >>> -- >>> Dr Sean Harmer | sean.har...@kdab.com <mailto:sean.har...@kdab.com> >>> | Managing Director UK >>> KDAB (UK) Ltd, a KDAB Group company >>> Tel. +44 (0)1625 809908 <tel:%2B44%20%280%291625%20809908>; Sweden >>> (HQ) +46-563-540090 <tel:%2B46-563-540090> >>> Mobile: +44 (0)7545 140604 <tel:%2B44%20%280%297545%20140604> >>> KDAB - Qt Experts >>> _______________________________________________ >>> Interest mailing list >>> Interest@qt-project.org <mailto:Interest@qt-project.org> >>> http://lists.qt-project.org/mailman/listinfo/interest >>> <http://lists.qt-project.org/mailman/listinfo/interest> >>> >>> >>> >>> >>> -- >>> Xavier >>> >>> >>> _______________________________________________ >>> Interest mailing list >>> Interest@qt-project.org >>> http://lists.qt-project.org/mailman/listinfo/interest >>> >>> >> -- >> Dr Sean Harmer | sean.har...@kdab.com | Managing Director UK >> KDAB (UK) Ltd, a KDAB Group company >> Tel. +44 (0)1625 809908; Sweden (HQ) +46-563-540090 >> Mobile: +44 (0)7545 140604 >> KDAB - Qt Experts >> _______________________________________________ >> Interest mailing list >> Interest@qt-project.org >> http://lists.qt-project.org/mailman/listinfo/interest >> > > > > -- > Xavier > > > > -- > Xavier > -- Xavier
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest