Rustic Zen:
Hardware Accelerated 2D Ray Tracing Framework & Rust Impementation of Zenphoton.
This raytracer simulates individual photons bouncing around a 2D sandbox, then plots the path it took. The image is comprised of the sum of millions of individual photon plots, creating a unique woven-like texture in the resulting images.
Rustic Zen renders artworks from a scene definition by simulating individual photons and tracing their path as they bounce through a 2D. space.
Photons are generated by Lights and interact with Objects. Each interaction results in either the photon being absorbed, or being allowed to continue with a new direction, based on the rules defined by the Object's Material.
This implementation uses Vulkan to provide hardware accelerated rendering of the images (although the ray tracing calculations are still done on the CPU)
What this library Provides:
This library holds only the rendering framework and models for defining a scene. Functionality for defining a scene, i.e. generative and animation algorithms are not provided here. The focus of Rustic-Zen is providing the raytrace algorithms for rendering a static scene.
Rustic-Zen provides a single basic shader, for backwards compatiblity with prior art. It is expected that dedicated library users will use the exposed Material trait to create your own shaders.
Example usage:
extern crate rustic_zen;
extern crate png;
use *;
use hqz_legacy;
// To use encoder.set()
use HasParameters;
use Arc;
Example Output:
Building:
This library by default uses Vulkano for access to hardware acceleration. To use this you will need a functioning Vulkan development setup, as well as the build dependencies for Vulkano for your platform. See the section "Setup and Troubleshooting" of the Vulkano 0.34 Readme for more information on configuring your machine.
If you are unable to provide a Vulkan environment (for instance if building on a CI server or older hardware) the Vulkano dependancies can be disabled by disabling default features. This will leave only software rendering available. More information here
Versioning:
In beta version numbers will be 0.*.*
every minor release will be breaking
Post 1.0.0
semantic versioning will be used
Licence
From Version 0.2.1 The library code, all tests, and documentation is licenced under the Mozilla Public License, v. 2.0. See the the LICENCE file for the full terms of this licence.
The code in the examples directory, and all artworks created by the examples are copyright (SEGFAULT), and are licenced under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License, except where specified otherwise. See the LICENCE-EXAMPLES file for the full terms of this licence.