Code Monkey home page Code Monkey logo

hiprtsdk's Introduction

HIP RT SDK

This repository is only for tutorials. The SDK binaries needs to be downloaded from HIP RT product page.

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.

Features

  • Ray-triangle intersection
  • Ray-custom primitive intersection
  • Ray mask to filter geometries
  • Several bounding volume hierarchy (BVH) options
  • Offline BVH load and store
  • BVH import
  • Motion blur

Requirement

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 by the GPU driver package. Hardware accelerated ray tracing only works on AMD RDNA2-based GPUs.

It works on any AMD GPU which supports HIP. The supported AMD GPU architecture families are:

  • Navi2x (Radeon™ RX 6000 series).
  • Navi1x (Radeon™ RX 5000 series).
  • Vega2x.
  • Vega1x.

You need an AMDGPU driver newer than 21.40. However, we recommend using 21.50 or newer.


Directories

Building the Tutorial

  1. First you need to clone the repository, then init and update the submodules if you didn't clone with --recursive:
git submodule init
git submodule update
  1. Download the HIP RT SDK from HIP RT product page, copy hiprt directory to here.

  2. Run premake like this on Windows, which will generate a solution for Visual Studio 2019:

cd tutorials
../tools/premake5/win/premake5.exe vs2019
  1. Open the solution, compile & run. These tutorials are made to run on both AMD and NVIDIA by specifying the device index.

Introduction to the HIP RT APIs

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.

References

  • Introducing HIP RT – a ray tracing library in HIP, GPUOpen Blog

hiprtsdk's People

Contributors

takahiroharada avatar pixelclear avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.