Back

GitHub


MiniRT

Summary

Is a group project about crating a ray tracer engine in C that handles scene files, multiple cameras and hard shadows with multiple light.

Supported primitives:

miniRT-image

Introduction

When it comes to rendering 3-dimensional computer-generated images there are 2 possi- ble approaches: “Rasterization”, which is used by almost all graphic engines because of its efficiency and “Ray Tracing.”

The “Ray Tracing” method, developed for the first time in 1968 (but improved upon since) is even today more expensive in computation than the “Rasterization” method. As a result, it is not yet fully adapted to real time use-cases but it produce a much higher degree of visual realism.

Before you can even begin to produce such high-quality graphics, you must mas- ter the basics: the miniRT is your first ray tracer coded in C, normed and humble but functionnal.

The main goal of miniRT is to prove to yourself that you can implement any mathe- matics or physics formulas without being a mathematician, we will only implement the most basics ray tracing features here so just keep calm, take a deep breath and don’t panic! After this project you’ll be able to show off nice-looking pictures to justify the number of hours you’re spending at school...

Mandatory part

The goal of your program is to generate images using the Raytracing protocol. Those computer-generated images will each represent a scene, as seen from a specific angle and position, defined by simple geometric objects, and each with its own lighting system.

The constraints are as follows:

A 0.2 255,255,255
C -50,0,20 0,0,0 70
L -40,0,30 0.7 255,255,255
pl 0,0,0 0,1.0,0 255,0,225
sp 0,0,20 20 255,0,0
cy 50.0,0.0,20.6 0,0,1.0 14.2 21.42 10,0,255

Bonus part

The Ray-Tracing technique could handle many more things like reflection, transparency, refraction, more complex objects, soft shadows, caustics, global illumination, bump map- ping, .obj file rendering etc..

But for the miniRT project, we want to keep things simple for your first raytracer and your first steps in CGI.

So here is a list of few simple bonuses you could implement, if you want to do bigger bonuses we strongly advise you to recode a new ray-tracer later in your developer life after this little one is finished and fully functionnal.

Bonus list: