MCPcopy Create free account
hub / github.com/RenderKit/embree / accels_build

Method accels_build

kernels/common/acceln.cpp:152–193  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

150 }
151
152 void AccelN::accels_build ()
153 {
154 /* reduce memory consumption */
155 accels.shrink_to_fit();
156
157 /* build all acceleration structures in parallel */
158 parallel_for (accels.size(), [&] (size_t i) {
159 accels[i]->build();
160 });
161
162 /* create list of non-empty acceleration structures */
163 bool valid1 = true;
164 bool valid4 = true;
165 bool valid8 = true;
166 bool valid16 = true;
167 for (size_t i=0; i<accels.size(); i++) {
168 valid1 &= (bool) accels[i]->intersectors.intersector1;
169 valid4 &= (bool) accels[i]->intersectors.intersector4;
170 valid8 &= (bool) accels[i]->intersectors.intersector8;
171 valid16 &= (bool) accels[i]->intersectors.intersector16;
172 }
173
174 if (accels.size() == 1) {
175 type = accels[0]->type; // FIXME: should just assign entire Accel
176 bounds = accels[0]->bounds;
177 intersectors = accels[0]->intersectors;
178 }
179 else
180 {
181 type = AccelData::TY_ACCELN;
182 intersectors.ptr = this;
183 intersectors.intersector1 = Intersector1(&intersect,&occluded,&pointQuery,valid1 ? "AccelN::intersector1": nullptr);
184 intersectors.intersector4 = Intersector4(&intersect4,&occluded4,valid4 ? "AccelN::intersector4" : nullptr);
185 intersectors.intersector8 = Intersector8(&intersect8,&occluded8,valid8 ? "AccelN::intersector8" : nullptr);
186 intersectors.intersector16 = Intersector16(&intersect16,&occluded16,valid16 ? "AccelN::intersector16": nullptr);
187
188 /*! calculate bounds */
189 bounds = empty;
190 for (size_t i=0; i<accels.size(); i++)
191 bounds.extend(accels[i]->bounds);
192 }
193 }
194
195 void AccelN::accels_select(bool filter)
196 {

Callers

nothing calls this directly

Calls 9

parallel_forFunction · 0.85
Intersector1Class · 0.85
Intersector4Class · 0.85
Intersector8Class · 0.85
Intersector16Class · 0.85
shrink_to_fitMethod · 0.80
sizeMethod · 0.45
buildMethod · 0.45
extendMethod · 0.45

Tested by

no test coverage detected