Skip to content

krrud/krust-renderer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Krust Renderer

License: MIT Example diffuse render Example render showcasing normal maps and ggx Simple sphere

Table of Contents

Overview

This project showcases a simple raytracer written in Rust. Though relatively naive, the renderer is capable of producing very appealing results in a reasonable timeframe. Multiple importance sampling has been utilized to help converge more efficiently, and the BVH implementation allows for relatively quick scene traversals. GGX sampling is used for the specular response, while the principled material allows for blending of different shading techniques to create varied and realistic surfaces with ease.

Future improvements currently in development:

  • Subdivision (catclark and adaptive)
  • Subsurface scattering (diffusion and randomwalk)
  • Volumes
  • Radiance caching
  • More robust integration with Maya

Installation

To run this project, you will need Rust installed and the following dependencies:

  • rand = "0.8.3"
  • image = "0.24.5"
  • indicatif = "0.17.1"
  • serde_json = "1.0"
  • show-image = "0.13.1"
  • rayon = "1.5.1"
  • num_cpus = "1.14.0"

Usage

Scenes can be generated within maya using the provided plugin and scripts in the src/maya directory. A few simple example scenes are available to test as well. To render an example scene simply input the scene file, and output directory into the main function as follows:

render_scene(
    Some("path to scene file"),
    "path to output directory"
);

Provided examples scenes:

  • examples/spheres.json
  • examples/dog.json

Acknowledgements

This project was inspired by the work of Shirley et al.

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

About

A raytracer written in Rust.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published