
This is a revamped equivalent to #9902, though it shares none of the code. It handles all special cases that I've tested correctly. The overall technique consists of double-buffering the joint matrix and morph weights buffers, as most of the previous attempts to solve this problem did. The process is generally straightforward. Note that, to avoid regressing the ability of mesh extraction, skin extraction, and morph target extraction to run in parallel, I had to add a new system to rendering, `set_mesh_motion_vector_flags`. The comment there explains the details; it generally runs very quickly. I've tested this with modified versions of the `animated_fox`, `morph_targets`, and `many_foxes` examples that add TAA, and the patch works. To avoid bloating those examples, I didn't add switches for TAA to them. Addresses points (1) and (2) of #8423. ## Changelog ### Fixed * Motion vectors, and therefore TAA, are now supported for meshes with skins and/or morph targets.
17 lines
356 B
Rust
17 lines
356 B
Rust
mod fog;
|
|
mod gpu_preprocess;
|
|
mod light;
|
|
pub(crate) mod mesh;
|
|
mod mesh_bindings;
|
|
mod mesh_view_bindings;
|
|
mod morph;
|
|
mod skin;
|
|
|
|
pub use fog::*;
|
|
pub use gpu_preprocess::*;
|
|
pub use light::*;
|
|
pub use mesh::*;
|
|
pub use mesh_bindings::MeshLayouts;
|
|
pub use mesh_view_bindings::*;
|
|
pub use skin::{extract_skins, prepare_skins, SkinIndices, SkinUniforms, MAX_JOINTS};
|