48 void BuildScene(
const std::vector<Vertex>& vertex_buffer,
49 const std::vector<Triangle>& triangle_buffer);
57 bool AssociateReflectionKernelToTriangles(
59 const std::unordered_set<unsigned int>& triangle_indices);
68 unsigned int triangle_index)
const {
69 if (triangle_to_reflection_map_.count(triangle_index) == 0) {
70 return kDefaultReflection;
72 return reflections_.at(triangle_to_reflection_map_.at(triangle_index));
75 RTCScene scene()
const {
return scene_; }
76 bool is_scene_committed()
const {
return is_scene_committed_; }
77 size_t num_vertices()
const {
return num_vertices_; }
78 size_t num_triangles()
const {
return num_triangles_; }
84 void BuildListenerScene(
const std::vector<AcousticListener>& listeners,
85 float listener_sphere_radius);
91 size_t GetListenerIndexFromSphereId(
unsigned int sphere_id) {
92 DCHECK_GT(sphere_to_listener_map_.count(sphere_id), 0);
93 return sphere_to_listener_map_.at(sphere_id);
96 RTCScene listener_scene()
const {
return listener_scene_; }
97 bool is_listener_scene_committed()
const {
98 return is_listener_scene_committed_;
103 const std::array<float, kNumReverbOctaveBands>
104 kPerfectReflectionCoefficients = {
105 {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}};
107 kPerfectReflectionCoefficients, 0.0f, []() {
return 0.5f; });
114 bool is_scene_committed_ =
false;
115 size_t num_vertices_ = 0;
116 size_t num_triangles_ = 0;
117 std::vector<ReflectionKernel> reflections_;
118 std::unordered_map<unsigned int, size_t> triangle_to_reflection_map_;
121 RTCScene listener_scene_;
122 bool is_listener_scene_committed_ =
false;
125 std::unordered_map<unsigned int, size_t> sphere_to_listener_map_;