Identical meshes should be identified, by introducing something like a per-scene (loaded world) size_t mesh_id. Especially for things like NodeAttachments which are runtime-created and destroyed.
By being able to group node attachments by their mesh (for plain shadows, or text+mesh for color pass), we will be able to much improve instancing of skeletal meshes like MOBs or weapons on people's hands/hips, heads...
This accounts for most draw calls in the current main pass in Khorinis.
Currently we can only really batch-draw static mesh VOBs due to them sharing the same zCModel/Visual. Skeletal meshes have "unique-ish" models, but non-unique nodes.
Additionally: if we're able to correctly handle this mesh identification, we should try to reduce per-mesh GPU resources. Instead of having vertex/index buffers per mesh instance, we could have a set of "static-per-mesh" buffers for those, and a set of dynamic morph-mesh/dynamic verticies buffers as required.
Identical meshes should be identified, by introducing something like a per-scene (loaded world)
size_t mesh_id. Especially for things like NodeAttachments which are runtime-created and destroyed.By being able to group node attachments by their mesh (for plain shadows, or text+mesh for color pass), we will be able to much improve instancing of skeletal meshes like MOBs or weapons on people's hands/hips, heads...
This accounts for most draw calls in the current main pass in Khorinis.
Currently we can only really batch-draw static mesh VOBs due to them sharing the same zCModel/Visual. Skeletal meshes have "unique-ish" models, but non-unique nodes.
Additionally: if we're able to correctly handle this mesh identification, we should try to reduce per-mesh GPU resources. Instead of having vertex/index buffers per mesh instance, we could have a set of "static-per-mesh" buffers for those, and a set of dynamic morph-mesh/dynamic verticies buffers as required.