Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.2%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: gprt-org
  • License: mit
  • Language: C++
  • Default Branch: master
  • Size: 13.9 MB
Statistics
  • Stars: 30
  • Watchers: 5
  • Forks: 6
  • Open Issues: 18
  • Releases: 1
Created over 3 years ago · Last pushed 12 months ago
Metadata Files
Readme License Citation

README.md

License CI

GPRT (General Purpose Raytracing Toolkit)

GPRT is a ray tracing API that wraps the Vulkan ray tracing interface.

Sample "Attribute Aware RBFs" images

Project Overview

The repository is organized into several key directories:

  • gprt/ – the core library. Host APIs are implemented in gprt_host.h/gprt.cpp while device-side shaders live in gprt.slang. Math helpers are under gprt/math/.
  • samples/ – tutorial-style examples showing how to build ray tracing applications with GPRT.
  • tests/ – host-side tests for buffers and acceleration structures.
  • docs/ – Sphinx documentation sources.
  • 3rdParty/ – external dependencies pulled in as submodules.

GPRT uses CMake to compile the host code and the Slang/HLSL toolchain for device shaders. After buffers and programs are set up, the shader binding table is built with gprtBuildShaderBindingTable before launching work on the GPU.

Dependencies

  • CMake
  • C++17
  • Vulkan SDK (>= 1.4.309.0)

Documentation

GPRT's documentation can be found here.

Cloning

This repository contains submodules for external dependencies, so when doing a fresh clone you need to clone recursively:

git clone --recursive git@github.com:gprt-org/GPRT.git

Existing repositories can be updated manually:

git submodule init git submodule update

Build Instructions

Install the Vulkan SDK for your platform (version 1.4.309.0 or greater).

GPRT uses CMake for configuration. For an empty directory, build, in the top directory of this repository, the project can be configured with

shell cmake ..

and built with

shell cmake --build .

Ubuntu Dependencies

The following apt-packages should be installed:

shell sudo apt install xorg-dev libxinerama-dev libglu1-mesa-dev freeglut3-dev mesa-common-dev libglfw3

along with the Vulkan SDK.

Note: if using Ubuntu 22 with Wayland (or other distros for that matter), the above x11 dev packages still work via xwayland.

Learning More

The documentation lists every host and device API call. The samples are arranged as a progression of small programs starting from samples/s0-rayGenPrograms; reading them is the best way to become familiar with the API. The tests under tests/ provide additional usage examples for buffer and acceleration structure operations.

Owner

  • Name: General Purpose Raytracing Toolkit
  • Login: gprt-org
  • Kind: organization
  • Email: natemorrical@gmail.com

Citation (CITATION.cff)

cff-version: 1.2.0
title: General Purpose Raytracing Tookit
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Nate
    family-names: Morrical
    email: natemorrical@gmail.com
    affiliation: University of Utah
    orcid: 'https://orcid.org/0000-0002-2262-6974'
  - given-names: Patrick
    family-names: Shriwise
    email: pshriwise@anl.gov
    affiliation: Argonne National Laboratory
    orcid: 'https://orcid.org/0000-0002-3979-7665'
identifiers:
  - type: doi
    value: 10.5281/zenodo.8019116
    description: Zenodo DOI of GPRT 1.0.0
repository-code: 'https://github.com/gprt-org/GPRT'
url: 'https://gprt-org.github.io/GPRT/'
abstract: >-
  GPRT is an open source raytracing library that allows
  developers to quickly prototype ideas involving
  high-performance ray tracing. By providing a comprehensive
  set of abstractions over Khronos's Vulkan API, GPRT
  empowers developers to explore and push the boundaries of
  ray tracing technology, enabling the creation of visually
  stunning, informative and immersive visualizations and
  simulations.
license: MIT

GitHub Events

Total
  • Issues event: 3
  • Watch event: 6
  • Delete event: 2
  • Issue comment event: 4
  • Push event: 99
  • Pull request event: 6
  • Fork event: 3
  • Create event: 10
Last Year
  • Issues event: 3
  • Watch event: 6
  • Delete event: 2
  • Issue comment event: 4
  • Push event: 99
  • Pull request event: 6
  • Fork event: 3
  • Create event: 10

Dependencies

.github/workflows/ci.yml actions
  • actions/checkout v2 composite
  • humbletim/install-vulkan-sdk v1.1.1 composite
  • humbletim/setup-vulkan-sdk v1.2.0 composite
.github/workflows/docs.yml actions
  • actions/checkout v3 composite
  • actions/configure-pages v2 composite
  • actions/deploy-pages v1 composite
  • actions/setup-python v4 composite
  • actions/upload-pages-artifact v1 composite
  • humbletim/install-vulkan-sdk v1.1.1 composite
docs/requirements.txt pypi
  • breathe *
  • sphinx *
  • sphinx_rtd_theme *