That is what I'm doing - the only per instance data to display the sprite is a single index. I'm animating by just changing that index and the shader will automatically update the sprite. In most cases one type of data will probably change nearly every frame - whether it's the uv cell or the position or the color. But right now if any one thing changes all the buffers need to update, if I split it out properly then they should be able to update independently without affecting each-other. Aside from that I'm now trying to get rid of more unnecessary copies. Right now when I'm moving the data from components to dynamic buffers I do EntityQuery.ToComponentDataArray. This gives me a nice list I can push into the buffers. I'd like to use an IJobForEach or an IJobChunk instead using the filtered query, but Dynamic Buffers don't support parallel writing. I've tried using a queue to read and write the data but the copy has to be run once for every shared component data, and trying to manage queues with dynamic filtering based on SCD seems like a nightmare. I suspect this is a pretty common problem, I'm pretty new to parallel coding so my brain hurts trying to solve this stuff. I'm thinking a NativeMultiHashMap<SCDFilterValue,DataType> might work, not sure yet.