Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kinemation: Virtual Mesh Generation #47

Open
Dreaming381 opened this issue Jul 5, 2024 · 0 comments
Open

Kinemation: Virtual Mesh Generation #47

Dreaming381 opened this issue Jul 5, 2024 · 0 comments
Labels
open to contributors Want to contribute? This task is available. very difficult This task is for the hard-core only

Comments

@Dreaming381
Copy link
Owner

Kinemation: Virtual Mesh Generation

Virtual geometry is a hot topic as of late. Ever since Epic Games announced
Nanite, and later gave presentations on how they made it all work, other game
engines and developers have sought to follow this new approach. Bevy 0.14 was
the latest to jump on this train at the time of writing this.

While it will be a long road, I believe it is possible to bring virtual geometry
to Kinemation as well. However, the steps along the journey can each provide
value for specific use cases much sooner than the final solution. So there’s
plenty of incentive for starting now!

Task is Prerequisite For

  • Automatic LOD Generation
  • Large Mesh Coarse Virtual Geometry Rendering (CPU HLOD)
  • True Virtual Geometry Rendering

Base Requirements

Create a data structure which represents a meshlet hierarchy. Assume this data
structure will only ever be accessed from a single thread, and can be allocated
with an AllocatorManager.Allocator. Also assume the source mesh will only ever
have a single submesh.

Each meshlet should contain triangles, where each vertex of the triangle
contains all vertex attributes of the triangle: position, normal, tangent, and
UVs. Bone weights and bone indices are a nice-to-have, but not a hard
requirement. Additionally, each meshlet should contain a geometric error
relative to the original source mesh.

The data structure should provide APIs for navigating the meshlet trees and
reading any meshlet data. It should also have a dispose method for the entire
data structure.

@Dreaming381 Dreaming381 added open to contributors Want to contribute? This task is available. very difficult This task is for the hard-core only labels Jul 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
open to contributors Want to contribute? This task is available. very difficult This task is for the hard-core only
Projects
None yet
Development

No branches or pull requests

1 participant