Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/actions/build-anari-sdk/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ inputs:
build-deps-path:
description: 'Path to the build_deps directory containing CMakeLists.txt'
required: false
default: 'tsd/cmake/build_deps'
default: 'devices/rtx/cmake/build_deps'
generator:
description: 'CMake generator to use'
required: false
Expand Down
118 changes: 0 additions & 118 deletions .github/workflows/build-tsd.yml

This file was deleted.

1 change: 0 additions & 1 deletion .github/workflows/build-visrtx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ jobs:
-DVISRTX_BUILD_RTX_DEVICE=ON
-DVISRTX_PRECOMPILE_SHADERS=OFF
-DVISRTX_BUILD_GL_DEVICE=OFF
-DVISRTX_BUILD_TSD=OFF
- name: Install VisRTX
run: >
cmake --build ${{ github.workspace }}/build-visrtx --config ${{ matrix.config }} --target install --parallel
6 changes: 0 additions & 6 deletions .luarc.json

This file was deleted.

25 changes: 8 additions & 17 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,18 @@ repository.

## Project Overview

**VisRTX** is an experimental NVIDIA implementation of the [Khronos ANARI](https://www.khronos.org/anari) (Analytic Rendering Interface) standard, focused on scientific visualization. It ships two ANARI device implementations and an optional testing/demo framework (TSD).
**VisRTX** is an experimental NVIDIA implementation of the [Khronos ANARI](https://www.khronos.org/anari) (Analytic Rendering Interface) standard, focused on scientific visualization. It ships two ANARI device implementations. The testing/demo framework that used to live here (TSD) now lives in the [Vela](https://github.com/NVIDIA/Vela) repository.

All development should occur on top of the `next_release` branch, unless otherwise directed.

## Build

### Build Scope

The `tsd/` subproject and the individual devices (`devices/rtx/` and
`devices/gl/`) are independently buildable. When making changes, pay attention
to whether the work is isolated to one subproject or device, and prefer the
smallest relevant configure/build/test cycle before falling back to a full
repository build.
The individual devices (`devices/rtx/` and `devices/gl/`) are independently
buildable. When making changes, pay attention to whether the work is isolated
to one device, and prefer the smallest relevant configure/build/test cycle
before falling back to a full repository build.

### Requirements

Expand All @@ -39,11 +38,9 @@ cmake --install .
|--------|---------|-------------|
| `VISRTX_BUILD_RTX_DEVICE` | ON | OptiX/CUDA ray-tracing device |
| `VISRTX_BUILD_GL_DEVICE` | ON | OpenGL 4.3/GLES 3.2 device |
| `VISRTX_BUILD_TSD` | OFF | TSD testing applications |

Component-specific options (MDL, Neural, NVTX, OptiX pinning, `TSD_USE_*`) are
documented in the subtree AGENTS.md files: [devices/rtx/AGENTS.md](devices/rtx/AGENTS.md),
[tsd/AGENTS.md](tsd/AGENTS.md).
Component-specific options (MDL, Neural, NVTX, OptiX pinning) are documented in
the subtree AGENTS.md file: [devices/rtx/AGENTS.md](devices/rtx/AGENTS.md).

## Tests

Expand All @@ -55,7 +52,7 @@ ctest -C Release --output-on-failure
ctest -C Release -R <test_name> --output-on-failure
```

Test sources: `tsd/tests/` (TSD unit tests), `devices/rtx/apps/tests/api/` (RTX API tests). `ctest -N` lists the current set.
Test sources: `devices/rtx/apps/tests/api/` (RTX API tests). `ctest -N` lists the current set.

## Code Style

Expand All @@ -76,9 +73,3 @@ Both devices implement the ANARI C API and are installed as shared libraries loa
- **`devices/rtx/`**: OptiX-based GPU ray tracer (`libanari_library_visrtx`). Implements 30+ Khronos and NVIDIA ANARI extensions including CUDA array/framebuffer interop, NanoVDB volumes, and MDL materials. The heavy lifting is in OptiX launch parameters, hit programs, and CUDA kernels.

- **`devices/gl/`**: OpenGL rasterizer (`libanari_library_visgl`). Simpler implementation; supports shadow mapping and ambient occlusion.

### TSD: Testing Scene Description (`tsd/`)

TSD is explicitly **experimental**. It has no API stability guarantees. It is educational and for testing ANARI devices, not a production pipeline. It maintains its own scene graph that mirrors ANARI object state (editing, serialization, networking without device coupling), layered libraries from `tsd_core` up to `tsd_app`, and apps (`tsdViewer`, `tsdRender`, `tsdLua`, …).

Full library layering, design patterns, env vars: [tsd/AGENTS.md](tsd/AGENTS.md).
8 changes: 0 additions & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,9 @@ project(VisRTX LANGUAGES C CXX)

enable_testing()

## Options ####################################################################

option(VISRTX_BUILD_TSD "Build TSD sample applications" OFF)
mark_as_advanced(VISRTX_BUILD_TSD)

## Build targets ##############################################################

option(VISRTX_BUILD_RTX_DEVICE "Build CUDA/OptiX device" ON)
option(VISRTX_BUILD_GL_DEVICE "Build OpenGL device" ON)

add_subdirectory(devices)
if (VISRTX_BUILD_TSD)
add_subdirectory(tsd)
endif()
29 changes: 13 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
# VisRTX Devices + TSD
# VisRTX Devices

![VisRTX Teaser](teaser.png)

This repository contains multiple implementations of the [Khronos ANARI
standard](https://www.khronos.org/anari) developed by the HPC Visualization
Developer Technology team at NVIDIA. Additionally, an emerging family of
applications are actively developed to help users explore ANARI rendering
capabilities, primarily for scalable, scientific visualizations.
Developer Technology team at NVIDIA, primarily for scalable, scientific
visualizations.

The following ANARI devices are available:

Expand All @@ -16,24 +15,22 @@ The following ANARI devices are available:
For any new feature requests or bugs found in extensions that are implemented,
do not hesitate to [open an issue](https://github.com/NVIDIA/VisRTX/issues/new)!

### Provided Sample Applications (TSD)
### Sample Applications

There is an interactive collection of applications which provide easy ways
to load and interact with ANARI scenes for the sake of exploring ANARI's
capabilities, which is located in the [tsd/](tsd/) subdirectory. For more
details on TSD, please refer to its [README](tsd/README.md) document.
The testing/demo applications which used to live in this repository (TSD) now
live in the [Vela](https://github.com/NVIDIA/Vela) repository, which provides
an interactive collection of applications for loading and interacting with
ANARI scenes.

## Build + Install

[VisRTX](devices/rtx/) and [VisGL](devices/gl/) are supported on both Linux and
Windows. [TSD](tsd/) is supported on Linux, Windows, and macOS.
Windows.

Each device and TSD can be built stand alone (separately invoking CMake on
their repsective subdirectories), or as a combined build (invoking CMake on the
Each device can be built stand alone (separately invoking CMake on their
respective subdirectories), or as a combined build (invoking CMake on the
repository's root directory).

Please refer to each subproject's README for more details.
Please refer to each device's README for more details.

Note that the devices are installable to `CMAKE_INSTALL_PREFIX`, but TSD is not
(yet) configured to be an installable set of libraries and applications. Please
use them (or copy) from of your build directory directly.
The devices are installable to `CMAKE_INSTALL_PREFIX`.
26 changes: 11 additions & 15 deletions STYLEGUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
This guide covers coding conventions for the VisRTX project. Mechanical formatting
is handled by `.clang-format`; this document covers everything else.

See [`tsd/STYLEGUIDE.md`](tsd/STYLEGUIDE.md) for TSD-specific addenda.

---

## 1. Formatting
Expand Down Expand Up @@ -35,8 +33,8 @@ See [`tsd/STYLEGUIDE.md`](tsd/STYLEGUIDE.md) for TSD-specific addenda.
| Private member variables | `m_` + snake_case | `m_storage`, `m_freeIndices` |
| Public data members | camelCase | `size`, `colorType` |
| Local variables | camelCase | `controlPoints`, `diff` |
| Namespaces | lowercase | `tsd::core`, `tsd::scene` |
| Macros | UPPER_SNAKE_CASE | `TSD_NOT_COPYABLE`, `VISRTX_DEVICE` |
| Namespaces | lowercase | `visrtx`, `visgl` |
| Macros | UPPER_SNAKE_CASE | `VISRTX_DEVICE`, `VISRTX_HOST_DEVICE` |
| `constexpr` constants | UPPER_SNAKE_CASE | `INVALID_INDEX`, `MAX_LOCAL_STORAGE` |
| Type aliases | PascalCase with suffix | `Ptr`, `Ref`, `element_t` |
| GPU data structs | PascalCase + `GPUData` suffix | `FrameGPUData`, `MaterialGPUData` |
Expand All @@ -55,7 +53,7 @@ Additional rules:

- **`#pragma once`** exclusively — no `#ifndef`/`#define` include guards.
- **Include order** (blank line between each group):
1. Project headers (`"tsd/..."`, `"visrtx/..."`)
1. Project headers (`"visrtx/..."`, `"gpu/..."`)
2. External library headers (`<anari/...>`, `<helium/...>`)
3. Standard library headers (`<vector>`, `<memory>`, …)
- Forward-declare types in headers where possible to minimize include depth.
Expand All @@ -65,8 +63,7 @@ Additional rules:

## 4. Namespaces

- Hierarchical, 2–3 levels deep: `tsd::core`, `tsd::scene`, `tsd::rendering`,
`tsd::io`, `tsd::app`; device namespaces: `visrtx`, `visgl`.
- One top-level namespace per device: `visrtx`, `visgl`.
- Sub-namespaces for implementation details: `detail`, `tokens`, `colormap`.
- Anonymous namespaces (`namespace { ... }`) for translation-unit–local linkage
in `.cpp` files.
Expand All @@ -81,7 +78,7 @@ Order within a class/struct body:

1. Public type aliases and nested types
2. Public constructors / destructor
3. Lifetime macros (`TSD_NOT_COPYABLE`, `TSD_DEFAULT_MOVEABLE`, …)
3. Explicit copy/move declarations (`= delete` / `= default`)
4. Public method *declarations* (queries before mutators)
5. `protected` virtual hooks / overrides — *declarations* only
6. `private` data members
Expand Down Expand Up @@ -127,15 +124,14 @@ implementation detail below.
- `std::shared_ptr<T>` for shared ownership (use sparingly).
- Non-owning references use raw pointers or project-specific ref wrappers
(`ObjectPoolRef<T>`).
- Express copy/move intent explicitly. In TSD-layer code, use the macros from
`tsd/core/TypeMacros.hpp` rather than hand-rolled `= delete`/`= default`
lists:
- Express copy/move intent explicitly with `= delete`/`= default` rather than
relying on the implicitly generated members:
```cpp
TSD_NOT_COPYABLE(MyClass)
TSD_DEFAULT_MOVEABLE(MyClass)
MyClass(const MyClass &) = delete;
MyClass &operator=(const MyClass &) = delete;
MyClass(MyClass &&) = default;
MyClass &operator=(MyClass &&) = default;
```
(Device code under `devices/` has no TSD dependency — spell intent with
explicit `= delete`/`= default` there.)
- RAII everywhere — resources are owned and released by objects, never managed
manually.

Expand Down
2 changes: 1 addition & 1 deletion devices/rtx/cmake/build_deps/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ if(NOT CMAKE_INSTALL_PREFIX)
CACHE STRING "Final install location." FORCE)
endif()

project(tsd_dependencies)
project(visrtx_dependencies)

include(superbuild_macros.cmake)

Expand Down
Loading
Loading