This repository is only for tutorials. The SDK binaries needs to be downloaded from HIP RT project page and the full source code of HIP RT can be found here.
HIP RT is a ray tracing library in HIP. The APIs are designed to be minimal and low level, making it easy to write a ray tracing application in HIP. We designed the library and APIs to be simple to use and integrate into any existing HIP applications. Although there are a few other ray tracing APIs which, we designed HIP RT to be simpler and easier to use, so you do not need to learn many new kernel types.
HIP RT runs on AMD and NVIDIA® GPUs. HIP and CUDA® APIs are dynamically loaded so you do not need to have these SDKs if your have these DLLs installed with the driver package. Hardware-accelerated ray tracing only works on RDNA™ 2 GPUs (Radeon™ RX 6000 series or newer).
The supported AMD GPU architecture families are:
You will also need AMD Software: Adrenalin Edition 23.30 or later for Windows and ROCm 5.7 for Linux.
--recursive
:git submodule init
git submodule update
Windows:
Run premake to generate a solution for Visual Studio 2022:
cd tutorials
"../tools/premake5/win/premake5.exe" vs2022
Open the solution, compile & run.
Linux:
Run premake like this on Windows, which will generate a make file:
cd tutorials
../tools/premake5/linux64/premake5 gmake2
Compile using the make file & run.
cd build
make
These tutorials are made to run on both AMD and NVIDIA by specifying the device index.
The minimum example can be found at tutorials/00_context_creation/main.cpp. On AMD platforms, you need to create a HIP context and device to initialize hiprt
using hiprtCreateContext
by passing hiprtContextCreationInput
object where you need to set the native API context, device, and device type (HIP or CUDA).
After that, use hiprtCreateGeometry
and hiprtBuildGeometry
to create hiprtGeometry
. Once you have finished setting up objects on the host side, you can pass the context object to your kernel.
An example of a minimum kernel can be found at here. This is a simple HIP kernel that we are passing hiprtGeometry
to. To perform an intersection test, simply fill in hiprtRay
, then create a hiprtGeomTraversalClosest
object, then call getNextHit()
. It is that simple.