GPU Resident Drawer for "static" meshes

GPU Resident Drawer looks fantastic! Are there plans on having more control over what is submitted into the renderer?
For example, in my game most of my world is static, and thus doesn’t need to be constantly checked for transformation changes.
It would be incredible to be able to have an API to submit / remove mesh+materials to the resident drawer with flags such as “update transform”, and then manually removing them as well. This would allow users to have the ease of use of the Resident Drawer over the manual nature of BRG, but also have more control over it and avoid having the resident drawer need to scan the scene.

Are there any plans for a solution related to this? Thanks!

2 Likes

So there are multiple things here I think. First there is definitely intent to optimize for static objects. In fact we could offer a way to entirely remove the GameObjects from the world after they have been uploaded to GPUResidentDrawer. This way it would only keep the relevant rendering data stored in an efficient data-oriented format internally. That’s of course only possible for the static rendering objects that are not gameplay impacting. There is a similar optimization with DOTS Entities Graphics available, and I think Time Ghost used it for vegetation.

Second, about having more control over what is submitted to GRD. Currently only GameObjects are supported. But it would be possible to introduce a public API that allows users to inject custom instances in GRD out of thin air. So without any GameObject as source data.

Can’t give a timeline on any of those, but we definitely discussed all of that internally. If the demand is high, perhaps we could prioritize this work at some point. But there is a lot to do and resource is scarce, so we’ll have to make choices.

2 Likes