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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
//! 3D geometry and scene management for acoustic simulation.
//!
//! # Overview
//!
//! This module provides types for building 3D scenes that Steam Audio uses for
//! acoustic simulations like occlusion, reflection, and reverb.
//!
//! # Building a Scene
//!
//! ```
//! use audionimbus::*;
//!
//! let context = Context::default();
//! let mut scene = Scene::try_new(&context)?;
//!
//! // Define geometry.
//! let vertices = vec![
//! Point::new(0.0, 0.0, 0.0),
//! Point::new(10.0, 0.0, 0.0),
//! Point::new(10.0, 10.0, 0.0),
//! Point::new(0.0, 10.0, 0.0),
//! ];
//! let triangles = vec![Triangle::new(0, 1, 2), Triangle::new(0, 2, 3)];
//! let materials = vec![Material::CONCRETE];
//! let material_indices = vec![0, 0];
//!
//! // Create and add the mesh.
//! let mesh = StaticMesh::try_new(
//! &scene,
//! &StaticMeshSettings {
//! vertices: &vertices,
//! triangles: &triangles,
//! material_indices: &material_indices,
//! materials: &materials,
//! },
//! )?;
//! scene.add_static_mesh(mesh);
//! scene.commit();
//! # Ok::<(), SteamAudioError>(())
//! ```
//!
//! # Dynamic Geometry
//!
//! Use [`InstancedMesh`] for moving objects:
//!
//! ```
//! # use audionimbus::*;
//! # let context = Context::default();
//! # let mut scene = Scene::try_new(&context)?;
//! # let sub_scene = Scene::try_new(&context)?;
//! let transform = Matrix::new([
//! [1.0, 0.0, 0.0, 5.0],
//! [0.0, 1.0, 0.0, 0.0],
//! [0.0, 0.0, 1.0, 0.0],
//! [0.0, 0.0, 0.0, 1.0],
//! ]);
//!
//! let instanced = InstancedMesh::try_new(
//! &scene,
//! &InstancedMeshSettings {
//! sub_scene: &sub_scene,
//! transform,
//! },
//! )?;
//! scene.add_instanced_mesh(instanced);
//! # Ok::<(), SteamAudioError>(())
//! ```
pub use Vector3;
pub use Point;
pub use Direction;
pub use CoordinateSystem;
pub use Hit;
pub use ;
pub use Triangle;
pub use Material;
pub use Ray;
pub use ;
pub use ;
pub use ;
pub use Sphere;