├── .clang-format
├── .clang-tidy
├── .gitattributes
├── .gitignore
├── .readthedocs.yaml
├── BUILD.md
├── Buildinfo.properties.in
├── CMakeLists.txt
├── LICENSE.txt
├── NOTICES.txt
├── README.md
├── RELEASE_NOTES.txt
├── build
├── dependency_map.py
├── fetch_dependencies.py
├── pre_build.py
└── qt.conf
├── cmake
├── dev_tools.cmake
└── devtools_qt_helper.cmake
├── documentation
├── requirements.txt
└── source
│ ├── _static
│ ├── style.css
│ └── theme_overrides.css
│ ├── _templates
│ └── layout.html
│ ├── blas_windows.rst
│ ├── conf.py
│ ├── index.rst
│ ├── media
│ ├── blas
│ │ ├── blas_instances_1.png
│ │ ├── blas_properties_1.png
│ │ ├── blas_viewer_1.png
│ │ ├── geometries_1.png
│ │ ├── split_triangles_1.png
│ │ ├── split_triangles_2.png
│ │ ├── split_triangles_stats_1.png
│ │ └── triangles_1.png
│ ├── overview
│ │ ├── driver_experiments_1.png
│ │ ├── summary_1.png
│ │ ├── system_info_1.png
│ │ └── user_markers.png
│ ├── ray
│ │ ├── ray_history_1.png
│ │ ├── ray_history_2.png
│ │ ├── ray_inspector_1.jpg
│ │ ├── ray_inspector_2.png
│ │ ├── ray_inspector_3.jpg
│ │ ├── ray_inspector_4.png
│ │ └── ray_user_markers.png
│ ├── recent_traces_1.png
│ ├── reset.png
│ ├── settings
│ │ ├── dark_theme_1.png
│ │ ├── dark_theme_prompt.png
│ │ ├── general_1.png
│ │ ├── keyboard_shortcuts_1.png
│ │ └── themes_and_colors_1.png
│ ├── tlas
│ │ ├── blas_list_1.png
│ │ ├── context_menu_1.png
│ │ ├── depth_slider.png
│ │ ├── instance_mask_filter.png
│ │ ├── loop_count.jpg
│ │ ├── popout_view_1.png
│ │ ├── popout_view_2.png
│ │ ├── popout_view_3.png
│ │ ├── rebraiding_stats_1.png
│ │ ├── tlas_instances_1.png
│ │ ├── tlas_properties_1.png
│ │ └── tlas_viewer_1.jpg
│ ├── welcome_1.png
│ ├── zoom_in.png
│ ├── zoom_out.png
│ ├── zoom_reset.png
│ └── zoom_to_selection.png
│ ├── overview.rst
│ ├── quickstart.rst
│ ├── ray_windows.rst
│ ├── settings.rst
│ └── tlas_windows.rst
├── samples
├── brick_wall.rra
├── character.rra
├── face_culling.rra
├── landscape.rra
├── scaffolding.rra
├── springs.rra
├── trees.rra
└── update_blas.rra
└── source
├── assets
├── acceleration_structure_overview-dark-theme.svg
├── acceleration_structure_overview.svg
├── amd_logo.svg
├── amd_logo_white.svg
├── arrow_gray_left.svg
├── arrow_gray_right.svg
├── browse_back_disabled.svg
├── browse_back_normal.svg
├── browse_back_pressed.svg
├── browse_fwd_disabled.svg
├── browse_fwd_normal.svg
├── browse_fwd_pressed.svg
├── checkbox_off.svg
├── checkbox_off_gray.svg
├── checkbox_on.svg
├── checkbox_on_gray.svg
├── icon_32x32.png
├── icon_48x48.png
├── kbd_mouse.svg
├── kbd_mouse_clickable-dark-theme.svg
├── kbd_mouse_clickable.svg
├── kbd_mouse_hover.svg
├── pulldown_off_gray.svg
├── pulldown_on_gray.svg
├── stop_128x128.png
├── third_party
│ └── ionicons
│ │ ├── LICENSE
│ │ ├── information-circle-outline-clickable-dark-theme.svg
│ │ ├── information-circle-outline-clickable.svg
│ │ ├── information-circle-outline-hover.svg
│ │ ├── information-circle-outline.svg
│ │ ├── lock-closed-outline-clickable-dark-theme.svg
│ │ ├── lock-closed-outline-clickable.svg
│ │ ├── lock-closed-outline-hover.svg
│ │ ├── lock-closed-outline.svg
│ │ ├── lock-open-outline-clickable-dark-theme.svg
│ │ ├── lock-open-outline-clickable.svg
│ │ ├── lock-open-outline-hover.svg
│ │ ├── lock-open-outline.svg
│ │ ├── refresh-outline-clickable-dark-theme.svg
│ │ ├── refresh-outline-clickable.svg
│ │ ├── refresh-outline-hover.svg
│ │ ├── refresh-outline.svg
│ │ ├── scan-outline-clickable-dark-theme.svg
│ │ ├── scan-outline-clickable.svg
│ │ ├── scan-outline-hover.svg
│ │ ├── scan-outline.svg
│ │ ├── search_icon.png
│ │ ├── wand-clickable-dark-theme.svg
│ │ ├── wand-clickable.svg
│ │ ├── wand-hover.svg
│ │ └── wand.svg
├── zoom_in.svg
├── zoom_in_disabled.svg
├── zoom_out.svg
├── zoom_out_disabled.svg
├── zoom_reset.svg
├── zoom_reset_disabled.svg
├── zoom_to_selection.svg
└── zoom_to_selection_disabled.svg
├── backend
├── CMakeLists.txt
├── api_info.cpp
├── api_info.h
├── asic_info.cpp
├── asic_info.h
├── bvh
│ ├── bvh_bundle.cpp
│ ├── bvh_bundle.h
│ ├── bvh_index_reference_map.cpp
│ ├── bvh_index_reference_map.h
│ ├── dxr_definitions.h
│ ├── dxr_type_conversion.cpp
│ ├── dxr_type_conversion.h
│ ├── flags_util.h
│ ├── geometry_info.cpp
│ ├── geometry_info.h
│ ├── gpu_def.h
│ ├── ibvh.cpp
│ ├── ibvh.h
│ ├── metadata_v1.cpp
│ ├── metadata_v1.h
│ ├── node_pointer.cpp
│ ├── node_pointer.h
│ ├── node_types
│ │ ├── box_node.cpp
│ │ ├── box_node.h
│ │ ├── float16_box_node.cpp
│ │ ├── float16_box_node.h
│ │ ├── float32_box_node.cpp
│ │ ├── float32_box_node.h
│ │ ├── instance_node.cpp
│ │ ├── instance_node.h
│ │ ├── procedural_node.cpp
│ │ ├── procedural_node.h
│ │ ├── triangle_node.cpp
│ │ └── triangle_node.h
│ ├── parent_block.cpp
│ ├── parent_block.h
│ ├── rt_binary_file_defs.cpp
│ ├── rt_binary_file_defs.h
│ ├── rtip11
│ │ ├── encoded_rt_ip_11_bottom_level_bvh.cpp
│ │ ├── encoded_rt_ip_11_bottom_level_bvh.h
│ │ ├── encoded_rt_ip_11_top_level_bvh.cpp
│ │ ├── encoded_rt_ip_11_top_level_bvh.h
│ │ ├── rt_ip_11_acceleration_structure_header.cpp
│ │ ├── rt_ip_11_acceleration_structure_header.h
│ │ └── rt_ip_11_header.h
│ ├── rtip31
│ │ ├── child_info.h
│ │ ├── common.h
│ │ ├── encoded_rt_ip_31_bottom_level_bvh.cpp
│ │ ├── encoded_rt_ip_31_bottom_level_bvh.h
│ │ ├── encoded_rt_ip_31_top_level_bvh.cpp
│ │ ├── encoded_rt_ip_31_top_level_bvh.h
│ │ ├── internal_node.h
│ │ ├── math.h
│ │ ├── primitive_node.h
│ │ ├── ray_tracing_defs.h
│ │ ├── rt_ip_31_acceleration_structure_header.cpp
│ │ └── rt_ip_31_acceleration_structure_header.h
│ ├── rtip_common
│ │ ├── acceleration_structure_header.cpp
│ │ ├── acceleration_structure_header.h
│ │ ├── encoded_bottom_level_bvh.cpp
│ │ ├── encoded_bottom_level_bvh.h
│ │ ├── encoded_top_level_bvh.cpp
│ │ ├── encoded_top_level_bvh.h
│ │ ├── gpurt_accel_struct.h
│ │ ├── i_acceleration_structure_header.cpp
│ │ ├── i_acceleration_structure_header.h
│ │ ├── i_acceleration_structure_post_build_info.cpp
│ │ └── i_acceleration_structure_post_build_info.h
│ ├── utils.cpp
│ └── utils.h
├── linux
│ └── safe_crt.cpp
├── math_util.cpp
├── math_util.h
├── public
│ ├── linux
│ │ └── safe_crt.h
│ ├── rra_api_info.h
│ ├── rra_asic_info.h
│ ├── rra_assert.h
│ ├── rra_async_ray_history_loader.h
│ ├── rra_blas.h
│ ├── rra_bvh.h
│ ├── rra_error.h
│ ├── rra_macro.h
│ ├── rra_print.h
│ ├── rra_ray_history.h
│ ├── rra_rtip_info.h
│ ├── rra_system_info.h
│ ├── rra_tlas.h
│ └── rra_trace_loader.h
├── ray_history
│ ├── counter.h
│ ├── loader.cpp
│ ├── loader.h
│ ├── ray_history.cpp
│ ├── ray_history.h
│ └── raytracing_counter.h
├── rra_api_info.cpp
├── rra_asic_info.cpp
├── rra_assert.cpp
├── rra_async_ray_history_loader.cpp
├── rra_blas.cpp
├── rra_blas_impl.h
├── rra_bvh.cpp
├── rra_bvh_impl.h
├── rra_configuration.h
├── rra_data_set.cpp
├── rra_data_set.h
├── rra_print.cpp
├── rra_ray_history.cpp
├── rra_rtip_info.cpp
├── rra_system_info.cpp
├── rra_tlas.cpp
├── rra_tlas_impl.h
├── rra_trace_loader.cpp
├── string_table.cpp
├── string_table.h
├── surface_area_heuristic.cpp
├── surface_area_heuristic.h
├── user_marker_history.cpp
└── user_marker_history.h
├── frontend
├── CMakeLists.txt
├── constants.h
├── dark_mode_stylesheet.qss
├── io
│ ├── axis_free_camera_controller.cpp
│ ├── axis_free_camera_controller.h
│ ├── cad_camera_controller.cpp
│ ├── cad_camera_controller.h
│ ├── camera_controllers.cpp
│ ├── camera_controllers.h
│ ├── fps_camera_controller.cpp
│ ├── fps_camera_controller.h
│ ├── viewer_io.cpp
│ └── viewer_io.h
├── light_mode_stylesheet.qss
├── mac_osx
│ ├── MacOSXBundleInfo.plist.in
│ └── rra.icns
├── main.cpp
├── managers
│ ├── load_animation_manager.cpp
│ ├── load_animation_manager.h
│ ├── message_manager.cpp
│ ├── message_manager.h
│ ├── navigation_manager.cpp
│ ├── navigation_manager.h
│ ├── pane_manager.cpp
│ ├── pane_manager.h
│ ├── trace_manager.cpp
│ └── trace_manager.h
├── models
│ ├── acceleration_structure_flags_table_item_delegate.cpp
│ ├── acceleration_structure_flags_table_item_delegate.h
│ ├── acceleration_structure_flags_table_item_model.cpp
│ ├── acceleration_structure_flags_table_item_model.h
│ ├── acceleration_structure_tree_view_item.cpp
│ ├── acceleration_structure_tree_view_item.h
│ ├── acceleration_structure_tree_view_item_delegate.cpp
│ ├── acceleration_structure_tree_view_item_delegate.h
│ ├── acceleration_structure_tree_view_model.cpp
│ ├── acceleration_structure_tree_view_model.h
│ ├── acceleration_structure_viewer_model.cpp
│ ├── acceleration_structure_viewer_model.h
│ ├── blas
│ │ ├── blas_geometries_item_model.cpp
│ │ ├── blas_geometries_item_model.h
│ │ ├── blas_geometries_model.cpp
│ │ ├── blas_geometries_model.h
│ │ ├── blas_geometries_proxy_model.cpp
│ │ ├── blas_geometries_proxy_model.h
│ │ ├── blas_geometries_table_item_delegate.cpp
│ │ ├── blas_geometries_table_item_delegate.h
│ │ ├── blas_instances_model.cpp
│ │ ├── blas_instances_model.h
│ │ ├── blas_properties_model.cpp
│ │ ├── blas_properties_model.h
│ │ ├── blas_scene_collection_model.cpp
│ │ ├── blas_scene_collection_model.h
│ │ ├── blas_triangles_item_model.cpp
│ │ ├── blas_triangles_item_model.h
│ │ ├── blas_triangles_model.cpp
│ │ ├── blas_triangles_model.h
│ │ ├── blas_triangles_proxy_model.cpp
│ │ ├── blas_triangles_proxy_model.h
│ │ ├── blas_triangles_table_item_delegate.cpp
│ │ ├── blas_triangles_table_item_delegate.h
│ │ ├── blas_viewer_model.cpp
│ │ └── blas_viewer_model.h
│ ├── instance_list_table_item_delegate.cpp
│ ├── instance_list_table_item_delegate.h
│ ├── instances_item_model.cpp
│ ├── instances_item_model.h
│ ├── instances_proxy_model.cpp
│ ├── instances_proxy_model.h
│ ├── overview
│ │ ├── device_configuration_model.cpp
│ │ ├── device_configuration_model.h
│ │ ├── summary_model.cpp
│ │ └── summary_model.h
│ ├── ray
│ │ ├── ray_counters_item_model.cpp
│ │ ├── ray_counters_item_model.h
│ │ ├── ray_history_image_generator.cpp
│ │ ├── ray_history_image_generator.h
│ │ ├── ray_history_model.cpp
│ │ ├── ray_history_model.h
│ │ ├── ray_inspector_model.cpp
│ │ ├── ray_inspector_model.h
│ │ ├── ray_inspector_ray_table_proxy_model.h
│ │ ├── ray_inspector_ray_tree_item.cpp
│ │ ├── ray_inspector_ray_tree_item.h
│ │ ├── ray_inspector_ray_tree_item_delegate.cpp
│ │ ├── ray_inspector_ray_tree_item_delegate.h
│ │ ├── ray_inspector_ray_tree_model.cpp
│ │ ├── ray_inspector_ray_tree_model.h
│ │ ├── ray_inspector_ray_tree_proxy_model.cpp
│ │ ├── ray_inspector_ray_tree_proxy_model.h
│ │ ├── ray_inspector_scene_collection_model.cpp
│ │ ├── ray_inspector_scene_collection_model.h
│ │ ├── ray_list_item_model.cpp
│ │ ├── ray_list_item_model.h
│ │ ├── ray_list_proxy_model.cpp
│ │ ├── ray_list_proxy_model.h
│ │ ├── ray_list_table_item_delegate.cpp
│ │ └── ray_list_table_item_delegate.h
│ ├── scene.cpp
│ ├── scene.h
│ ├── scene_collection_model.cpp
│ ├── scene_collection_model.h
│ ├── scene_node.cpp
│ ├── scene_node.h
│ ├── side_panels
│ │ ├── side_panel_model.h
│ │ ├── view_model.cpp
│ │ └── view_model.h
│ ├── table_item_delegate.cpp
│ ├── table_item_delegate.h
│ ├── table_proxy_model.cpp
│ ├── table_proxy_model.h
│ ├── tlas
│ │ ├── blas_list_item_model.cpp
│ │ ├── blas_list_item_model.h
│ │ ├── blas_list_model.cpp
│ │ ├── blas_list_model.h
│ │ ├── blas_list_proxy_model.cpp
│ │ ├── blas_list_proxy_model.h
│ │ ├── blas_list_table_item_delegate.cpp
│ │ ├── blas_list_table_item_delegate.h
│ │ ├── tlas_instances_model.cpp
│ │ ├── tlas_instances_model.h
│ │ ├── tlas_properties_model.cpp
│ │ ├── tlas_properties_model.h
│ │ ├── tlas_scene_collection_model.cpp
│ │ ├── tlas_scene_collection_model.h
│ │ ├── tlas_viewer_model.cpp
│ │ └── tlas_viewer_model.h
│ ├── tree_view_proxy_model.cpp
│ ├── tree_view_proxy_model.h
│ ├── viewer_container_model.cpp
│ └── viewer_container_model.h
├── resources.qrc
├── settings
│ ├── geometry_settings.cpp
│ ├── geometry_settings.h
│ ├── settings.cpp
│ ├── settings.h
│ ├── settings_reader.cpp
│ ├── settings_reader.h
│ ├── settings_writer.cpp
│ └── settings_writer.h
├── stylesheet.qss
├── util
│ ├── file_util.cpp
│ ├── file_util.h
│ ├── log_file_writer.cpp
│ ├── log_file_writer.h
│ ├── rra_util.cpp
│ ├── rra_util.h
│ ├── stack_vector.h
│ ├── string_util.cpp
│ └── string_util.h
├── version.cpp
├── version.h.in
├── views
│ ├── acceleration_structure_tree_view.cpp
│ ├── acceleration_structure_tree_view.h
│ ├── acceleration_structure_viewer_pane.cpp
│ ├── acceleration_structure_viewer_pane.h
│ ├── base_pane.cpp
│ ├── base_pane.h
│ ├── blas
│ │ ├── blas_geometries_pane.cpp
│ │ ├── blas_geometries_pane.h
│ │ ├── blas_geometries_pane.ui
│ │ ├── blas_instances_pane.cpp
│ │ ├── blas_instances_pane.h
│ │ ├── blas_instances_pane.ui
│ │ ├── blas_properties_pane.cpp
│ │ ├── blas_properties_pane.h
│ │ ├── blas_properties_pane.ui
│ │ ├── blas_triangles_pane.cpp
│ │ ├── blas_triangles_pane.h
│ │ ├── blas_triangles_pane.ui
│ │ ├── blas_viewer_pane.cpp
│ │ ├── blas_viewer_pane.h
│ │ ├── blas_viewer_pane.ui
│ │ └── triangle_group.ui
│ ├── custom_widgets
│ │ ├── binary_checkbox.cpp
│ │ ├── binary_checkbox.h
│ │ ├── color_picker_button.cpp
│ │ ├── color_picker_button.h
│ │ ├── color_picker_widget.cpp
│ │ ├── color_picker_widget.h
│ │ ├── colored_checkbox.cpp
│ │ ├── colored_checkbox.h
│ │ ├── colored_radio_button.cpp
│ │ ├── colored_radio_button.h
│ │ ├── depth_slider_widget.cpp
│ │ ├── depth_slider_widget.h
│ │ ├── dispatch_legend.cpp
│ │ ├── dispatch_legend.h
│ │ ├── dispatch_loading_bar.cpp
│ │ ├── dispatch_loading_bar.h
│ │ ├── double_slider_heatmap_widget.cpp
│ │ ├── double_slider_heatmap_widget.h
│ │ ├── icon_button.cpp
│ │ ├── icon_button.h
│ │ ├── ray_history_graphics_view.cpp
│ │ ├── ray_history_graphics_view.h
│ │ ├── read_only_checkbox.cpp
│ │ ├── read_only_checkbox.h
│ │ ├── rgp_histogram_widget.cpp
│ │ ├── rgp_histogram_widget.h
│ │ ├── slider_style.h
│ │ ├── themes_and_colors_item_button.cpp
│ │ ├── themes_and_colors_item_button.h
│ │ ├── vertical_button_widget.cpp
│ │ └── vertical_button_widget.h
│ ├── debug_window.cpp
│ ├── debug_window.h
│ ├── debug_window.ui
│ ├── license_dialog.cpp
│ ├── license_dialog.h
│ ├── license_dialog.ui
│ ├── main_window.cpp
│ ├── main_window.h
│ ├── main_window.ui
│ ├── overview
│ │ ├── device_configuration_pane.cpp
│ │ ├── device_configuration_pane.h
│ │ ├── device_configuration_pane.ui
│ │ ├── dispatch_pane.cpp
│ │ ├── dispatch_pane.h
│ │ ├── dispatch_pane.ui
│ │ ├── summary_pane.cpp
│ │ ├── summary_pane.h
│ │ ├── summary_pane.ui
│ │ ├── tlas_pane.cpp
│ │ ├── tlas_pane.h
│ │ └── tlas_pane.ui
│ ├── ray
│ │ ├── ray_history_pane.cpp
│ │ ├── ray_history_pane.h
│ │ ├── ray_history_pane.ui
│ │ ├── ray_history_viewer_widget.ui
│ │ ├── ray_inspector_pane.cpp
│ │ ├── ray_inspector_pane.h
│ │ ├── ray_inspector_pane.ui
│ │ ├── ray_inspector_tree_view.cpp
│ │ └── ray_inspector_tree_view.h
│ ├── settings
│ │ ├── keyboard_shortcuts_pane.cpp
│ │ ├── keyboard_shortcuts_pane.h
│ │ ├── keyboard_shortcuts_pane.ui
│ │ ├── settings_pane.cpp
│ │ ├── settings_pane.h
│ │ ├── settings_pane.ui
│ │ ├── themes_and_colors_pane.cpp
│ │ ├── themes_and_colors_pane.h
│ │ └── themes_and_colors_pane.ui
│ ├── side_panels
│ │ ├── side_pane_container.cpp
│ │ ├── side_pane_container.h
│ │ ├── side_pane_container.ui
│ │ ├── view_pane.cpp
│ │ ├── view_pane.h
│ │ └── view_pane.ui
│ ├── start
│ │ ├── about_pane.cpp
│ │ ├── about_pane.h
│ │ ├── about_pane.ui
│ │ ├── recent_traces_pane.cpp
│ │ ├── recent_traces_pane.h
│ │ ├── recent_traces_pane.ui
│ │ ├── welcome_pane.cpp
│ │ ├── welcome_pane.h
│ │ └── welcome_pane.ui
│ ├── tlas
│ │ ├── blas_list_pane.cpp
│ │ ├── blas_list_pane.h
│ │ ├── blas_list_pane.ui
│ │ ├── tlas_instances_pane.cpp
│ │ ├── tlas_instances_pane.h
│ │ ├── tlas_instances_pane.ui
│ │ ├── tlas_properties_pane.cpp
│ │ ├── tlas_properties_pane.h
│ │ ├── tlas_properties_pane.ui
│ │ ├── tlas_viewer_pane.cpp
│ │ ├── tlas_viewer_pane.h
│ │ └── tlas_viewer_pane.ui
│ ├── viewer_container_widget.cpp
│ ├── viewer_container_widget.h
│ ├── viewer_container_widget.ui
│ ├── widget_util.cpp
│ └── widget_util.h
└── windows
│ ├── resource.h
│ ├── rra.rc
│ └── rra_icon.ico
└── renderer
├── CMakeLists.txt
├── camera.cpp
├── graphics_context.cpp
├── heatmap.cpp
├── intersect.cpp
├── orientation_gizmo.cpp
├── public
├── camera.h
├── graphics_context.h
├── heatmap.h
├── include_vma.h
├── intersect.h
├── orientation_gizmo.h
├── render_state_adapter.h
├── renderer_adapter.h
├── renderer_interface.h
├── renderer_types.h
├── renderer_widget.h
├── shared.h
└── view_state_adapter.h
├── renderer_interface.cpp
├── renderer_widget.cpp
├── shaders
├── BoundingVolumeHierarchyWire.hlsl
├── Clear.hlsl
├── Common.hlsl
├── GeometryColorAllowCompactionFlag.hlsl
├── GeometryColorAllowUpdateFlag.hlsl
├── GeometryColorBlasAverageDepth.hlsl
├── GeometryColorBlasAverageSAH.hlsl
├── GeometryColorBlasInstanceCount.hlsl
├── GeometryColorBlasInstanceId.hlsl
├── GeometryColorBlasMaxDepth.hlsl
├── GeometryColorBlasMinSAH.hlsl
├── GeometryColorBlasTriangleCount.hlsl
├── GeometryColorFinalOpacity.hlsl
├── GeometryColorGeometryIndex.hlsl
├── GeometryColorInstanceIndex.hlsl
├── GeometryColorInstanceMask.hlsl
├── GeometryColorLit.hlsl
├── GeometryColorLowMemoryFlag.hlsl
├── GeometryColorOpacity.hlsl
├── GeometryColorPreferFastBuildOrTrace.hlsl
├── GeometryColorRebraiding.hlsl
├── GeometryColorTechnical.hlsl
├── GeometryColorTreeLevel.hlsl
├── GeometryColorTriangleIndex.hlsl
├── GeometryColorTriangleSAH.hlsl
├── GeometryColorTriangleSplitting.hlsl
├── GeometryColorWireframe.hlsl
├── GeometryInstanceFacingCullDisable.hlsl
├── GeometryInstanceFlipFacing.hlsl
├── GeometryInstanceForceOpaqueOrNoOpaque.hlsl
├── Heatmap.hlsl
├── OrientationGizmo.hlsl
├── RayHistoryOffscreenRenderer.hlsl
├── RayInspectorOverlay.hlsl
├── RayInspectorOverlayIcons.hlsl
├── SelectionVolume.hlsl
├── TraversalShader.hlsl
├── rtip31
│ ├── GeometryColorPrimitiveStructure.hlsl
│ └── TraversalShaderOBB.hlsl
├── shared_definitions.hlsl
└── shared_impl.hlsl
├── shared.cpp
└── vk
├── adapters
├── render_state_adapter.cpp
└── view_state_adapter.cpp
├── bounding_volume_mesh.cpp
├── bounding_volume_mesh.h
├── buffer_guard.cpp
├── buffer_guard.h
├── framework
├── command_buffer_ring.cpp
├── command_buffer_ring.h
├── device.cpp
├── device.h
├── device_properties.cpp
├── device_properties.h
├── ext_debug_utils.cpp
├── ext_debug_utils.h
├── ext_gpu_validation.cpp
├── ext_gpu_validation.h
├── ext_validation.cpp
├── ext_validation.h
├── instance.cpp
├── instance.h
├── instance_properties.cpp
├── instance_properties.h
├── swap_chain.cpp
└── swap_chain.h
├── image_guard.cpp
├── image_guard.h
├── mesh.h
├── orientation_gizmo_mesh.cpp
├── orientation_gizmo_mesh.h
├── ray_history_offscreen_renderer.cpp
├── ray_history_offscreen_renderer.h
├── render_module.cpp
├── render_module.h
├── render_modules
├── bounding_volume.cpp
├── bounding_volume.h
├── checker_clear.cpp
├── checker_clear.h
├── mesh_render_module.cpp
├── mesh_render_module.h
├── orientation_gizmo_module.cpp
├── orientation_gizmo_module.h
├── ray_inspector_overlay.cpp
├── ray_inspector_overlay.h
├── selection_module.cpp
├── selection_module.h
├── traversal.cpp
└── traversal.h
├── renderer_vulkan.cpp
├── renderer_vulkan.h
├── util_vulkan.cpp
├── util_vulkan.h
├── vk_graphics_context.cpp
└── vk_graphics_context.h
/.clang-format:
--------------------------------------------------------------------------------
1 | BasedOnStyle: Google
2 | IndentWidth: 4
3 | UseTab: Never
4 | ColumnLimit: 160
5 | Language: Cpp
6 | AccessModifierOffset: -4
7 | BreakBeforeBraces: Custom
8 | BraceWrapping:
9 |
10 | AfterCaseLabel: true
11 | AfterClass: true
12 | AfterControlStatement: true
13 | AfterEnum: true
14 | AfterFunction: true
15 | AfterNamespace: true
16 | AfterObjCDeclaration: true
17 | AfterStruct: true
18 | AfterUnion: true
19 | AfterExternBlock: false
20 | BeforeCatch: true
21 | BeforeElse: true
22 | IndentBraces: false
23 | SplitEmptyFunction: true
24 | SplitEmptyRecord: true
25 | SplitEmptyNamespace: true
26 | ConstructorInitializerAllOnOneLineOrOnePerLine : false
27 | BreakConstructorInitializers: BeforeComma
28 | DerivePointerAlignment: false
29 | IndentCaseLabels: false
30 | NamespaceIndentation: All
31 | AlignConsecutiveAssignments: true
32 | AlignConsecutiveDeclarations: true
33 | AlignEscapedNewlines: Left
34 | AlignTrailingComments: true
35 | AlignOperands: true
36 | AllowShortFunctionsOnASingleLine: false
37 | AllowShortIfStatementsOnASingleLine: false
38 | AllowShortLoopsOnASingleLine: false
39 | AllowShortBlocksOnASingleLine: false
40 | ReflowComments: false
41 | SortIncludes: false
42 | SortUsingDeclarations: false
43 | BinPackArguments: false
44 | BinPackParameters: false
45 | ExperimentalAutoDetectBinPacking: false
46 | AllowAllParametersOfDeclarationOnNextLine: false
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.png filter=lfs diff=lfs merge=lfs -text
2 | *.rra filter=lfs diff=lfs merge=lfs -text
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *~
2 | *.pyc
3 | *.orig
4 | __pycache__/
5 | build/linux
6 | build/mac
7 | build/win
8 | cmake-build*/
9 | .idea/
10 | documentation/build
11 | documentation/source/_build
12 | source/frontend/version.h
13 | Buildinfo.properties
14 | external
15 | .vscode
16 | *.aps
17 |
--------------------------------------------------------------------------------
/.readthedocs.yaml:
--------------------------------------------------------------------------------
1 | # Read the Docs configuration file.
2 | # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details.
3 |
4 | version: 2
5 | build:
6 | os: ubuntu-22.04
7 | tools:
8 | python: "3.11"
9 | jobs:
10 | post_checkout:
11 | # Download and uncompress the binary
12 | # https://git-lfs.github.com/
13 | - wget https://github.com/git-lfs/git-lfs/releases/download/v3.1.4/git-lfs-linux-amd64-v3.1.4.tar.gz
14 | - tar xvfz git-lfs-linux-amd64-v3.1.4.tar.gz
15 | # Modify LFS config paths to point where git-lfs binary was downloaded
16 | - git config filter.lfs.process "`pwd`/git-lfs filter-process"
17 | - git config filter.lfs.smudge "`pwd`/git-lfs smudge -- %f"
18 | - git config filter.lfs.clean "`pwd`/git-lfs clean -- %f"
19 | # Make LFS available in current repository
20 | - ./git-lfs install
21 | # Download content from remote
22 | - ./git-lfs fetch
23 | # Make local files to have the real content on them
24 | - ./git-lfs checkout
25 |
26 | # Build documentation in the docs/source directory with Sphinx
27 | sphinx:
28 | configuration: documentation/source/conf.py
29 |
30 | # Explicitly set the version of Python and its requirements
31 | python:
32 | install:
33 | - requirements: documentation/requirements.txt
34 |
--------------------------------------------------------------------------------
/Buildinfo.properties.in:
--------------------------------------------------------------------------------
1 | BUILD_NUMBER=@RRA_BUILD_NUMBER@
2 | VERSION_NUMBER=@RRA_MAJOR_VERSION@.@RRA_MINOR_VERSION@
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022-2025 Advanced Micro Devices, Inc.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/build/qt.conf:
--------------------------------------------------------------------------------
1 | [Paths]
2 | Prefix = ./
3 |
--------------------------------------------------------------------------------
/documentation/requirements.txt:
--------------------------------------------------------------------------------
1 | # Defining requirements for docs
2 | sphinx==5.3.0
3 | sphinx_rtd_theme==1.1.1
4 | readthedocs-sphinx-search==0.1.1
--------------------------------------------------------------------------------
/documentation/source/_static/style.css:
--------------------------------------------------------------------------------
1 | .wy-nav-content {
2 | max-width: none;
3 | }
4 |
--------------------------------------------------------------------------------
/documentation/source/_static/theme_overrides.css:
--------------------------------------------------------------------------------
1 |
2 |
3 | img {
4 | max-width: 100%;
5 | max-height: auto;
6 | box-shadow: 6px 6px #eee;
7 | -ms-interpolation-mode: bicubic;
8 | border: 1px solid #ccc;
9 | }
10 |
11 | table {
12 | font-size: 12px;
13 | }
--------------------------------------------------------------------------------
/documentation/source/_templates/layout.html:
--------------------------------------------------------------------------------
1 | {% extends "!layout.html" %}
2 | {% block extrahead %}
3 |
4 | {% endblock %}
5 |
--------------------------------------------------------------------------------
/documentation/source/media/blas/blas_instances_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:eb5b4f36aa873dfa8f3bd8a706858c4d0b2b4256350bac4a542d8f4b6a5a87b3
3 | size 95910
4 |
--------------------------------------------------------------------------------
/documentation/source/media/blas/blas_properties_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:b7dba14ae6fbe0991872779e50ce20eb7698301ab3f5f45a273af7f5f2130200
3 | size 33538
4 |
--------------------------------------------------------------------------------
/documentation/source/media/blas/blas_viewer_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:800e75b232d9819c28f1a9e652aa83084baa850c173787c35043d9f041d41517
3 | size 262494
4 |
--------------------------------------------------------------------------------
/documentation/source/media/blas/geometries_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:0daffc0f21149f5d3bebfe27518355a32dfe6d76a39a3c2da64fac848a5caf94
3 | size 21181
4 |
--------------------------------------------------------------------------------
/documentation/source/media/blas/split_triangles_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:ebb9c57ea1e8879e95fc87bee5405a568a16567e07e9592b6bf601e923db74bb
3 | size 22081
4 |
--------------------------------------------------------------------------------
/documentation/source/media/blas/split_triangles_2.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:3728f639b83424613e9b865e49f4493394fd449fd1337fc3a20567c4162f90b1
3 | size 28587
4 |
--------------------------------------------------------------------------------
/documentation/source/media/blas/split_triangles_stats_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:50d5e8e855ca8a093456d44f637c22a1874b69dbb97b5a2795e9126a5f9e0618
3 | size 28577
4 |
--------------------------------------------------------------------------------
/documentation/source/media/blas/triangles_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:bc37f36eec10923dc57f4b11c8256d4069c462b0e37185287f56688b6fa52d1e
3 | size 90480
4 |
--------------------------------------------------------------------------------
/documentation/source/media/overview/driver_experiments_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:11d1209323d5a356b1cf594289b712b875173cf297c53ea7c92b10d130f862ab
3 | size 97596
4 |
--------------------------------------------------------------------------------
/documentation/source/media/overview/summary_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:96c807c18853ec9d9d954bd7d2f8e3b0e688ac9bdcc434656492070007d5b9dd
3 | size 122800
4 |
--------------------------------------------------------------------------------
/documentation/source/media/overview/system_info_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:e21477bca066d90c6d608cb3f8ee9bcb05ebe8c22cbeb233705c4da9ab243a9d
3 | size 49906
4 |
--------------------------------------------------------------------------------
/documentation/source/media/overview/user_markers.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:005afa7c0387ec9b15970cecfbb0a261958575e3ed64e9b96266af3762b4f75a
3 | size 33646
4 |
--------------------------------------------------------------------------------
/documentation/source/media/ray/ray_history_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:298b4657ec5f6aa1fa9963ef94f92b4d4847616687ce89a7dece06f08d711f2d
3 | size 177928
4 |
--------------------------------------------------------------------------------
/documentation/source/media/ray/ray_history_2.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:0c64203df84011f2c24e9d3eb8a63e8fb2f6f30f9b066f7a01d0d821d368f414
3 | size 149905
4 |
--------------------------------------------------------------------------------
/documentation/source/media/ray/ray_inspector_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GPUOpen-Tools/radeon_raytracing_analyzer/1fe3c6fb6da27b1a38726969c7c1874d274f567d/documentation/source/media/ray/ray_inspector_1.jpg
--------------------------------------------------------------------------------
/documentation/source/media/ray/ray_inspector_2.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:09ebda7fe31352bfb98ded78acd316f5a16dc23c7d3ed2d48c05c2c444a9e174
3 | size 64564
4 |
--------------------------------------------------------------------------------
/documentation/source/media/ray/ray_inspector_3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GPUOpen-Tools/radeon_raytracing_analyzer/1fe3c6fb6da27b1a38726969c7c1874d274f567d/documentation/source/media/ray/ray_inspector_3.jpg
--------------------------------------------------------------------------------
/documentation/source/media/ray/ray_inspector_4.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:b52041aa6d719f5c703ebdb1ec68433383c00a3b6dfb15fa95a38d4eaf969c8f
3 | size 19788
4 |
--------------------------------------------------------------------------------
/documentation/source/media/ray/ray_user_markers.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:fa76d7dbea091ed1b06cfef26cc8c43e2a9cb19cddb6725bc3f3577aa489eeeb
3 | size 16338
4 |
--------------------------------------------------------------------------------
/documentation/source/media/recent_traces_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:4665380fa49184e3813e68c3bba38f2cd2d2228d5699013c45de160c5318af73
3 | size 38955
4 |
--------------------------------------------------------------------------------
/documentation/source/media/reset.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:8e526f9b353370dd29182708f4deb0219bcae776b47114a04f04f0c4c62f9a3a
3 | size 728
4 |
--------------------------------------------------------------------------------
/documentation/source/media/settings/dark_theme_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:bda97a5ec0ccf50ba971717dae14eb31e6858923a443f268d9e10d5a6c453e86
3 | size 83321
4 |
--------------------------------------------------------------------------------
/documentation/source/media/settings/dark_theme_prompt.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:1f3b707e2e459d21e70d34ea6cc1e77f88e1a0930d4454a263d07a9ad911eda0
3 | size 9393
4 |
--------------------------------------------------------------------------------
/documentation/source/media/settings/general_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:b8a1c17bdb7dcf252d1420e55db49381789c8b6203d0ead90a1f16f54b17ad3d
3 | size 44935
4 |
--------------------------------------------------------------------------------
/documentation/source/media/settings/keyboard_shortcuts_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:15390ed0ca544b4d3a1dd63459b4680ab9462a4b627d8db66971c692300fa71c
3 | size 52964
4 |
--------------------------------------------------------------------------------
/documentation/source/media/settings/themes_and_colors_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:afde1fa2fe5e2450f7d180cb82822e6950cca5c873c829d6232dc762d7d5e6ad
3 | size 46829
4 |
--------------------------------------------------------------------------------
/documentation/source/media/tlas/blas_list_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:70182043ef4a64ef5261bba9e98f3bb8db95c47d41b1886b26c781837b551ea4
3 | size 102840
4 |
--------------------------------------------------------------------------------
/documentation/source/media/tlas/context_menu_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:faaf98a2e07e6c5fdda0c0599d395c56b345022d0c5d91a17cd0877a3730e850
3 | size 28294
4 |
--------------------------------------------------------------------------------
/documentation/source/media/tlas/depth_slider.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:45f3dca2b140573e8e7d1ffb024eefd6c9715d8b3dc367c7975f3611defc793b
3 | size 1033
4 |
--------------------------------------------------------------------------------
/documentation/source/media/tlas/instance_mask_filter.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:04f22cfdfab6f541bc8944224ac51f5d3d5501f9f0ca317aecf9ac9407b22cb8
3 | size 2492
4 |
--------------------------------------------------------------------------------
/documentation/source/media/tlas/loop_count.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GPUOpen-Tools/radeon_raytracing_analyzer/1fe3c6fb6da27b1a38726969c7c1874d274f567d/documentation/source/media/tlas/loop_count.jpg
--------------------------------------------------------------------------------
/documentation/source/media/tlas/popout_view_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:35ff141ad0e7308c6b2e76485abaf6156ba4c244dc135bcd64916d7510497580
3 | size 19354
4 |
--------------------------------------------------------------------------------
/documentation/source/media/tlas/popout_view_2.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:a3cfc9d010f2ac799b2fd333b37a3161bf951415f58a5ee2c3f3243dc4306ce3
3 | size 18793
4 |
--------------------------------------------------------------------------------
/documentation/source/media/tlas/popout_view_3.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:8b49c2fbb31b4928cfe26013e1fc56a18ec29333b3ae2d2e8093007295de13ac
3 | size 24555
4 |
--------------------------------------------------------------------------------
/documentation/source/media/tlas/rebraiding_stats_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:9ed6f1af7f797476ed2509ee970c6979fb2fff8c2ae498d64e5c795925211fe0
3 | size 32381
4 |
--------------------------------------------------------------------------------
/documentation/source/media/tlas/tlas_instances_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:08a2cc5166e6bbc2b68a1420f06a6abfa574941e8ba293c4a109a15d9332822f
3 | size 102446
4 |
--------------------------------------------------------------------------------
/documentation/source/media/tlas/tlas_properties_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:b7888f584a7478413416d9103e6d2fd7b95365184bb83e2e2b7482b332c354f9
3 | size 27920
4 |
--------------------------------------------------------------------------------
/documentation/source/media/tlas/tlas_viewer_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GPUOpen-Tools/radeon_raytracing_analyzer/1fe3c6fb6da27b1a38726969c7c1874d274f567d/documentation/source/media/tlas/tlas_viewer_1.jpg
--------------------------------------------------------------------------------
/documentation/source/media/welcome_1.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:4e14548f6aab8c44b0efaac3a70be60a5a973396aa817ab8a6909055c2819e4f
3 | size 54236
4 |
--------------------------------------------------------------------------------
/documentation/source/media/zoom_in.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:e027edc3f48b3d348a03c62c80b78b084f4cd6508f57276fd3fa6265d2a6ff26
3 | size 1425
4 |
--------------------------------------------------------------------------------
/documentation/source/media/zoom_out.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:5673ce56c454c3df2c0d7c940232963777a107ab6d96d24c22a3196a02fc0e99
3 | size 1340
4 |
--------------------------------------------------------------------------------
/documentation/source/media/zoom_reset.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:dbc5a15b44e17dc9f2f724bcd0494abf11be6e2aebf4c7bf828ee7fb546449a2
3 | size 1543
4 |
--------------------------------------------------------------------------------
/documentation/source/media/zoom_to_selection.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:a303f14f34205d4efdc60c55b8a2b5abefd1918c62b88a05043750e2518ad59c
3 | size 1281
4 |
--------------------------------------------------------------------------------
/samples/brick_wall.rra:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:422a638a609bba8c3d9ef5b759e6d8f1e9a40e0995b2c36acacc06ace3a3d6f6
3 | size 28642240
4 |
--------------------------------------------------------------------------------
/samples/character.rra:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:4c511add32fefd61cc0add5f23d87e6cdfbfbd3f397ac45b1cd065ebfb9262a0
3 | size 28713744
4 |
--------------------------------------------------------------------------------
/samples/face_culling.rra:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:2b74c23e56e7c401250a8d3c94d1c41d28aaa60b36a73d840453295e379e58f4
3 | size 4542748
4 |
--------------------------------------------------------------------------------
/samples/landscape.rra:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:dee8b87080c5272930ecc0d814c89a0fed7bc6fb7c70183e14d75b9f9aa66b80
3 | size 10906727
4 |
--------------------------------------------------------------------------------
/samples/scaffolding.rra:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:b5df46d2b049e01339a99a0223bb13d14f9e4e4c20848cc15020dfbec3c32130
3 | size 2149351
4 |
--------------------------------------------------------------------------------
/samples/springs.rra:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:cbc83ec2a269351e8f7d5f697b4b51fde2c49bd5bf1e00ca9ecb43d820671126
3 | size 3160048
4 |
--------------------------------------------------------------------------------
/samples/trees.rra:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:4444074a0a62dece7f2aae5e1f93fe629092f6040d32a0adf3dff620b3ac56b9
3 | size 12842552
4 |
--------------------------------------------------------------------------------
/samples/update_blas.rra:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:d4a2f9e906fbc1fd544b77a88f64a99964c7236cf91fcd5a5aabdca2d15989be
3 | size 1221062
4 |
--------------------------------------------------------------------------------
/source/assets/amd_logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/arrow_gray_left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/arrow_gray_right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/browse_back_disabled.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/browse_back_normal.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/browse_back_pressed.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/browse_fwd_disabled.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/browse_fwd_normal.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/browse_fwd_pressed.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/checkbox_off.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/checkbox_off_gray.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/checkbox_on.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/checkbox_on_gray.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/icon_32x32.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:8b706a266bf63949012266af6966b80c4bdf3b227356b235c49ec73f75047a3b
3 | size 1646
4 |
--------------------------------------------------------------------------------
/source/assets/icon_48x48.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:79ba7e396a49bf6fdb780eba3b3d3711bc513071c0346c872b9a25c8b95a3ba3
3 | size 2486
4 |
--------------------------------------------------------------------------------
/source/assets/kbd_mouse.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/kbd_mouse_clickable-dark-theme.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/kbd_mouse_clickable.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/kbd_mouse_hover.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/pulldown_off_gray.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/pulldown_on_gray.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/stop_128x128.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:75728c45b1715840d65c69cb368cdaee5b494aee7d6b0a07eb50a41f13778850
3 | size 2886
4 |
--------------------------------------------------------------------------------
/source/assets/third_party/ionicons/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Drifty (http://drifty.com/)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/source/assets/third_party/ionicons/information-circle-outline.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/third_party/ionicons/lock-closed-outline-hover.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
63 |
--------------------------------------------------------------------------------
/source/assets/third_party/ionicons/lock-closed-outline.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
37 |
--------------------------------------------------------------------------------
/source/assets/third_party/ionicons/lock-open-outline.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
65 |
--------------------------------------------------------------------------------
/source/assets/third_party/ionicons/scan-outline-clickable-dark-theme.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
51 |
--------------------------------------------------------------------------------
/source/assets/third_party/ionicons/scan-outline-clickable.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
51 |
--------------------------------------------------------------------------------
/source/assets/third_party/ionicons/scan-outline-hover.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
48 |
--------------------------------------------------------------------------------
/source/assets/third_party/ionicons/scan-outline.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
36 |
--------------------------------------------------------------------------------
/source/assets/third_party/ionicons/search_icon.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:2e3d0684d52989104547f561162c14e8a467e002319863a86d33c092a30b8083
3 | size 346
4 |
--------------------------------------------------------------------------------
/source/assets/third_party/ionicons/wand-clickable.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
41 |
--------------------------------------------------------------------------------
/source/assets/third_party/ionicons/wand-hover.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
41 |
--------------------------------------------------------------------------------
/source/assets/third_party/ionicons/wand.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/zoom_in.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/zoom_in_disabled.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/zoom_out.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/zoom_out_disabled.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/zoom_reset.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/zoom_reset_disabled.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/zoom_to_selection.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/assets/zoom_to_selection_disabled.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/source/backend/bvh/bvh_index_reference_map.cpp:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2021-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief BVH Index reference map implementation.
6 | //=============================================================================
7 |
8 | #include "bvh/bvh_index_reference_map.h"
9 |
10 | #include "rdf/rdf/inc/amdrdf.h"
11 |
12 | #include "public/rra_assert.h"
13 |
14 | namespace rta
15 | {
16 | // Collection of bvhs of different acceleration structure types.
17 | struct IndexReferenceEntry
18 | {
19 | std::uint64_t index;
20 | std::uintptr_t ptr;
21 | };
22 |
23 | } // namespace rta
24 |
--------------------------------------------------------------------------------
/source/backend/bvh/bvh_index_reference_map.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2021-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief BVH Index reference map definition.
6 | //=============================================================================
7 |
8 | #ifndef RRA_BACKEND_BVH_BVH_INDEX_REFERENCE_MAP_H_
9 | #define RRA_BACKEND_BVH_BVH_INDEX_REFERENCE_MAP_H_
10 |
11 | #include
12 |
13 | #include "rdf/rdf/inc/amdrdf.h"
14 |
15 | namespace rta
16 | {
17 | } // namespace rta
18 |
19 | #endif // RRA_BACKEND_BVH_BVH_INDEX_REFERENCE_MAP_H_
20 |
--------------------------------------------------------------------------------
/source/backend/bvh/geometry_info.cpp:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2022-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Implementation of the geometry info class.
6 | //=============================================================================
7 |
8 | #include "geometry_info.h"
9 |
10 | namespace dxr
11 | {
12 | // Check if headers and descriptions are trivially copyable (memcpy support).
13 | static_assert(std::is_trivially_copyable::value, "DXR::AMD::GeometryInfo must be a trivially copyable class.");
14 |
15 | // Check if the size of structs is as expected.
16 | static_assert(sizeof(amd::GeometryInfo) == amd::kGeometryInfoSize, "Size of GeometryDesc does not match the expected byte size");
17 |
18 | namespace amd
19 | {
20 | GeometryFlags GeometryInfo::GetGeometryFlags() const
21 | {
22 | return static_cast(geometry_flags);
23 | }
24 |
25 | std::uint32_t GeometryInfo::GetPrimitiveCount() const
26 | {
27 | return primitive_count;
28 | }
29 |
30 | std::uint32_t GeometryInfo::GetPrimitiveNodePtrsOffset() const
31 | {
32 | return primitive_node_ptrs_offset_;
33 | }
34 | } // namespace amd
35 | } // namespace dxr
36 |
--------------------------------------------------------------------------------
/source/backend/bvh/geometry_info.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2022-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Definition for the geometry info class.
6 | //=============================================================================
7 |
8 | #ifndef RRA_BACKEND_BVH_GEOMETRY_INFO_H_
9 | #define RRA_BACKEND_BVH_GEOMETRY_INFO_H_
10 |
11 | #include "bvh/dxr_definitions.h"
12 |
13 | namespace dxr
14 | {
15 | namespace amd
16 | {
17 | class GeometryInfo final
18 | {
19 | public:
20 | /// @brief Constructor.
21 | GeometryInfo() = default;
22 |
23 | /// @brief Destructor.
24 | ~GeometryInfo() = default;
25 |
26 | /// @brief Obtain the geometry flags.
27 | ///
28 | /// @return The geometry flags.
29 | GeometryFlags GetGeometryFlags() const;
30 |
31 | /// @brief Obtain the primitive count.
32 | ///
33 | /// return The primitive count.
34 | std::uint32_t GetPrimitiveCount() const;
35 |
36 | /// @brief Get the offset to the primitive node pointers.
37 | ///
38 | /// @return The primitive node pointer offset.
39 | std::uint32_t GetPrimitiveNodePtrsOffset() const;
40 |
41 | private:
42 | union ///< Encodes the geometry flags (opaque, non_opaque, ...) and number of primitives.
43 | {
44 | struct
45 | {
46 | std::uint32_t primitive_count : 29;
47 | std::uint32_t geometry_flags : 3;
48 | };
49 | std::uint32_t geometry_flags_and_primitive_count_ = 0;
50 | };
51 |
52 | std::uint32_t geometry_buffer_offset_ = 0; ///< Byte offset to the geometry buffer (leaf nodes)
53 |
54 | std::uint32_t primitive_node_ptrs_offset_ =
55 | 0; ///< Byte offset from the base of all primitive node ptrs to this geometry's prim node ptrs. Each node pointer points to the primitive.
56 | };
57 |
58 | } // namespace amd
59 | } // namespace dxr
60 |
61 | #endif // RRA_BACKEND_BVH_GEOMETRY_INFO_H_
62 |
--------------------------------------------------------------------------------
/source/backend/bvh/metadata_v1.cpp:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2022-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Implementation of the V1 MetaData class.
6 | //=============================================================================
7 |
8 | #include "metadata_v1.h"
9 |
10 | namespace dxr
11 | {
12 | // Check if headers and descriptions are trivially copyable (memcpy support)
13 | static_assert(std::is_trivially_copyable::value, "DXR::AMD::MetaData must be a trivially copyable class.");
14 |
15 | // Check if the size of structs is as expected.
16 | static_assert(sizeof(rta::GpuVirtualAddress) == sizeof(std::uint64_t), "GpuVirtualAddress does not have the expected byte size");
17 | static_assert(sizeof(amd::MetaDataV1) == amd::kMetaDataV1Size, "Metadata does not have the expected byte size.");
18 |
19 | } // namespace dxr
20 |
21 | namespace dxr
22 | {
23 | namespace amd
24 | {
25 | void MetaDataV1::SetGpuVa(const rta::GpuVirtualAddress gpu_address)
26 | {
27 | std::uint32_t high_bits = gpu_address >> 32;
28 | std::uint32_t low_bits = static_cast(gpu_address);
29 |
30 | id_low_ = low_bits;
31 | id_high_ = high_bits;
32 | }
33 |
34 | rta::GpuVirtualAddress MetaDataV1::GetGpuVirtualAddress() const
35 | {
36 | rta::GpuVirtualAddress gpu_va = static_cast(id_high_);
37 | gpu_va = (gpu_va << 32) | static_cast(id_low_);
38 |
39 | return gpu_va;
40 | }
41 |
42 | std::uint32_t MetaDataV1::GetByteSize() const
43 | {
44 | return byte_size_;
45 | }
46 |
47 | } // namespace amd
48 | } // namespace dxr
49 |
--------------------------------------------------------------------------------
/source/backend/bvh/node_types/box_node.cpp:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2022-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Box node helper functions.
6 | //=============================================================================
7 |
8 | #include "bvh/node_types/box_node.h"
9 |
10 | #include "bvh/node_pointer.h"
11 |
12 | namespace dxr
13 | {
14 | namespace amd
15 | {
16 | std::uint32_t GetValidChildCountFromArray(const std::array& children)
17 | {
18 | std::uint32_t num_children = 0;
19 | for (const auto& c : children)
20 | {
21 | num_children += static_cast(!c.IsInvalid());
22 | }
23 |
24 | return num_children;
25 | }
26 |
27 | } // namespace amd
28 | } // namespace dxr
29 |
--------------------------------------------------------------------------------
/source/backend/bvh/node_types/box_node.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2022-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Box node helper functions.
6 | //=============================================================================
7 |
8 | #ifndef RRA_BACKEND_BVH_NODE_TYPES_BOX_NODE_H_
9 | #define RRA_BACKEND_BVH_NODE_TYPES_BOX_NODE_H_
10 |
11 | #include
12 | #include
13 |
14 | #include "bvh/node_pointer.h"
15 |
16 | namespace dxr
17 | {
18 | namespace amd
19 | {
20 | /// @brief Get the number of valid child nodes.
21 | ///
22 | /// @param children An array of child nodes.
23 | ///
24 | /// @return The number of valid child nodes.
25 | std::uint32_t GetValidChildCountFromArray(const std::array& children);
26 |
27 | } // namespace amd
28 | } // namespace dxr
29 |
30 | #endif // RRA_BACKEND_BVH_NODE_TYPES_BOX_NODE_H_
31 |
--------------------------------------------------------------------------------
/source/backend/bvh/node_types/float16_box_node.cpp:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2022-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Implementation for a float 16 box node class.
6 | //=============================================================================
7 |
8 | #include "bvh/node_types/float16_box_node.h"
9 | #include "bvh/node_types/box_node.h"
10 |
11 | #include "bvh/utils.h"
12 |
13 | namespace dxr
14 | {
15 | // Check if headers and descriptions are trivially copyable (memcpy support).
16 | static_assert(std::is_trivially_copyable::value, "DXR::AMD::Float16BoxNode must be a trivially copyable class.");
17 |
18 | // Check if the size of structs is as expected.
19 | static_assert(sizeof(amd::Float16BoxNode) == amd::kFp16BoxNodeSize, "Float16BoxNode does not have the expected byte size.");
20 |
21 | namespace amd
22 | {
23 | const std::array& Float16BoxNode::GetChildren() const
24 | {
25 | return children_;
26 | }
27 |
28 | const std::array Float16BoxNode::GetBoundingBoxes() const
29 | {
30 | std::array fp32_bounding_boxes;
31 |
32 | rta::ConvertHalfToFloat(reinterpret_cast(bounding_boxes_.data()), reinterpret_cast(fp32_bounding_boxes.data()), 4 * 6);
33 |
34 | return fp32_bounding_boxes;
35 | }
36 |
37 | std::uint32_t Float16BoxNode::GetValidChildCount() const
38 | {
39 | return GetValidChildCountFromArray(children_);
40 | }
41 |
42 | } // namespace amd
43 | } // namespace dxr
44 |
--------------------------------------------------------------------------------
/source/backend/bvh/node_types/float32_box_node.cpp:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2022-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Implementation for a float 32 box node class.
6 | //=============================================================================
7 |
8 | #include "bvh/node_types/float32_box_node.h"
9 | #include "bvh/node_types/box_node.h"
10 |
11 | namespace dxr
12 | {
13 | // Check if headers and descriptions are trivially copyable (memcpy support).
14 | static_assert(std::is_trivially_copyable::value, "DXR::AMD::Float32BoxNode must be a trivially copyable class.");
15 |
16 | // Check if the size of structs is as expected.
17 | static_assert(sizeof(amd::Float32BoxNode) == amd::kFp32BoxNodeSize, "Float32BoxNode does not have the expected byte size.");
18 |
19 | namespace amd
20 | {
21 | const std::array& Float32BoxNode::GetChildren() const
22 | {
23 | return children_;
24 | }
25 |
26 | const std::array& Float32BoxNode::GetBoundingBoxes() const
27 | {
28 | return bounding_boxes_;
29 | }
30 |
31 | std::uint32_t Float32BoxNode::GetValidChildCount() const
32 | {
33 | return GetValidChildCountFromArray(children_);
34 | }
35 | } // namespace amd
36 | } // namespace dxr
37 |
--------------------------------------------------------------------------------
/source/backend/bvh/node_types/float32_box_node.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2022-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Definition of a float 32 box node class.
6 | //=============================================================================
7 |
8 | #ifndef RRA_BACKEND_BVH_NODE_TYPES_FLOAT32_BOX_NODE_H_
9 | #define RRA_BACKEND_BVH_NODE_TYPES_FLOAT32_BOX_NODE_H_
10 |
11 | #include "bvh/node_pointer.h"
12 |
13 | namespace dxr
14 | {
15 | namespace amd
16 | {
17 | // Default layout of an internal node in Blas.
18 | class Float32BoxNode final
19 | {
20 | public:
21 | /// @brief Constructor.
22 | Float32BoxNode() = default;
23 |
24 | /// @brief Destructor.
25 | ~Float32BoxNode() = default;
26 |
27 | /// @brief Get the child nodes.
28 | ///
29 | /// @return The child nodes.
30 | const std::array& GetChildren() const;
31 |
32 | /// @brief Get the bounding volumes.
33 | ///
34 | /// @return The bounding volumes.
35 | const std::array& GetBoundingBoxes() const;
36 |
37 | /// @brief Get the number of valid child nodes. They can be scattered across all 4 positions.
38 | ///
39 | /// @return The number of valid child nodes.
40 | std::uint32_t GetValidChildCount() const;
41 |
42 | private:
43 | std::array children_ = {}; ///< Array of child nodes.
44 | std::array bounding_boxes_ = {}; ///< Array of bounding volumes.
45 | std::uint32_t reserved_ = 0; ///< Reserved.
46 | std::uint32_t reserved2_ = 0; ///< Reserved.
47 | std::array padding_ = {}; ///< Padding.
48 | };
49 | } // namespace amd
50 | } // namespace dxr
51 |
52 | #endif // RRA_BACKEND_BVH_NODE_TYPES_FLOAT32_BOX_NODE_H_
53 |
--------------------------------------------------------------------------------
/source/backend/bvh/node_types/procedural_node.cpp:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2022-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Implementation for a procedural node class.
6 | //=============================================================================
7 |
8 | #include "bvh/node_types/procedural_node.h"
9 |
10 | #include // --> isnan, isinf
11 |
12 | namespace dxr
13 | {
14 | // Check if headers and descriptions are trivially copyable (memcpy support).
15 | static_assert(std::is_trivially_copyable::value, "DXR::AMD::ProceduralNode must be a trivially copyable class.");
16 |
17 | // Check if the size of structs is as expected.
18 | static_assert(sizeof(amd::ProceduralNode) == amd::kLeafNodeSize, "ProceduralNode does not have the expected byte size.");
19 |
20 | namespace amd
21 | {
22 | const AxisAlignedBoundingBox& ProceduralNode::GetBoundingBox() const
23 | {
24 | return bounding_box_;
25 | }
26 |
27 | std::uint32_t ProceduralNode::GetGeometryIndex() const
28 | {
29 | return geometry_index;
30 | }
31 |
32 | GeometryFlags ProceduralNode::GetGeometryFlags() const
33 | {
34 | return static_cast(geometry_flags);
35 | }
36 |
37 | std::uint32_t ProceduralNode::GetPrimitiveIndex() const
38 | {
39 | return primitive_index_;
40 | }
41 |
42 | bool ProceduralNode::IsInactive() const
43 | {
44 | return std::isnan(bounding_box_.min.x);
45 | }
46 |
47 | bool ProceduralNode::ContainsNaN() const
48 | {
49 | return std::isnan(bounding_box_.min.x) || std::isnan(bounding_box_.min.y) || std::isnan(bounding_box_.min.z) || std::isnan(bounding_box_.max.x) ||
50 | std::isnan(bounding_box_.max.y) || std::isnan(bounding_box_.max.z);
51 | }
52 |
53 | } // namespace amd
54 | } // namespace dxr
55 |
--------------------------------------------------------------------------------
/source/backend/bvh/rtip11/rt_ip_11_acceleration_structure_header.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2023-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief RT IP 1.1 (Navi2x) specific acceleration structure header
6 | /// definition.
7 | //=============================================================================
8 |
9 | #include "bvh/rtip_common/acceleration_structure_header.h"
10 |
11 | #ifndef RRA_BACKEND_BVH_RT_IP_11_ACCELERATION_STRUCTURE_HEADER_H_
12 | #define RRA_BACKEND_BVH_RT_IP_11_ACCELERATION_STRUCTURE_HEADER_H_
13 |
14 | namespace rta
15 | {
16 | class DxrRtIp11AccelerationStructureHeader final : public RtIpCommonAccelerationStructureHeader
17 | {
18 | private:
19 | void LoadFromBufferImpl(const std::uint64_t size,
20 | const void* buffer,
21 | const RayTracingBinaryVersion& rt_binary_header_version = kSupportedRayTracingBinaryHeaderVersion);
22 | };
23 | } // namespace rta
24 | #endif // RRA_BACKEND_BVH_RT_IP_11_ACCELERATION_STRUCTURE_HEADER_H_
25 |
--------------------------------------------------------------------------------
/source/backend/bvh/rtip11/rt_ip_11_header.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2023-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief RT IP 1.1 (Navi2x) specific chunk header definition.
6 | //=============================================================================
7 |
8 | #ifndef RRA_BACKEND_BVH_RT_IP_11_HEADER_H_
9 | #define RRA_BACKEND_BVH_RT_IP_11_HEADER_H_
10 |
11 | #endif // RRA_BACKEND_BVH_RT_IP_11_HEADER_H_
12 |
--------------------------------------------------------------------------------
/source/backend/bvh/rtip31/rt_ip_31_acceleration_structure_header.cpp:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2023-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief RT IP 3.1 (Navi4x) specific acceleration structure header
6 | /// implementation.
7 | //=============================================================================
8 |
9 | #include "rt_ip_31_acceleration_structure_header.h"
10 |
11 | #include // --> Linux, memcpy
12 | #include "bvh/dxr_type_conversion.h"
13 | #include "bvh/utils.h"
14 |
15 | namespace rta
16 | {
17 | void DxrRtIp31AccelerationStructureHeader::LoadFromBufferImpl(const std::uint64_t size,
18 | const void* buffer,
19 | const RayTracingBinaryVersion& rt_binary_header_version)
20 | {
21 | RRA_UNUSED(size);
22 | RRA_UNUSED(rt_binary_header_version);
23 | size_t struct_size = sizeof(AccelStructHeader);
24 | assert(size == struct_size);
25 | memcpy(&header_, buffer, struct_size);
26 | build_info_->LoadFromBuffer(sizeof(header_.info), &header_.info);
27 | #ifdef RRA_INTERNAL
28 | auto converted_version = rta::RayTracingBinaryVersion(header_.accelStructVersion);
29 | while (converted_version < kSupportedRayTracingBinaryHeaderVersion)
30 | {
31 | converted_version = ConvertToNextHeaderVersion(converted_version.version);
32 | }
33 | #endif
34 | }
35 | } // namespace rta
36 |
--------------------------------------------------------------------------------
/source/backend/bvh/rtip31/rt_ip_31_acceleration_structure_header.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2023-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief RT IP 3.1 (Navi4x) specific acceleration structure header
6 | /// definition.
7 | //=============================================================================
8 |
9 | #include "bvh/rtip_common/acceleration_structure_header.h"
10 |
11 | #ifndef RRA_BACKEND_BVH_RT_IP_31_ACCELERATION_STRUCTURE_HEADER_H_
12 | #define RRA_BACKEND_BVH_RT_IP_31_ACCELERATION_STRUCTURE_HEADER_H_
13 |
14 | namespace rta
15 | {
16 | class DxrRtIp31AccelerationStructureHeader final : public RtIpCommonAccelerationStructureHeader
17 | {
18 | private:
19 | void LoadFromBufferImpl(const std::uint64_t size,
20 | const void* buffer,
21 | const RayTracingBinaryVersion& rt_binary_header_version = kSupportedRayTracingBinaryHeaderVersion);
22 | };
23 | } // namespace rta
24 | #endif // RRA_BACKEND_BVH_RT_IP_31_ACCELERATION_STRUCTURE_HEADER_H_
25 |
--------------------------------------------------------------------------------
/source/backend/bvh/utils.cpp:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2021-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Implementation of miscellaneous utility functions.
6 | //=============================================================================
7 |
8 | #include "utils.h"
9 |
10 | #include
11 | #include // --> Linux, memcpy
12 | #include
13 | #include // --> isnan, isinf, ceil
14 |
15 | namespace rta
16 | {
17 | void ConvertHalfToFloat(const std::uint16_t* input, float* output, std::int32_t count)
18 | {
19 | std::array buffer;
20 |
21 | while (count > 0)
22 | {
23 | std::memcpy(buffer.data(), input, std::min(count, 8) * sizeof(std::uint16_t));
24 |
25 | __m128i half_vector = _mm_loadu_si128(reinterpret_cast<__m128i*>(buffer.data()));
26 | __m256 float_vector = _mm256_cvtph_ps(half_vector);
27 | _mm256_storeu_ps(reinterpret_cast(buffer.data()), float_vector);
28 |
29 | std::memcpy(output, buffer.data(), std::min(count, 8) * sizeof(float));
30 |
31 | // Advance pointers
32 | input += 8;
33 | output += 8;
34 |
35 | // Decrement left elements
36 | count -= 8;
37 | }
38 | }
39 |
40 | std::uint32_t ComputeBoxNodePerInteriorNodeCount(const std::uint32_t interior_node_branching_factor)
41 | {
42 | return static_cast(std::ceil(interior_node_branching_factor / 4.f));
43 | }
44 |
45 | } // namespace rta
46 |
--------------------------------------------------------------------------------
/source/backend/bvh/utils.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2021-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Header for miscellaneous utility functions.
6 | //=============================================================================
7 |
8 | #ifndef RRA_BACKEND_BVH_UTILS_H_
9 | #define RRA_BACKEND_BVH_UTILS_H_
10 |
11 | #include
12 |
13 | namespace rta
14 | {
15 | /// @brief Converts count half-precision floats (uint16) stored in input array to floats in output array.
16 | ///
17 | /// @param [in] input The array of float16s to convert.
18 | /// @param [out] output The array to hold to converted float32s.
19 | /// @param [in] count The size of the array to convert.
20 | void ConvertHalfToFloat(const std::uint16_t* input, float* output, std::int32_t count);
21 |
22 | /// @brief Calculate how many box nodes per interior node count.
23 | ///
24 | /// @param [in] interior_node_branching_factor The branching factor.
25 | ///
26 | /// @return The node count.
27 | std::uint32_t ComputeBoxNodePerInteriorNodeCount(const std::uint32_t interior_node_branching_factor);
28 |
29 | } // namespace rta
30 |
31 | #endif // RRA_BACKEND_BVH_UTILS_H_
32 |
--------------------------------------------------------------------------------
/source/backend/math_util.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2021-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Header for the math utilities.
6 | //=============================================================================
7 |
8 | #ifndef RRA_BACKEND_MATH_UTIL_H_
9 | #define RRA_BACKEND_MATH_UTIL_H_
10 |
11 | #include "bvh/dxr_definitions.h"
12 | #include "rra_bvh_impl.h"
13 |
14 | namespace rra
15 | {
16 | namespace math_util
17 | {
18 | /// @brief Helper function to transform an AABB by tranforming all its corner points and against taking
19 | /// the minimum and maximum of these results. May increase the volume of the AABB up to a factor of 2.
20 | ///
21 | /// NOTE: A Matrix3x4 is a transposed 4x4 matrix with the translation in the last column rather than the
22 | /// last row.
23 | ///
24 | /// @param [in] bounding_box The bounding box to be transformed.
25 | /// @param [in] transform The transformation matrix to be applied.
26 | ///
27 | /// @return The transformed bounding box.
28 | BoundingVolumeExtents TransformAABB(const dxr::amd::AxisAlignedBoundingBox& bounding_box, const dxr::Matrix3x4& transform);
29 |
30 | } // namespace math_util
31 | } // namespace rra
32 |
33 | #endif // RRA_BACKEND_MATH_UTIL_H_
34 |
--------------------------------------------------------------------------------
/source/backend/public/rra_api_info.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2022-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Definition for the public API info interface.
6 | //=============================================================================
7 |
8 | #ifndef RRA_BACKEND_PUBLIC_RRA_API_INFO_H_
9 | #define RRA_BACKEND_PUBLIC_RRA_API_INFO_H_
10 |
11 | #include
12 |
13 | #ifdef __cplusplus
14 | extern "C" {
15 | #endif // #ifdef __cplusplus
16 |
17 | /// @brief Get the name of the API used when taking the trace.
18 | ///
19 | /// @return The text string of the node name.
20 | const char* RraApiInfoGetApiName();
21 |
22 | /// @brief Get whether or not the captured application uses Vulkan.
23 | ///
24 | /// @return True if the captured application uses Vulkan, false otherwise.
25 | bool RraApiInfoIsVulkan();
26 |
27 | #ifdef __cplusplus
28 | }
29 | #endif // #ifdef __cplusplus
30 | #endif // RRA_BACKEND_PUBLIC_RRA_API_INFO_H_
31 |
--------------------------------------------------------------------------------
/source/backend/public/rra_macro.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2021-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Utility macro definitions.
6 | //=============================================================================
7 |
8 | #ifndef RRA_BACKEND_PUBLIC_RRA_MACRO_H_
9 | #define RRA_BACKEND_PUBLIC_RRA_MACRO_H_
10 |
11 | /// Helper macro to avoid warnings about unused variables.
12 | #define RRA_UNUSED(x) ((void)(x))
13 |
14 | /// Helper macro to align an integer to the specified power of 2 boundary
15 | #define RRA_ALIGN_UP(x, y) (((x) + ((y)-1)) & ~((y)-1))
16 |
17 | /// Helper macro to check if a value is aligned.
18 | #define RRA_IS_ALIGNED(x) (((x) != 0) && ((x) & ((x)-1)))
19 |
20 | /// Helper macro to stringify a value.
21 | #define RRA_STR(s) RRA_XSTR(s)
22 | #define RRA_XSTR(s) #s
23 |
24 | /// Helper macro to return the maximum of two values.
25 | #define RRA_MAXIMUM(x, y) (((x) > (y)) ? (x) : (y))
26 |
27 | /// Helper macro to return the minimum of two values.
28 | #define RRA_MINIMUM(x, y) (((x) < (y)) ? (x) : (y))
29 |
30 | /// Helper macro to do safe free on a pointer.
31 | #define RRA_SAFE_FREE(x) \
32 | if (x) \
33 | free(x)
34 |
35 | /// Helper macro to return the abs of an integer value.
36 | #define RRA_ABSOLUTE(x) (((x) < 0) ? (-(x)) : (x))
37 |
38 | /// Helper macro to return sign of a value.
39 | #define RRA_SIGN(x) (((x) < 0) ? -1 : 1)
40 |
41 | /// Helper macro to work out the number of elements in an array.
42 | #define RRA_ARRAY_ELEMENTS(x) (int32_t)((sizeof(x) / sizeof(0 [x])) / ((size_t)(!(sizeof(x) % sizeof(0 [x])))))
43 |
44 | #endif // #ifndef RRA_BACKEND_PUBLIC_RRA_MACRO_H_
45 |
--------------------------------------------------------------------------------
/source/backend/public/rra_print.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2021-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Printing helper functions for RRA.
6 | //=============================================================================
7 |
8 | #ifndef RRA_BACKEND_PUBLIC_RRA_PRINT_H_
9 | #define RRA_BACKEND_PUBLIC_RRA_PRINT_H_
10 |
11 | #include
12 |
13 | #include "rra_error.h"
14 |
15 | /// Callback function for printing.
16 | typedef void (*RraPrintingCallback)(const char* msg);
17 |
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif // #ifdef __cplusplus
21 |
22 | /// @brief Set the printing callback for backend functions to do logging.
23 | ///
24 | /// @param [in] callback_func The callback function to use for printing.
25 | /// @param [in] enable_printing Enable the print function that prints to stdout if no callback specified.
26 | /// May be useful to disable in case the backend is being used outside of RRA.
27 | void RraSetPrintingCallback(RraPrintingCallback callback_func, bool enable_printing);
28 |
29 | /// @brief Printing function to use. Will use printing function set with
30 | /// RraSetPrintingCallback. If nothing is set, then
31 | /// printf will be used.
32 | ///
33 | /// @param [in] format The formatting string.
34 | /// @param [in] ... Variable parameters determined by format.
35 | void RraPrint(const char* format, ...);
36 |
37 | #ifdef __cplusplus
38 | }
39 | #endif // #ifdef __cplusplus
40 | #endif // #ifndef RRA_BACKEND_PUBLIC_RRA_PRINT_H_
41 |
--------------------------------------------------------------------------------
/source/backend/public/rra_rtip_info.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2022-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Definition for the public raytracing IP level info interface.
6 | //=============================================================================
7 |
8 | #ifndef RRA_BACKEND_PUBLIC_RRA_RTIP_INFO_H_
9 | #define RRA_BACKEND_PUBLIC_RRA_RTIP_INFO_H_
10 |
11 | #include
12 | #include "bvh/gpu_def.h"
13 |
14 | #ifdef __cplusplus
15 | extern "C" {
16 | #endif // #ifdef __cplusplus
17 |
18 | /// @brief Get the ray tracing IP level that was used when the application was captured.
19 | ///
20 | /// @return The RtIp level.
21 | uint32_t RraRtipInfoGetRaytracingIpLevel();
22 |
23 | /// @brief Get whether or not the RtIp level of this capture supports oriented bounding boxes.
24 | ///
25 | /// @return True if the current RtIp level supports oriented bounding boxes.
26 | bool RraRtipInfoGetOBBSupported();
27 |
28 | #ifdef __cplusplus
29 | }
30 | #endif // #ifdef __cplusplus
31 | #endif // RRA_BACKEND_PUBLIC_RRA_RTIP_INFO_H_
32 |
--------------------------------------------------------------------------------
/source/backend/rra_api_info.cpp:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2022-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Implementation for the API info interface.
6 | //=============================================================================
7 |
8 | #include "public/rra_api_info.h"
9 |
10 | #include "rra_data_set.h"
11 |
12 | // External reference to the global dataset.
13 | extern RraDataSet data_set_;
14 |
15 | const char* RraApiInfoGetApiName()
16 | {
17 | return data_set_.api_info.GetApiName();
18 | }
19 |
20 | bool RraApiInfoIsVulkan()
21 | {
22 | return data_set_.api_info.IsVulkan();
23 | }
24 |
--------------------------------------------------------------------------------
/source/backend/rra_assert.cpp:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2021-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Implementation of assert.
6 | //=============================================================================
7 |
8 | #include "public/rra_assert.h"
9 |
10 | #include // for malloc()
11 |
12 | #ifdef _WIN32
13 | #define WIN32_LEAN_AND_MEAN
14 | #include // required for OutputDebugString()
15 | #include // required for sprintf_s
16 | #endif // #ifndef _WIN32
17 |
18 | static RraAssertCallback s_assert_callback;
19 |
20 | // set the printing callback function
21 | void RraAssertSetPrintingCallback(RraAssertCallback callback)
22 | {
23 | s_assert_callback = callback;
24 | return;
25 | }
26 |
27 | // implementation of assert reporting
28 | bool RraAssertReport(const char* file, int32_t line, const char* condition, const char* message)
29 | {
30 | if (!file)
31 | {
32 | return true;
33 | }
34 |
35 | #ifdef _WIN32
36 | // form the final assertion string and output to the TTY.
37 | const size_t buffer_size = (size_t)snprintf(nullptr, 0, "%s(%d): ASSERTION FAILED. %s\n", file, line, message ? message : condition) + 1;
38 | char* temp_buffer = static_cast(malloc(buffer_size));
39 | if (!temp_buffer)
40 | {
41 | return true;
42 | }
43 |
44 | if (!message)
45 | {
46 | sprintf_s(temp_buffer, buffer_size, "%s(%d): ASSERTION FAILED. %s\n", file, line, condition);
47 | }
48 | else
49 | {
50 | sprintf_s(temp_buffer, buffer_size, "%s(%d): ASSERTION FAILED. %s\n", file, line, message);
51 | }
52 |
53 | if (!s_assert_callback)
54 | {
55 | OutputDebugStringA(temp_buffer);
56 | }
57 | else
58 | {
59 | s_assert_callback(temp_buffer);
60 | }
61 |
62 | // free the buffer.
63 | free(temp_buffer);
64 |
65 | #else
66 | RRA_UNUSED(line);
67 | RRA_UNUSED(condition);
68 | RRA_UNUSED(message);
69 | #endif
70 |
71 | return true;
72 | }
73 |
--------------------------------------------------------------------------------
/source/backend/rra_blas_impl.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2021-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Definition for the BLAS interface.
6 | ///
7 | /// Contains all functions specific to the BLAS.
8 | //=============================================================================
9 |
10 | #ifndef RRA_BACKEND_RRA_BLAS_IMPL_H_
11 | #define RRA_BACKEND_RRA_BLAS_IMPL_H_
12 |
13 | #include "bvh/dxr_definitions.h"
14 | #include "bvh/rtip11/encoded_rt_ip_11_bottom_level_bvh.h"
15 | #include "public/rra_blas.h"
16 | #include "bvh/rtip31/primitive_node.h"
17 |
18 | /// @brief Get a pointer to the BLAS from the blas index passed in.
19 | ///
20 | /// @param [in] blas_index The index of the BLAS to retrieve.
21 | ///
22 | /// @return A pointer to the TLAS (or nullptr if it doesn't exist).
23 | rta::EncodedBottomLevelBvh* RraBlasGetBlasFromBlasIndex(uint64_t blas_index);
24 |
25 | /// @brief Get the surface area for a given triangle node.
26 | ///
27 | /// @param [in] triangle_node Reference to the triangle node whose surface area is to be calculated.
28 | /// @param [in] tri_count Number of triangles in triangle node.
29 | ///
30 | /// @return The triangle node surface area.
31 | float RraBlasGetTriangleSurfaceArea(const dxr::amd::TriangleNode& triangle_node, uint32_t tri_count);
32 |
33 | /// @brief Get the surface area for a given BLAS node.
34 | ///
35 | /// @param [in] blas The bottom level acceleration structure.
36 | /// @param [in] node_ptr The node pointer whose surface area is to be calculated.
37 | /// @param [out] out_surface_area The calculated surface area.
38 | ///
39 | /// @return RraOk if successful, an error code if not.
40 | RraErrorCode RraBlasGetSurfaceAreaImpl(const rta::EncodedBottomLevelBvh* blas, const dxr::amd::NodePointer* node_ptr, float* out_surface_area);
41 |
42 | #endif // RRA_BACKEND_RRA_BLAS_IMPL_H_
43 |
--------------------------------------------------------------------------------
/source/backend/rra_configuration.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2021-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Global configuration values for the RRA backend.
6 | //=============================================================================
7 |
8 | #ifndef RRA_BACKEND_RRA_CONFIGURATION_H_
9 | #define RRA_BACKEND_RRA_CONFIGURATION_H_
10 |
11 | /// The maximum nubmer of file path.
12 | #define RRA_MAXIMUM_FILE_PATH (8192)
13 |
14 | #define RRA_STRING_BUFFER_SIZE (2048)
15 |
16 | #endif // #ifndef RRA_BACKEND_RRA_CONFIGURATION_H_
17 |
--------------------------------------------------------------------------------
/source/backend/rra_print.cpp:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2021-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Implementation of printing helper functions for RRA.
6 | //=============================================================================
7 |
8 | #include "public/rra_print.h"
9 |
10 | #include
11 | #include // for sprintf
12 | #include // for strcat
13 |
14 | #include "rra_configuration.h"
15 |
16 | #ifndef _WIN32
17 | #include "public/linux/safe_crt.h"
18 | #else
19 | #include
20 | #endif
21 |
22 | // The printing callback function.
23 | static RraPrintingCallback printing_func = nullptr;
24 | static bool is_printing_enabled = false;
25 |
26 | void RraSetPrintingCallback(RraPrintingCallback callback_func, bool enable_printing)
27 | {
28 | printing_func = callback_func;
29 | is_printing_enabled = enable_printing;
30 | }
31 |
32 | void RraPrint(const char* format, ...)
33 | {
34 | if (!is_printing_enabled)
35 | {
36 | return;
37 | }
38 |
39 | va_list args;
40 | va_start(args, format);
41 |
42 | if (printing_func == nullptr)
43 | {
44 | char buffer[RRA_STRING_BUFFER_SIZE];
45 | vsnprintf(buffer, RRA_STRING_BUFFER_SIZE, format, args);
46 | #ifdef _WIN32
47 | const size_t len = strlen(buffer);
48 | buffer[len] = '\n';
49 | buffer[len + 1] = '\0';
50 | OutputDebugString(buffer);
51 | #else
52 | printf("%s\n", buffer);
53 | #endif
54 | }
55 | else
56 | {
57 | char buffer[RRA_STRING_BUFFER_SIZE];
58 | vsnprintf(buffer, RRA_STRING_BUFFER_SIZE, format, args);
59 | printing_func(buffer);
60 | }
61 |
62 | va_end(args);
63 | }
64 |
--------------------------------------------------------------------------------
/source/backend/rra_rtip_info.cpp:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2023-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Implementation for the raytracing IP level info interface.
6 | //=============================================================================
7 |
8 | #include "public/rra_rtip_info.h"
9 |
10 | #include "rra_data_set.h"
11 |
12 | // External reference to the global dataset.
13 | extern RraDataSet data_set_;
14 |
15 | uint32_t RraRtipInfoGetRaytracingIpLevel()
16 | {
17 | return (uint32_t)data_set_.rtip_level;
18 | }
19 |
20 | bool RraRtipInfoGetOBBSupported()
21 | {
22 | if (data_set_.rtip_level == rta::RayTracingIpLevel::RtIp3_1)
23 | {
24 | return true;
25 | }
26 | return false;
27 | }
28 |
--------------------------------------------------------------------------------
/source/backend/surface_area_heuristic.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2021-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Definition of the Surface area heuristic calculator.
6 | //=============================================================================
7 |
8 | #ifndef RRA_BACKEND_SURFACE_AREA_HEURISTIC_H_
9 | #define RRA_BACKEND_SURFACE_AREA_HEURISTIC_H_
10 |
11 | #include "rra_data_set.h"
12 |
13 | // Surface area heuristic calculator functions. Used only by the backend; no public interface.
14 |
15 | struct PrimitiveStructure;
16 |
17 | namespace rra
18 | {
19 | /// @brief Calculate the surface area heuristic values for all nodes in the TLASes and BLASes.
20 | ///
21 | /// @param [in] data_set The data set containing the loaded trace data.
22 | ///
23 | /// @return RraOk if successful, an error code if not.
24 | RraErrorCode CalculateSurfaceAreaHeuristics(RraDataSet& data_set);
25 |
26 | /// @brief Get the minimum surface area heuristic for a given node and its children.
27 | ///
28 | /// @param [in] bvh The acceleration structure where the node is located.
29 | /// @param [in] node_ptr The node of interest.
30 | /// @param [in] tri_only All non-triangle nodes will be ignored if this is true.
31 | ///
32 | /// @return The minimum surface area heuristic.
33 | float GetMinimumSurfaceAreaHeuristic(const rta::IBvh* bvh, const dxr::amd::NodePointer node_ptr, bool tri_only);
34 |
35 | /// @brief Get the average (mean) surface area heuristic for a given node and its children.
36 | ///
37 | /// @param [in] bvh The acceleration structure where the node is located.
38 | /// @param [in] node_ptr The node of interest.
39 | /// @param [in] tri_only All non-triangle nodes will be ignored if this is true.
40 | ///
41 | /// @return The average surface area heuristic.
42 | float GetAverageSurfaceAreaHeuristic(const rta::IBvh* bvh, const dxr::amd::NodePointer node_ptr, bool tri_only);
43 | } // namespace rra
44 |
45 | #endif // RRA_BACKEND_SURFACE_AREA_HEURISTIC_H_
46 |
--------------------------------------------------------------------------------
/source/frontend/io/camera_controllers.cpp:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2021-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Definitions to list camera controllers.
6 | //=============================================================================
7 |
8 | #include "camera_controllers.h"
9 |
10 | #include "cad_camera_controller.h"
11 | #include "fps_camera_controller.h"
12 | #include "axis_free_camera_controller.h"
13 |
14 | namespace rra
15 | {
16 | static const std::string kControlStyleSuffix = " control style";
17 |
18 | CameraControllers::CameraControllers()
19 | {
20 | ViewerIO* controller = nullptr;
21 |
22 | controller = new CADController();
23 | controllers_[controller->GetName() + kControlStyleSuffix] = controller;
24 |
25 | controller = new FPSController();
26 | controllers_[controller->GetName() + kControlStyleSuffix] = controller;
27 |
28 | controller = new AxisFreeController();
29 | controllers_[controller->GetName() + kControlStyleSuffix] = controller;
30 | }
31 |
32 | CameraControllers::~CameraControllers()
33 | {
34 | for (auto& i : controllers_)
35 | {
36 | delete i.second;
37 | }
38 | }
39 |
40 | std::vector CameraControllers::GetControllerNames() const
41 | {
42 | std::vector names;
43 | names.resize(controllers_.size());
44 | for (auto& i : controllers_)
45 | {
46 | names[i.second->GetComboBoxIndex()] = i.first;
47 | }
48 | return names;
49 | }
50 |
51 | ViewerIO* CameraControllers::GetControllerByName(const std::string& controller_name)
52 | {
53 | return controllers_[controller_name];
54 | }
55 | } // namespace rra
56 |
--------------------------------------------------------------------------------
/source/frontend/io/camera_controllers.h:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // Copyright (c) 2021-2025 Advanced Micro Devices, Inc. All rights reserved.
3 | /// @author AMD Developer Tools Team
4 | /// @file
5 | /// @brief Declaration to list camera controllers.
6 | //=============================================================================
7 |
8 | #ifndef RRA_CAMERA_CONTROLLERS_CAMERA_CONTROLLERS_H_
9 | #define RRA_CAMERA_CONTROLLERS_CAMERA_CONTROLLERS_H_
10 |
11 | #include "viewer_io.h"
12 | #include