Now that I have got the instancing fully working with movement as well there are a few further improvements to be made before it can really be called a success. First of all I have started implementing the instancing to work on placed models within the scene, by collecting the instance information each frame and then passing that to the Instance Buffer. Currently the instancing works by using one model from the scene and using made up position offsets to draw them all. This is impractical and currently only works for one model.
There have been some issues with implementing the new approach, first of all I have had problems passing all the information across to the instance buffer and I believe this will mostly be due to the varying size of the instance buffer from frame to frame. I will more than likely have to check to ensure that the instance data is still the same size or re-create a new instance buffer.
Once this issue is sorted I should have any model that has been specified as instance-able automatically instancing. The problem with this is that it is only position data that is being passed across to the vertex buffer. I am trying to expand this to include rotation but I am reluctant to send too much data across. The most I can degrade a matrices down to is something like 9 values using cross products to calculate one of the axis on the GPU.
Anyway I'm hoping to have the major issues out soon so I can post a video, I have also been fiddling around with 3DS Max to try and create some slightly better models. I think a landscape with many small bushes like skyrim would create a rather nice video but we shall see.
Keep it Easy.