RepoNVIDIANVIDIApublished Oct 8, 2025seen Jun 26

NVIDIA/deepeeRT

Cuda

Open original ↗

Captured source

source ↗
published Oct 8, 2025seen Jun 26captured Aug 30http 200method plain

NVIDIA/deepeeRT

Description: A Library for Double Precision Ray Tracing

Language: Cuda

License: Apache-2.0

Stars: 16

Forks: 8

Open issues: 1

Created: 2025-10-08T16:37:29Z

Pushed: 2026-03-30T16:25:09Z

Default branch: main

Fork: no

Archived: no

README:

DeepeeRT - A "Basics-only" Ray Tracing Library for Double-Precision Ray Tracing

Build Status: ![Windows](https://github.com/NVIDIA/deepeeRT/actions/workflows/Windows.yml) ![Ubuntu](https://github.com/NVIDIA/deepeeRT/actions/workflows/Ubuntu.yml)

Introduction

The goal of this library/project is to allow scientists and other practitioners to perform ray tracing computations in double precision, i.e., where both rays, hits, and geometry can be specified in FP64 precision, and traversal and intersection happen in FP64 precision as well.

Wherever possible we encourage users to use single precision based (and more complete!) tools such as OptiX; but for those that for some reason cannot rely on use single precision calculations this library offers a simple, "OptiX Prime" like API for specifying (double precision) triangle mesh geometry and single instance layer worlds, and to trace arrays of rays to get arrays of hits.

Unlike more complete libraries such as OptiX this library will explicitly *not* contain a full implementation of the RTX Pipeline (ie, no AnyHit, ClosestHit, Intersection, etc programs, no ray types, ray payloads, shader binding tables, etc), nor features such as ray reordering, denoising, etc. Instead, this library intentionally focusses on only tracing rays, reading rays from a device-array of rays, and filling in a corresponding device array of hits.

Changes in 1.x

When initially conceived the naming scheme used in this library generally built on the abbreviation of "DPRT" for "Double Precision Ray Tracing", and on the way that DP is generally pronouced as "dee pee". However, it used this general idea in many different and inconstent ways---API types and functions started with dpr() and DPR (some actually used DP...), constants with DPR_; namespace was dprt::; main subdir name was dp/; repo name, library name, and install dir name was deepeeRT; some C and CMake constants used DEEPEERT and some DEEPEE; etc.

For 1.0, this has undergone a significant cleanup: The repo name cannot easily be changed, but pretty much everything else has changed to 'dprt': install directory is now dprt/, as is the main source dir; install target name is now also dprt, so apps should now use find_package(dprt) and link to dprt::dprt. Installed header file is dprt/dprt.h.. Finally, API names are now: for types DPRT, for functions dprt(), and for all constants and enums DPRT_.

For 1.0 we also renamed the world to be a model (to become more consistent with other graphics APIs); we have also deprecated the _DP vs _SP suffix naming scheme that was used for showing which functions used double vs single precision arguments (dprt only uses doubles, anyway).

Copyright and License

// Copyright 2025 NVIDIA Corp // SPDX-License-Identifier: Apache-2.0

Building and Usage

Preferred way of using this library is as a git submodule through cmaked, included in your CMake script via

add_subdirectory(/deepeeRT EXCLUDE_FROM_ALL)

then linked to your library as

target_link_libraries(yourLib PUBLIC deepeeRT)

This project uses "modern cmake", so this should pull in all dependencies, includes, defines, etc.

Release History

  • no releases yet.