This repository is the GPU implementation of RayTerm
. There is also an
incomplete CPU implementation, available here.
RayTerm
requires the following to compile:
- OptiX 6.0.0 SDK
(Installed to
lib/optix
) - CUDA Toolkit 10.1
(Installed to
lib/cuda
) - MDL SDK
(Installed to
lib/mdl
) - GoogleTest
(Installed to
lib/googletest
) - Tickit
(Installed to
lib/libtickit
)
These libraries are all installed automatically by running gradle deps
,
although installation may take some time as many of them are large. This
automated installation requires git lfs, and
will fail without it. See gradle.properties
to change the default expected
installation locations, if you wish to use external packages.
Postmortem Note: Some of the custom git repositories that gradle deps
uses no longer exist, and so anyone wishing to build this project will
need to manually install and point Gradle to the correct locations.
The gcc
toolchain is used to compile RayTerm
. We specifically require
g++-7
, and by default search /usr/bin/
for it. This is taken care of
automatically when gradle compileCu
is run, but may need to be manually
changed if the gcc
installation changes.
When running built objects, the rayterm
library must be loadable, as well as
optix
, cudart
, libtickit
, and its internal dependencies
libtermkey
and
libunibilium
(which are not
automatically installed). The rayterm
library can be installed with
gradle install
, and its location can be modified in gradle.properties
. If
libtickit
is statically linked, then it can be left out of the above list.
Linting dependencies such as mdl,
proselint, and
clang-tidy ensure documentation and
code are well written; they should be installed before running gradle lint
.
For manual rendering comparisons, blender is used.
RayTerm
uses the Gradle to automate compilation and
testing. To build RayTerm
, run the command gradle build
. To run unit tests,
run gradle test
. To lint documentation and source code (where applicable),
issue gradle lint
. Custom scripts are also used to simplify and speed up the
development process: test.sh
compiles only what is needed for a ppm
render
test, and run.sh
compiles the necessary components for an rtexplore
executable. Both are configurable with simple command-line arguments.