Jump to content
  • Advertisement
Sign in to follow this  
Vilem Otte

Hires skinned meshes

This topic is 2633 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello,

I've been using for skinned meshes MD5 like mesh + animation structure, the problem is, recently I need to use higher resolution models (even 80k triangle skinned meshes) and thats really big problem. I just am not able to compute skinned mesh enough fast and send it to GPU (all computations are now on CPU).

Do you think that moving all computations to GPU would be still too slow, or?

Or do you think there are other (better) ways to perform mesh skinning?

Share this post


Link to post
Share on other sites
Advertisement
Skeletal animation on the GPU has been the norm for some time now, provided you aren't targetting an old and/or slow GPU. The skeleton updates/matrix geneation is still a CPU task however after that it's uploaded to the GPU where the vertex shaders can do the work.

Share this post


Link to post
Share on other sites
I know and the problem is, I'm using also software ray tracer for computing reflections and GI - and here is the problem, I just dunno how to have both data on CPU and GPU. I've been thinking about solution in last two days and the best I thought of is this (I tried skinning on GPU and reading back data, but that was just too slow):

Use low-res mesh and animate + skin it on CPU (so I will have low res mesh in ray tracer); Also pass low-res mesh to GPU (along with data needed for skinning) and skin on GPU (I could re-use also skinned mesh on CPU, but I think that filling VBO every frame is a lot slower than skinning it again on GPU), here I'm also gonna tessellate mesh and use displacement mapping (e.g. making it "looking good").

IMHO this could work pretty good, as I don't think anyone will notice using lower-res model during reflection and GI computations (because in the end it won't make much difference, well except for speedup of computation).

The only issue with this technique is rather complex shader for mesh, wasting resources (skinning two times) and well I don't think if it is gonna be enough fast (or faster than reading back the data from GPU).... :(

Share this post


Link to post
Share on other sites
Why not do it all on the GPU - the ray tracer can be implemented on the GPU, and the skinning should be done on the GPU - especially if you have modern hardware (which it seems like since you are since you mentioned tessellation). Using stream output would let you reuse the skinned / tessellated meshes, which will also keep you down to one copy of the mesh + one set of skinning operations.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!