Compute Shader Skinning
- Dominant language
- Rust
- Stars
- 48.2k
- Forks
- 4.8k
- Avg merge
- 3d 16h
- Merged PRs (30d)
- 171
Description
## What problem does this solve or what need does it fill?
Currently Skinning is recomputed in many passes (prepass, main pass, shadow passes, etc...).
## What solution would you like?
Utilize compute shader skinning where skinning is done beforehand in a compute shader which writes out skinned vertices to a buffer. There are a few advantages to doing this:
- Skinning is only computed once for all passes
- Results in fewer shader permutations since vertex shaders are not specialized on skinning.
- The previous skinned vertex buffers can be kept around for computing the velocity pass (used in TAA, motion blur, etc...)
The use of compute shaders means that WebGL would require a separate skinning implementation.
## Additional context
Article about wicked engine's implementation: https://wickedengine.net/2017/09/09/skinning-in-compute-shader/
Doom Eternal uses this: https://simoncoenen.com/blog/programming/graphics/DoomEternalStudy
Contributor guide
Research direction
The issue names no files or tests, so begin by locating the existing skinning paths for the prepass, main, shadow, and velocity passes. Compare those paths with the referenced compute-shader implementations and account for the separate WebGL requirement. Done means skinning is performed once through the proposed compute path while preserving the stated velocity-pass behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- computer-graphics, game-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100