First of all, huge thanks to Nadro and his awesome work on irrCg.
Luke did a fantastic job on creating the Skinned Mesh system for irrlicht, but I always felt hindered by its rigidity, not to mention the lack of flexible vertex formats in irrlicht anyways.
So for my engine I created a custom Character system to work around those limitations, rather than mess with irrlicht's source directly and make like difficult for myself in the future.
I took the Mesh Viewer code and plugged my Character system into it, which should allow fair comparisons to be made (note that most of the usual Mesh Viewer features dont work in this demo)
The binary can be downloaded here
http://www.megaupload.com/?d=EHY6OU2R

The implementation is still fairly buggy (some models have dodgy bones, others dont even load), but its proof enough that irrCg CAN be used to GPU skin a model given the right data, without modifying the irrlicht source one jot.
The actual method is called Matrix Pallete Skinning and I got the idea from here:
http://developer.download.nvidia.com/SD ... aletteSkin
To get around the vertex format problem, I used Tangent vertices.
Bone indices are stored into the vertex color (RGBA for upto 4 possible pallete indices) and Bone Weights into the Binormal vector (XYZ for upto 3 possible influencing bones).
This limits the system to 3 bones total, however that isn't much of a problem at all
Normal mapping can also still be done, because the Tangent vector remains unchanged and the Binormal can be calculated at runtime anyway.
GPU Skinning is unlikely to be of any use for graphics cards below Geforce 7 or equivalent, my Geforce 6150SE does software skinning much faster than this GPU approach
Another problem with GPU skinning is that the transformed vertices cannot be retreived, so additional render passes (eg shadow mapping) would require GPU skinning to be done again, so clearly there is a set threshold where the performance would seriously suffer.
This demo is restricted to the OpenGL driver only for now, and the implementation still requires a lot of work.
But I will continue to upload demos and share my findings
The Cg shader itself is included with the binary, have fun
Demo notes:
+ works with ANY irrlicht compatible models
+ supports models with an INFINITE number of bones!
+ keyframe animations
+ Cg shader code provided
- crashes on termination, buggy cleanup
- buggy joint rotations sometimes
- some models fail to import correctly, not related to actual GPU skinning implementation
- other Mesh-Viewer settings aren't currently implemented