Draw Calls, Instancing and (dynamic) lighting -- do the former matter with the latter?


with the release of DX12 draw call reduction came to my attention (and based on then added offerings like gpu instancing in Unity and other offerings by Assets I have the impression also to others).

"Obviously" the less data to transfer and the less calculations to perform the better for performance was/is known before already. (but gpus being programmed via a 3rd party api and on top through a game engine for most of us here at least some optimisations were out of bounds.)

Now, only using dynamic = realtime lighting and having tried gpu instancing with shaders i never observed a noticeable increase in frame rate in my projects while running the unity editor and looking at the statistics output.

Additionally, neither did i observe a frame rate increase in non-Unity games with DX12 like Ms FS.

Thus my question: do draw calls and instancing matter when realtime lighting is employed?

If I remember correctly from the Unity documentation, gpu instancing only works with identical copies of a mesh and material, thus "animated meshes" wouldn't benefit for example, but contrary to static batching where even the position of meshes must remain constant that is not required for gpu instancing.

Does someoe of you have knowledge about this you want to share or can give same performance data?

(i could try to find conditions and requirements myself and conceive a benchmark but that would take more time than reading "the result" from a knowledgable person of this community who is such nice as to share his or her knowledge -- thank you for such beforehand)

I don't think you can batch (or GPU instance) objects affected by different realtime lights, because they need lighting data.