• Rendering

Mentors :

  • Divyansh Tiwari & Tirthankar Mazumder

Mentees :

  • 5-6

You will be required to first build a simple raytracing engine which will be able to:

  • Generate a PNG image of a raytraced sphere.
  • Apply anti-aliasing.
  • Accurately simulate different types of materials like metals and dielectrics.
  • Mimic a real life camera and its features.(For example, depth of field).

If time permits, we can explore more complex features such as multi-threading, adding support for custom lighting, and loading in predefined meshes (.obj files).

Reference materials:
Resources for learning advanced real ideas:
Some understanding of Object Oriented Programming in C++, and enthu!!
Raytracing is an up and coming rendering technique which is becoming increasingly more relevant in today's gaming industry with games like Cyberpunk 2077. With this project, you will get a very good idea of how the raytracing pipeline works.

You need to submit a project proposal. Your proposal should include: Motivation to study rendering and raytracing. Previous experience in coding. Previous experience in working in a large codebase, if any (not mandatory). Previous experience in using any rendering engine, if any (not mandatory). Ideas for extra functionalities you can add to the rendering engine Ideas for other things you can explore once you are done adding functionalities.

Tentative Timeline :

Week Work
Week 1 Learn about how raytracing works and the functionalities you would be implementing.
Week 2 3D vector class.
Week 3 Implementing stb_image for generating PNGs and a basic ray class.
Week 4 Implementing a simple camera class and obtaining a primitive image.
Week 5 Sphere class and surface normals.
Week 6-7 Implement an interface for hittable objects and add support for multiple objects in a scene.
Week 8 Antialiasing and materials and implement an advanced camera class.