I really don't use the usefulness of hardware vertex instancing. Old school vertex instancing of storing a single geometry and rendering it at multiple locations with differing world matrices seems to do the same trick.
For example, if we consider a forest with 100 (same) trees using the old school method, we would only need to store one tree and draw the same tree at 100 different locations. With vertex instancing, we would need one stream containing the vertex positions and another stream containing normals, texcoords, etc... and in the end, we end up doing the same thing.
One might argue that with vertex instancing one can render different looking trees. But since the vertex normals would be different for each instance, the tangents and binormals would need to be computed seperately for each tree and so the whole point of instancing is violated.
Unless I'm missing something, I really don't see the point of vertex instancing since the same could be done with the old school method.
For example, if we consider a forest with 100 (same) trees using the old school method, we would only need to store one tree and draw the same tree at 100 different locations. With vertex instancing, we would need one stream containing the vertex positions and another stream containing normals, texcoords, etc... and in the end, we end up doing the same thing.
One might argue that with vertex instancing one can render different looking trees. But since the vertex normals would be different for each instance, the tangents and binormals would need to be computed seperately for each tree and so the whole point of instancing is violated.
Unless I'm missing something, I really don't see the point of vertex instancing since the same could be done with the old school method.