🔵 miniRT - My First RayTracer with miniLibX

Introduction

miniRT is a RayTracing project that allows you to generate Computer-Generated Images from different angles and positions. You will implement simple geometric objects and lighting systems to create stunning scenes.

Requirements

  • The project uses the miniLibX library. You can use the version available on your operating system or the sources provided. Make sure to follow the rules for your libft as specified in the Common Instructions part.
  • The window management must be fluid, supporting window switching and minimization.
  • Resizing the window should adjust the content accordingly.
  • Geometric objects: The project should include at least three types - plane, sphere, and cylinder.
  • Properly handle intersections and the inside of objects.
  • Objects should be resizable. (from the file)
  • Translation and rotation transformations can be applied to objects, lights, and cameras (except for spheres and lights that cannot be rotated).
  • Implement Ambient and diffuse lighting for spot brightness, hard shadows, and ambiance lighting.
  • The image should be displayed in a window, and the program must handle closing the window cleanly.

Scene Description File

  • The program takes a scene description file with the .rt extension as the first argument.
  • Elements in the file can be separated by one or more line breaks.
  • Each type of information for an element can be separated by one or more spaces.
  • Elements can appear in any order within the file.
  • Elements defined by a capital letter can only appear once in the scene.
  • Each element is identified by a type identifier (one or two characters), followed by specific information in a strict order.

Bonus

For the bonus part, you can implement specular reflection to achieve a full Phong reflection model.

Sample Images

Here are some sample images generated with miniRT:

Basic Sphere

Basic Sphere

Basic Cylinder

Basic Cylinder

Basic Plane

Basic Plane

Two Spheres Intertwined

Two Spheres Intertwined

Complex Scene

Complex Scene

Getting Started

  1. Clone the miniRT repository to your local machine:
git clone https://github.com/AfafTarchoun/minirt.git
cd miniRT
  1. Compile the project using the provided Makefile and Run the program with a scene description file:

for example

make
./miniRT scenes/basic_sphere.rt