1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//! # Feature Adaptive Representation
//! `Far` is the primary API layer for processing client-supplied mesh data into
//! subdivided surfaces.
//!
//! The `far` interface may be used directly and also may be used to prepare
//! mesh data for further processing by [`osd`](crate::osd). The two main
//! aspects of the subdivision process are *Topology Refinement* and *Primvar
//! Refinement*.
//!
//! ## Topology Refinement
//! *Topology refinement* is the process of splitting the mesh topology
//! according to the specified subdivision rules to generate new topological
//! vertices, edges, and faces.
//!
//! This process is purely topological and does not depend on the specific
//! values of any primvar data (point positions, etc.). Topology refinement can
//! be either uniform or adaptive, where extraordinary features are
//! automatically isolated (see feature adaptive subdivision).
//!
//! The main data structures in `far` related to topology refinement are:
//!
//! * [`TopologyDescriptor`] -- Describes a mesh.
//! * [`TopologyRefiner`] -- Encapsulates mesh refinement.
//! * [`TopologyLevel`] -- Represents one level of refinement within a
//! `TopologyRefiner`.
//!
//! ## Primvar Refinement
//! *Primitive Variable* (primvar) *refinement* is the process of computing
//! values for primvar data (points, colors, normals, texture coordinates, etc.)
//! by applying weights determined by the specified subdivision rules.
//!
//! There are many advantages gained by distinguishing between topology
//! refinement and primvar interpolation including the ability to apply a single
//! static topological refinement to multiple primvar instances or to different
//! animated primvar time samples. `Far` supports methods to refine primvar data
//! at the locations of topological vertices and at arbitrary locations on the
//! subdivision limit surface.
//!
//! The main data structures in `far` related to primvar refinement are:
//! * [`PrimvarRefiner`] -- Implements refinement of primvar data at the
//! locations of topological vertices.
//! * `PatchTable` -- A representation of the refined surface topology that can
//! be used for efficient evaluation of primvar data at arbitrary locations.
//! * [`StencilTable`] -- A representation of refinement weights suitable for
//! efficient parallel processing of primvar refinement.
//! * `LimitStencilTable` -- A representation of refinement weights suitable for
//! efficient parallel processing of primvar refinement at arbitrary limit
//! surface locations.
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;