A photorealistic raytracer and editor designed to create stunning rendered images with ease and flexibility. Featuring an intuitive interface for editing objects, importing models, and adjusting raytracer settings.
- Photorealistic Rendering: High-quality raytracing for realistic lighting, shadows, and reflections.
- Acceleration Structures:
- Bounding Volume Hierarchies (BVH): Speeds up rendering by optimizing object intersections.
- Adaptive Supersampling: Enhances image quality by dynamically refining pixel sampling in detailed areas.
- Multithreading: Leverages multiple CPU cores for faster rendering.
- GUI and Editing:
- Object Editing: Modify object properties such as position, rotation, scale, and material.
- Settings Panel: Adjust rendering parameters like resolution, recursion depth, and lighting settings.
- Model Import: Load and integrate OBJ models, complete with support for:
- Textures: Apply image-based materials to models.
- Bump Mapping: Add surface detail for increased realism.
- Apache Maven
- Java JDK 22 or greater
- A system that supports OpenGL and the latest graphics drivers installed
-
Clone the repository:
git clone https://github.com/JacksonHoggard/raydream.git cd raydream
-
Compile the program:
mvn clean package
-
Once the program has finished compiling, either double click on the
raydream-jar-with-dependencies.jar
file in the newly created target folder, or run the following commands to run the program:cd target/ java -jar raydream-jar-with-dependencies.jar
Contributions to RayDream are welcome! Whether you want to fix bugs, add new features, or improve documentation, your contributions are greatly appreciated. Just fork the repository, make your changes, and submit a pull request.
This project is licensed under the MIT License.
Resources used for this project:
- Raytracing CS148 Stanford
- Koto's Stack Overflow Comment
- Phong Illumination Model Cheat Sheet
- Overview of the Ray-Tracing Rendering Technique
- Ray Tracing in One Weekend
- The Nim Ray Tracer Project - Part 4: Calculating Box Normals
- Fresnel Term Approximation for Metals
- Ray Tracer Challenge: Texture Mapping
- Ray-plane Intersection Princeton Slide
- Scratchapixel: Ray-Tracing: Rendering a Triangle
- Graphics Compendium Raytracing Chapter 34: Transformations
- Jacco's Blog
- The University of Utah CS 6958 Lecture 8
- The University of Utah Advanced Ray Tracing lecture
- Karadeniz Technical University: Texture Mapping
- Bump Mapping - CS384G Computer Graphics Final Project