profile.jpg

MA Khatri

Hello! I'm MA. I recently graduated from Northwestern University with a Master's in Computer Graphics and Vision and also have a Bachelor's in Physics with a concentration in Astronomy, and Computer Science. My main interests are in computer graphics, ranging from real time rendering to offline path-traced rendering.

TU Wien Rendering Course Notes

While developing Chroma and trying to incorporate more complex integrators and materials, I realized that I needed a better understanding of the math and theory. I came across this rendering course from TU Wien which I think did a great job of covering the topic. What follows are my course notes from each of the lectures – mostly for my own future reference but I hope it can be helpful to others who come across this too.

Setting Up Chroma V0

Chroma is my third attempt at creating a raster and ray traced renderer following my original attempt for my intermediate graphics class using JavaScript and WebGL and my more recent attempt using C++ and OpenGL. This time, I am using C++ again, now with Vulkan as the backend for my rasterized view and NVIDIA’s OptiX as the backend for my ray traced view. The goal of this project was to learn how to use modern graphics APIs like Vulkan and OptiX and to create the basis for what will hopefully be a long-standing personal renderer that I can continue to develop.

OpenGL Renderer and CPU Path Tracer

Inspired by my old WebGL work on creating a JavaScript-based ray tracer, I wanted to try to re-create the project in OpenGL and use it as a platform to take a deeper dive into rasterized graphics and ray tracing. So, I followed The Cherno’s YouTube series on creating an OpenGL-based rasterized renderer. His videos guided me through a basic setup for an extendable OpenGL-based renderer with ImGui and support for multiple types of shaders and textures. I extended the rasterized renderer to complete the course assignments for Cem Yuksel’s Interactive Graphics Course, adding environment maps, reflections, shadow maps, and bump mapping with tessellation and geometry shaders.

Bubble Localization and Rendering for the SBC

My master’s thesis was on determining methods for triangulating the position of bubbles in the superheated liquid argon bubble chambers of the Scintillating Bubble Chamber collaboration. On the surface, triangulation for these chambers seems to be a matter of doing simple 3-view triangulation. However, triangulation is complicated by the fact that the cameras for these chambers are imaging through several distortion-inducing refractive surfaces which need to be accounted for. In my report, I go over the challanges in bubble localization in more detail, propose methods for overcoming them, describe how I tested the methods by creating photo-realistic renders of the chamber using Mitsuba 3, and provide metrics on which factors most influence the resulting errors in triangulation.

Literature Reviews on Structure from Motion and Deep Learning Generative Models

The last two courses in the Computer Vision sequence, Advanced Computer Vision and Statistical Pattern Recognition, required that we do literature reviews on a particular topic of our choosing. So, I chose to do surveys on large scale structure from motion using bundle adjustment, and deep learning generative models. You can view the surveys below:

    / [pdf]
    / [pdf]

Path of Steel

An isometric action RPG game in Unity made in collaboration with Nuremir Babanov, Mauro Herrera, and Ege Yilmaz as part of the Game Design Studio course.

While all members of the team worked on several aspects of the game, the general tasks were split up as follows:

  • Enemy design and AI
    • Nuremir
    • MA
  • Character controls, abilities, UI
    • Ege
  • Level layout and design
    • Mauro

The code repository for the game can be accessed here.