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
//! # farthing
//!
//! Mesh LOD for real-time 3D, engine-agnostic: farthing works on geometry and opaque material
//! slots, and reaches real materials only through the [`host::RenderHost`] boundary.
//!
//! The data model lives at the crate root:
//!
//! * [`Mesh`] — an indexed triangle mesh whose vertices are *wedges*: one vertex per
//! unique attribute set, so a UV seam is two vertices at one position (the GPU layout).
//! * [`Scene`] — meshes, instances with world transforms, skeletons and opaque material
//! slots. farthing never knows what a material looks like.
//! * [`host::RenderHost`] — the boundary to the engine. Anything that needs real materials
//! (baking, impostor captures, alpha-aware visibility, image metrics) goes through it.
//! * [`bvh::Bvh`] — binned-SAH bounding volume hierarchy for ray casts and closest-point queries.
//! * [`image::Image`], [`metrics`] — float images and quality metrics.
//!
//! The processors are modules:
//!
//! * [`reduce`] — attribute-aware quadric edge-collapse reduction, repair, vertex-cache optimization.
//! * [`uv`] — chart-based UV parameterization and atlas packing.
//! * [`bake`] — material casting from a source to a target surface through the host.
//! * [`aggregate`] — many meshes and materials into one mesh with one atlas.
//! * [`voxel`] — voxel remeshing (watertight proxies) and conservative occluders.
//! * [`visibility`] — camera-sampled visibility culling and texel budgets.
//! * [`impostor`] — octahedral, flipbook, single-view and billboard-cloud impostors.
//! * [`bones`] — skinning LOD: influence limiting and bone removal.
//! * `io` — glTF 2.0 and OBJ import/export (feature `io`, on by default).
// Data model.
// Processors.
pub use ;
pub use glam;
pub use Aabb;
pub use ;
pub use ;