I came across this very interesting article on dynamic imposters and decided that it was worth giving this technic a shot.
Article TLDR :
Dynamic imposters are 2D sprites generated at render time to impersonate meshes far from the camera. It is supposed to help performance while offering better realism and versatility ( and less work in the end ) than offline-generated sprites.
As it looked promising I forked three and added the functionality in the examples in case it was worth filing a PR, and this is the result of my experiment :
- live example ( wait ~10 seconds for the trucks to appear )
- example code
- impostor class
As it turns out, the performance is worse than just rendering the original objects, at least in this specific scene, with my laptop. The only thing I seem to do differently from the article is to render each impostor on a separate render target, whereas they advise batching several renders on a given render target, but according to my test switching render target only takes 0.1ms and redraw happen rarely ( that’s the whole point ), so I didn’t bother.
So here am I wondering if my implementation is bad or if I just expected too much from this, or if it’s really useful only in a specific context. @Fyrestar I saw you mentioned this technic a lot and you seemed to be satisfied with your own experiments, so I would be interested about your thoughts on the matter.