Skip to content

Commit d374760

Browse files
committed
Completed vulkan kernel for 2bvh intersect
1 parent 14cb713 commit d374760

File tree

1 file changed

+23
-17
lines changed

1 file changed

+23
-17
lines changed

RadeonRays/src/kernels/GLSL/bvh2.comp

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -205,11 +205,9 @@ void intersect_main()
205205

206206
lds_stack[lds_sptr++] = INVALID_ADDR;
207207

208-
#if 0
209-
210208
while (addr != INVALID_ADDR)
211209
{
212-
BvhNode node = bvh[addr];
210+
BvhNode node = Nodes[addr];
213211

214212
if (INTERNAL_NODE(node))
215213
{
@@ -226,22 +224,28 @@ void intersect_main()
226224
bool traverse_c1 = (s1.x <= s1.y);
227225
bool c1first = traverse_c1 && (s0.x > s1.x);
228226

229-
if (traverse_c0 || traverse_c1) {
227+
if (traverse_c0 || traverse_c1)
228+
{
230229
uint deferred = INVALID_ADDR;
231230

232-
if (c1first || !traverse_c0) {
231+
if (c1first || !traverse_c0)
232+
{
233233
addr = node.addr_right;
234234
deferred = node.addr_left;
235235
}
236-
else {
236+
else
237+
{
237238
addr = node.addr_left;
238239
deferred = node.addr_right;
239240
}
240241

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];
245249
}
246250

247251
sptr += LDS_STACK_SIZE;
@@ -254,35 +258,37 @@ void intersect_main()
254258
continue;
255259
}
256260
}
257-
else {
261+
else
262+
{
258263
float t = fast_intersect_triangle(
259264
myRay,
260265
node.aabb_left_min_or_v0,
261266
node.aabb_left_max_or_v1,
262267
node.aabb_right_min_or_v2,
263268
closest_t);
264269

265-
if (t < closest_t) {
270+
if (t < closest_t)
271+
{
266272
closest_t = t;
267273
closest_addr = addr;
268274
}
269275
}
270276

271277
addr = lds_stack[--lds_sptr];
272278

273-
if (addr == INVALID_ADDR && sptr > stack_bottom) {
279+
if (addr == INVALID_ADDR && sptr > stack_bottom)
280+
{
274281
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];
277285
}
278286

279287
lds_sptr = lds_stack_bottom + LDS_STACK_SIZE - 1;
280288
addr = lds_stack[lds_sptr];
281289
}
282290
}
283291

284-
#endif
285-
286292
// TODO: what, why?!? (gboisse)
287293
Intersection isect;
288294
isect.padding.x = 667;

0 commit comments

Comments
 (0)