Michionlion / rayterm

A Ray-Tracing Graphics Engine for XTerm-like Terminals

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

RayTerm

A Ray-Tracing Graphics Engine for XTerm-like Terminals

Build Status

Overview

This repository is the GPU implementation of RayTerm. There is also an incomplete CPU implementation, available here.

Gif Demo

Development

Dependencies

RayTerm requires the following to compile:

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.

Testing

For manual rendering comparisons, blender is used.

Build System

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.

About

A Ray-Tracing Graphics Engine for XTerm-like Terminals

License:GNU Affero General Public License v3.0


Languages

Language:C++ 72.3%Language:Cuda 18.0%Language:Shell 6.8%Language:C 2.9%