Skip to content

chengkehan/GPUSkinning

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 

GPUSkinning to improve performance.

v0.2.3 release

Features:

  • Animation Event

v0.2.2 release

Features:

  • Animation Blend

  • Level of Detail

  • Optimization

  • Crowd Example Scene

v0.2.1 release

Features:

  • Memory Optimization

  • Individual Difference Animation

  • GPU Instancing

  • Skinning Instancing

  • Root Bone Animation

Deferred:

  • Animation Blend

  • Level of Detail

v0.2 release

Features:

  • No hard-code.

  • Easier to use(editor tool).

  • Compatible with various animation types(legacy, generic, humanoid, animation).

  • New GPUSkinning api.

v0.1-alpha

Experimental Version.This version is not for production use, just to verify feasibility of idea.

Record data of bone animation from Animation Component, customize GPUSkinning rather than Unity built-in.

4 Ways to implement:

  1. Compute bone hierarchy matrix of current frame in Application code -> push Matrix Array to GPU -> Skinning in Vertex Shader -> Next Frame(Goto first step)

  2. Compute bone hierarchy matrix of all frames -> Store all matrices into a Texture2D -> Skinning in Vertex Shader(Extract all matrices of current frame to skinning)(Using "additionalVertexStreams" to get individual animtion)

  3. Base on Way1 and Way2, Using GPU Instancing to get the minimum Batches, Using CullingGroup to implement Level of Detail to reduce triangle-rendering overhead.

  4. Compute bone hierarchy matrix of all frames -> Store data into a ComputeBuffer -> Skinning in ComputeShader(DirectX 11)

img

screenshot

img

Adding a new feature that we can attach weapon to hand joint in this example.

http://chengkehan.github.io/GPUSkinning.html

http://chengkehan.github.io/GPUSkinning2.html

http://chengkehan.github.io/GPUSkinning3.html

http://chengkehan.github.io/GPUSkinning4.html