Skip to main content
GameDev.net gamedev.net

PRO Tired of ads? Read GameDev.net ad-free and help keep the community independent with GameDev Pro — $3/month.

Toasty Update #6

Toasty Update #6

nhold
nhold
Disciple of Jonato · · 1 min read
2,816 0
So in this update the big change is proper depth ordering, until now the depth of things drawn on screen using the SFMLRenderSystem was based on what order the component was added to the system. The new way just utilises the z component in the entities position property and sorts the vector every update and while may not be that great in my tests has almost no performance loss.

I also changed the render system so that it no longer directly handles the texture caching responsibility and it is now handled by the TextureResourceLoader which it holds, I also plan on doing the same thing with culling and sorting which will sort of work like this:

  • User adds a bunch of render components to some entities, then on every update:
  • RenderSystem request a cull by the assigned CullingMechanism (If one is assigned).
  • RenderSystem requests a sort from the culled components using the SortingMechanism (If one is assigned).
  • RenderSystem draws the culled and sorted vector.

    Actually just talking about it I decided to do it, at the moment it just compares the bounds of all components against the current main view every update. I need to come up with a better way to cull objects though, a QuadTree comes to mind, but not sure how to update it I might have to add an isDirty flag to an entity and whenever it's position is changed update that.

    So here is culling and sorting working on 7k+ entities:



    Compared to no culling but sorting:



    That's a difference of ~180 FPS!

    Pretty good IMO!

Discussion

Loading comments...