@@ -205,11 +205,9 @@ void intersect_main()
205
205
206
206
lds_stack[lds_sptr++] = INVALID_ADDR;
207
207
208
- #if 0
209
-
210
208
while (addr != INVALID_ADDR)
211
209
{
212
- BvhNode node = bvh [addr];
210
+ BvhNode node = Nodes [addr];
213
211
214
212
if (INTERNAL_NODE(node))
215
213
{
@@ -226,22 +224,28 @@ void intersect_main()
226
224
bool traverse_c1 = (s1.x <= s1.y);
227
225
bool c1first = traverse_c1 && (s0.x > s1.x);
228
226
229
- if (traverse_c0 || traverse_c1) {
227
+ if (traverse_c0 || traverse_c1)
228
+ {
230
229
uint deferred = INVALID_ADDR;
231
230
232
- if (c1first || !traverse_c0) {
231
+ if (c1first || !traverse_c0)
232
+ {
233
233
addr = node.addr_right;
234
234
deferred = node.addr_left;
235
235
}
236
- else {
236
+ else
237
+ {
237
238
addr = node.addr_left;
238
239
deferred = node.addr_right;
239
240
}
240
241
241
- if (traverse_c0 && traverse_c1) {
242
- if (lds_sptr - lds_stack_bottom >= LDS_STACK_SIZE) {
243
- for (int i = 1; i < LDS_STACK_SIZE; ++i) {
244
- stack[sptr + i] = lds_stack[lds_stack_bottom + i];
242
+ if (traverse_c0 && traverse_c1)
243
+ {
244
+ if (lds_sptr - lds_stack_bottom >= LDS_STACK_SIZE)
245
+ {
246
+ for (int i = 1; i < LDS_STACK_SIZE; ++i)
247
+ {
248
+ Stack[sptr + i] = lds_stack[lds_stack_bottom + i];
245
249
}
246
250
247
251
sptr += LDS_STACK_SIZE;
@@ -254,35 +258,37 @@ void intersect_main()
254
258
continue;
255
259
}
256
260
}
257
- else {
261
+ else
262
+ {
258
263
float t = fast_intersect_triangle(
259
264
myRay,
260
265
node.aabb_left_min_or_v0,
261
266
node.aabb_left_max_or_v1,
262
267
node.aabb_right_min_or_v2,
263
268
closest_t);
264
269
265
- if (t < closest_t) {
270
+ if (t < closest_t)
271
+ {
266
272
closest_t = t;
267
273
closest_addr = addr;
268
274
}
269
275
}
270
276
271
277
addr = lds_stack[--lds_sptr];
272
278
273
- if (addr == INVALID_ADDR && sptr > stack_bottom) {
279
+ if (addr == INVALID_ADDR && sptr > stack_bottom)
280
+ {
274
281
sptr -= LDS_STACK_SIZE;
275
- for (int i = 1; i < LDS_STACK_SIZE; ++i) {
276
- lds_stack[lds_stack_bottom + i] = stack[sptr + i];
282
+ for (int i = 1; i < LDS_STACK_SIZE; ++i)
283
+ {
284
+ lds_stack[lds_stack_bottom + i] = Stack[sptr + i];
277
285
}
278
286
279
287
lds_sptr = lds_stack_bottom + LDS_STACK_SIZE - 1;
280
288
addr = lds_stack[lds_sptr];
281
289
}
282
290
}
283
291
284
- #endif
285
-
286
292
// TODO: what, why?!? (gboisse)
287
293
Intersection isect;
288
294
isect.padding.x = 667;
0 commit comments