|
46 | 46 | from .ovrtx_renderer_kernels import ( |
47 | 47 | DEVICE, |
48 | 48 | create_camera_transforms_kernel, |
49 | | - extract_depth_tile_from_tiled_buffer_kernel, |
50 | | - extract_tile_from_tiled_buffer_kernel, |
| 49 | + extract_all_depth_tiles_kernel, |
| 50 | + extract_all_rgba_tiles_kernel, |
51 | 51 | generate_random_colors_from_ids_kernel, |
52 | 52 | sync_newton_transforms_kernel, |
53 | 53 | ) |
@@ -424,46 +424,38 @@ def _extract_rgba_tiles( |
424 | 424 | buffer_key: str, |
425 | 425 | suffix: str = "", |
426 | 426 | ) -> None: |
427 | | - """Extract per-env RGBA tiles from tiled buffer into output_buffers.""" |
428 | | - for env_idx in range(render_data.num_envs): |
429 | | - tile_x = env_idx % render_data.num_cols |
430 | | - tile_y = env_idx // render_data.num_cols |
431 | | - wp.launch( |
432 | | - kernel=extract_tile_from_tiled_buffer_kernel, |
433 | | - dim=(render_data.height, render_data.width), |
434 | | - inputs=[ |
435 | | - tiled_data, |
436 | | - output_buffers[buffer_key][env_idx], |
437 | | - tile_x, |
438 | | - tile_y, |
439 | | - render_data.width, |
440 | | - render_data.height, |
441 | | - ], |
442 | | - device=DEVICE, |
443 | | - ) |
| 427 | + """Extract per-env RGBA tiles from tiled buffer into output_buffers (single kernel launch).""" |
| 428 | + wp.launch( |
| 429 | + kernel=extract_all_rgba_tiles_kernel, |
| 430 | + dim=(render_data.num_envs, render_data.height, render_data.width), |
| 431 | + inputs=[ |
| 432 | + tiled_data, |
| 433 | + output_buffers[buffer_key], |
| 434 | + render_data.num_cols, |
| 435 | + render_data.width, |
| 436 | + render_data.height, |
| 437 | + ], |
| 438 | + device=DEVICE, |
| 439 | + ) |
444 | 440 |
|
445 | 441 | def _extract_depth_tiles( |
446 | 442 | self, render_data: OVRTXRenderData, tiled_depth_data: wp.array, output_buffers: dict |
447 | 443 | ) -> None: |
448 | | - """Extract per-env depth tiles into output_buffers.""" |
449 | | - for env_idx in range(render_data.num_envs): |
450 | | - tile_x = env_idx % render_data.num_cols |
451 | | - tile_y = env_idx // render_data.num_cols |
452 | | - for depth_type in ["depth", "distance_to_image_plane", "distance_to_camera"]: |
453 | | - if depth_type in output_buffers: |
454 | | - wp.launch( |
455 | | - kernel=extract_depth_tile_from_tiled_buffer_kernel, |
456 | | - dim=(render_data.height, render_data.width), |
457 | | - inputs=[ |
458 | | - tiled_depth_data, |
459 | | - output_buffers[depth_type][env_idx], |
460 | | - tile_x, |
461 | | - tile_y, |
462 | | - render_data.width, |
463 | | - render_data.height, |
464 | | - ], |
465 | | - device=DEVICE, |
466 | | - ) |
| 444 | + """Extract per-env depth tiles into output_buffers (single kernel launch).""" |
| 445 | + for depth_type in ["depth", "distance_to_image_plane", "distance_to_camera"]: |
| 446 | + if depth_type in output_buffers: |
| 447 | + wp.launch( |
| 448 | + kernel=extract_all_depth_tiles_kernel, |
| 449 | + dim=(render_data.num_envs, render_data.height, render_data.width), |
| 450 | + inputs=[ |
| 451 | + tiled_depth_data, |
| 452 | + output_buffers[depth_type], |
| 453 | + render_data.num_cols, |
| 454 | + render_data.width, |
| 455 | + render_data.height, |
| 456 | + ], |
| 457 | + device=DEVICE, |
| 458 | + ) |
467 | 459 |
|
468 | 460 | def _process_render_frame(self, render_data: OVRTXRenderData, frame, output_buffers: dict) -> None: |
469 | 461 | """Extract RGB, depth, albedo, and semantic from a single render frame into output_buffers.""" |
|
0 commit comments