Clay is a flexible Monte-Carlo ray tracing engine written in Rust and OpenCL.

About

Clay ray tracing engine is:

  • Fast - because of the OpenCL, Clay is able to run its kernel code in massively parallel computing systems (e.g. GPUs), that makes it much faster than CPU-only analogs, and allows it to render images of sufficient quality even in real-time.

  • Modular - Clay is based on strict but flexible Rust trait system and type parametrization, that means you can assemble desired ray tracing pipeline from primitive building blocks.

  • Extendable - if desired functionality doesn’t exist in Clay yet, you always can write it by yourself by implementing corresponding traits. Moreover, you can even write your own modules of OpenCL code to run on a GPU. (And make a pull request after that, if you want to.)

This project is primarily aimed to be a convenient framework for experimenting with ray tracing, testing new techniques, making proof of concepts and other research activity in this field.

The key principles of the project is modularity and extendability. The performance is also one of the primary goals, as long as it doesn’t significantly reduce flexibility.

Source

Crates.io Docs.rs Travis CI License

All components of the project including the main crate are located on the Github in Clay-rs organization.

Knowledge base

Architecture

This section describes the basic principles the project is built onto and contains informantion about rendering mechanics, program entities and their hierarchy.

Usage

This section briefly shows how to use Clay and contains a list of examples.

Contribution

Contributions are extremely welcome. The project is designed to be very powerful, but for now it contains only basic functionality, so there is a lot of things to implement.

Licence

The project is licenced under dual MIT/Apache-2.0 license, look here for more information.