Ali Rajabi, Computer Engineer

I am a researcher driven by the challenges of Computer Graphics and High-Performance Computing (HPC). Discover my detailed portfolio and experience on About Me.

Gandom Rasterizer

Gandom is a software rasterizer that mimics algorithms which are behind graphics APIs and even what are implemented physically on GPU dies. In this project, I have implemented the processes used by graphics APIs and GPUs to render and synthesize an image for display, implemented entirely in code running on a CPU. For the performance issues I leveraged SIMD instructions (AVX2) to improve its performance. I implemented key algorithms of the graphics pipeline, such as triangle clipping, back-face culling, and scanline rasterization. ...

September 5, 2025

Noora Ray Tracer

Noora is a ray tracer began as a deep dive into the algorithms that bring virtual scenes to life. Starting with Peter Shirley’s accessible guides, I built a functional Monte Carlo path tracer—an offline renderer that simulates complex lighting effects like caustics and diffuse inter-reflection by tracing the path of light through a scene. Currently, it is an offline renderer capable of producing images with global illumination, soft shadows, and realistic materials, but I am developing a GPU-accelerated, real-time version to explore the performance and algorithmic trade-offs between offline and interactive rendering. ...

April 4, 2025

Anahita Render Engine

This is a renderer that I have developed for the bachelor’s degree project. In the beginning, I used the Blinn-Phong rendering model for it and now I am working on implementing a physically-based rendering model. For controlling the objects in the scene from light sources to complicated mesh objects and for the sake of debugging, I also implemented a GUI using Dear ImGui. Here you can load meshes to the scene through GUI that under the hood uses the Assimp library and besides that, you can control each object’s attributes. There is a scene graph that controls all objects on the scene and in addition to these, you can add and configure different sources of light on the scene. Unfortunately, the shaders are hard-coded for now, but I plan to take care of that too in the future. Below the GUI there is a log widget that shows warnings errors and all other sorts of messages that you may need. ...

June 28, 2023

Retro Zelda Clone in My Own 2D Game Engine

This is a simple clone of the old famous game Legend of Zelda that I have created with my 2D game engine. I created an ECS 2D game engine using C++ and SFML (as a library for handling graphics and sound). Due to this software architecture, it is easy to create new levels in a script file and then use that file in the game as a level. I didn’t pick any specific scripting language for this and it has a simple format for now. But as one of my goals in this project, I want to adopt the Lua language for handling scripts as it gets more complicated. ...

January 5, 2023

Inventory Management System Software

This is a software that I developed in C++ using the Qt library. I aimed to create a modern general inventory management system. For this reason, in parallel with the core capabilities, say adding products with different attributes or registering customers’ orders, I tried to add some features to this software to make it distinctive from its common counterparts; feature like “Dark Mode” is one of my favorites among these features that I rarely see in common software in this area. ...

March 2, 2019