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

demo: Miscellaneous improvements to clustered simplification #778

Merged
merged 6 commits into from
Oct 2, 2024
Merged

Commits on Sep 30, 2024

  1. demo: Implement manual boundary locking for clusters

    While using automatic border locking usually works very well, it
    prevents simplifying open geometric borders that the source mesh might
    contain. When a mesh has many edges like this, this negatively affects
    the DAG quality by locking edges contained within one cluster group.
    
    Instead, we can simply mark vertices that are shared by more than one
    group after a partition and feed that data to simplifier.
    
    The effect of this is situational; it's beneficial overall but because
    the rest of the pipeline has odd issues with partitioning, even when
    using METIS for everything, sometimes this ends up constraining the
    build process a little more for unclear reasons. Theoretically this
    should be strictly better though, and on some meshes like kitten.obj it
    does measurably help, however it needs fixes for attribute seams to
    keep it enabled.
    zeux committed Sep 30, 2024
    Configuration menu
    Copy the full SHA
    0f43483 View commit details
    Browse the repository at this point in the history

Commits on Oct 2, 2024

  1. demo: Add total triangle/cluster counter

    This is helpful to estimate the memory impact of the full LOD chain and
    makes it easier to compare stats with UE which reports them in log file.
    zeux committed Oct 2, 2024
    Configuration menu
    Copy the full SHA
    43dac0d View commit details
    Browse the repository at this point in the history
  2. demo: Add individual clusters to debug mesh

    It is pretty difficult to debug the visualized data with just groups
    without a sense as to where the cluster boundaries lie; this outputs
    duplicate geometry but makes it easier to work with in Blender.
    zeux committed Oct 2, 2024
    Configuration menu
    Copy the full SHA
    a7f7198 View commit details
    Browse the repository at this point in the history
  3. demo: Use a flexible (and larger) cluster group size

    Using 4 clusters is fairly limiting wrt partition quality, as it demands
    very careful grouping that METIS is not willing to provide. Instead use
    a larger group size (8 atm), and adjust the simplification condition to
    be adaptive to the group size so that partitioning is free to produce
    groups of varying sizes.
    zeux committed Oct 2, 2024
    Configuration menu
    Copy the full SHA
    a2f74c6 View commit details
    Browse the repository at this point in the history
  4. demo: Use position remap for locking and partitioning

    Previously when we built adjacency between groups we would not create
    edges between clusters when they shared the position of the vertex with
    a different attribute. This meant that when the cluster boundary
    contained a crease, it would not be reflected correctly in the
    adjacency.
    
    Similarly, but more importantly, we need this information when locking
    the cluster boundary for the same reason; before, lockBoundary could
    result in gaps because the locking information on the boundary was
    inconsistent. This allows us to enable kUseLocks by default.
    zeux committed Oct 2, 2024
    Configuration menu
    Copy the full SHA
    b35474e View commit details
    Browse the repository at this point in the history
  5. demo: Use vertex adjacency for partitioning

    Instead of using shared edges to provide adjacency, we now use shared
    vertices; this works more or less the same way but is easier to compute.
    For some reason this also results in fewer stuck triangles when using
    full METIS pipeline.
    zeux committed Oct 2, 2024
    Configuration menu
    Copy the full SHA
    8a0beac View commit details
    Browse the repository at this point in the history