- Vectors, Matrices and Rays
- Validate
.rt
scene files - Parse
.rt
scene files - Ray tracing logic
- Camera
- Spheres
- Planes
- Cylinders
- Ambient light
- Spot Light
- Hard Shadows
- Minilibx user interface
-
norminette
- Don't turn in libs as submodules.
- Migrate
ft_libbmp
tominirt.h
. - Makefile should explicitly name all source files (
make dump_sources
). - Make must compile without relinking
-
make all
shouldn't recompile/rearchive any objects or sources. - Add
.keep
to object dirs - Create non-phony rule for each lib archive
-
- Test in workspaces
- Compiles with workspace's
cc
(clang
version12.0.1
)- Switch Makefile's
clang-12
toCC
before submitting.
- Switch Makefile's
- Program name
miniRT
- Follows
norminette 3.3.51
- Makefile rules:
$(NAME)
all
clean
fclean
re
bonus
- Make must compile without relinking
-
Makefile
must not relink - Compiles with
-Wall -Wextra -Werror
- Should not quit unexpectedly (segmentation fault, bus error, double free, etc.)
- All allocated heap memory properly freed, no memory leaks.
- Use gcc
-fsanitize=leak
flag. - Check memory leaks with
valgrind
.
- Use gcc
- Turn in
Makefile
,*.h
,*.c
,.gitignore
- Allowed functions:
-
open
,close
,read
,write
,printf
,malloc
,free
,perror
,strerror
,exit
- All
math.h
- All
mlx.h
- All
libft.h
-
- Create demo projects with miniLibX to see how it works
- Load scene from
.rt
file- Validate file name:
*.rt
- Validate
.rt
file format - Validate normalized vectors
- Skip comment lines (
#
) - Ambient lightning:
A NORMALIZED_BRIGHTNESS RED,GREEN,BLUE
- Camera:
C X,Y,Z OX,OY,OZ HORIZONTAL_FIELD_OF_VIEW
- Use a different up vector when orientation is also up.
- Light:
L X,Y,Z NORMALIZED_BRIGHTNESS RED,GREEN,BLUE
- Sphere:
sp X,Y,Z DIAMETER RED,GREEN,BLUE
- Plane:
pl X,Y,Z OX,OY,OZ RED,GREEN,BLUE
- Cylinder:
cy X,Y,Z OX,OY,OZ DIAMETER HEIGHT RED,GREEN,BLUE
- Validate file name:
- Create Vectors functions
- Create Linear Algebra functions
- Define ray tracing logic
- Objects
- Spheres
- Planes
- Cylinders
- Correctly handle object intersections
- Correctly handle object inside
- Create a user interface with
MiniLibX
- Use
MiniLibX
’s images - Window management must remain smooth
- Close window button exits the program cleanly
-
esc
key exits the program cleanly - Refresh image so it doesn't disappear on the VNC when window is minimized
- Use
- Add specular reflection to have a full Phong reflection model.
- One other 2nd degree object
- Cone
- Hyperboloid
- Paraboloid
- Color disruption: checkerboard.
- Colored and multi-spot lights.
- Handle bump map textures.
- Save trace to
.bmp
file-
s
key saves the image
-