https://github.com/developerpaul123/rayray
Rayray is a baby ray tracer written in C++.
https://github.com/developerpaul123/rayray
c-plus-plus cpp cpp11 cpp17 graphics raytracer raytracing raytracing-engine raytracing-one-weekend standard-template-library stl
Last synced: 17 days ago
JSON representation
Rayray is a baby ray tracer written in C++.
- Host: GitHub
- URL: https://github.com/developerpaul123/rayray
- Owner: DeveloperPaul123
- Created: 2018-05-21T22:28:22.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2019-08-29T02:25:38.000Z (almost 6 years ago)
- Last Synced: 2025-04-22T01:48:21.406Z (3 months ago)
- Topics: c-plus-plus, cpp, cpp11, cpp17, graphics, raytracer, raytracing, raytracing-engine, raytracing-one-weekend, standard-template-library, stl
- Language: C++
- Size: 76.2 KB
- Stars: 18
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# rayray
[](https://travis-ci.org/DeveloperPaul123/rayray)
[](https://ci.appveyor.com/project/DeveloperPaul123/rayray/branch/master)
[](https://www.codacy.com/app/developerpaul123/rayray?utm_source=github.com&utm_medium=referral&utm_content=DeveloperPaul123/rayray&utm_campaign=Badge_Grade)
[](https://www.codefactor.io/repository/github/developerpaul123/rayray)
[](http://hits.dwyl.io/DeveloperPaul123/rayray)
[](https://github.com/DeveloperPaul123/rayray)rayray is a baby raytracer I've been working on in my spare time. The goal is to create a decent raytracer in pure C++ 17. The current API is under heavy development but check back soon for updates!
Currently, the API looks something like this:
````cpp
int main(int argc, char* argv[])
{
using vec3 = rayray::vector;
using uchar = unsigned char;rayray::pinhole_camera camera;
camera.set_eye(0, 0, 500);
camera.set_lookat(0, 0, 0);
camera.set_view_plane_distance(500);
camera.compute_uvw();rayray::sphere sp1({ -45.0, 45.0, 40.0 }, 50.0);
sp1.set_color(rayray::red());rayray::scene basic_scene;
basic_scene.add_object(&sp1);
basic_scene.set_background_color({ 0.0, 0.0, 1.0 });rayray::view_plane view_plane(300, 300, 1.0, 1.0);
// initialize the sampler and generate the samples
rayray::multijittered_sampler sampler(25);
sampler.generate_samples();view_plane.set_sampler(&sampler);
basic_scene.set_view_plane(view_plane);rayray::multi_object_tracer multi_object_tracer(&basic_scene);
basic_scene.set_tracer(&multi_object_tracer);auto output_image = camera.render_scene(basic_scene);
const auto ok = rayray::io::write_ppm_image(output_image, "output.ppm");
if(!ok)
{
std::cout << "Could not output image." << std::endl;
return -1;
}return 0;
}
````