So i was contemplating how to instance skinned geometry and came across this DICE paper (http://www.dice.se/wp-content/uploads/2014/12/GDC11_DX11inBF3_Public.pdf).
I took some time to compare the performance of instancing via vertex buffer binding versus StructuredBuffer+SV_InstanceID.
To be a bit more specific, here's what i compared:
Version A: bind buffer containing a float4x4 per instance as vertex buffer. passed to vertex shader via input layout.
Version B: set structured buffer containing a float4x4 as shader resource view. lookup in vertex shader by SV_InstanceID.
To my surprise, StructuredBuffer comes out ~30% slower on my GTX1080
Does anyone have a similar experience?
I'm wondering if there's any way to optimize this, else DICEs recommendation leaves me puzzled
I suppose i'm still going to use the StructuredBuffer to get around the constant buffer size limitation for bone matrices,
but it'd be so nice to have less shader permutations...