Hello, 👋

I'm Lorenzo Rutayisire — probably better known online as loryruta — and I'm a student at the University of Modena and Reggio Emilia (Italy), where I've graduated in Computer Engineering and where I'm currently attending "Artificial Intelligence - Large Scale".

I consider myself a Software developer in the most general sense of the term, as in my career I've been involved in projects of several kinds (both for work, hobby or university tasks): from embedded programming to web development. Sometimes I've also been involved in web design tasks and I can clearly say I'm not a web designer (use this page as a proof)!

My area of interest, so far 5 years since now, is Computer Graphics and in general GPU programming. During these years I've studied and experimented several graphics APIs (OpenGL and Vulkan), and rendering techniques that have been useful in my hobby projects (that if you're interested you can check out on my Github profile). Also, my Bachelor degree thesis was about the architectural design of a Vulkan renderer and implementation of real-time Computer Graphics techniques.

Finally, I'm an electronics enthusiast — I really like sparks but I'm not that brave to make them by myself — and I enjoy everything that's mind-blowing regarding mathematics.

I also enjoy playing guitar and piano, and go outside to practice calisthenics and acrobatics 🙂

Projects

(some of them)

vren

Computer graphics

vren is a 3D graphics library written over the Vulkan API. It provides different levels of abstraction: the library itself is a set of modules that the user can combine to achieve several tasks and possibly enable optimization techniques according to its hardware capabilities. At the moment the main features are Mesh-Shading rendering, Occlusion Culling and Clustered Shading.

C++
Vulkan
CMake
GLSL

shinji

Buildsystem Computer graphics

shinji is a CMake addon that enriches the build process of a graphics application. Thanks to external tools (i.e. glslc and glslangValidator), it's able to validate shaders, compile GLSL shaders to SPIR-V or - probably the most used feature - embed resources inside your binary making more portable your graphics application or library.

CMake
C++

mdmc

Computer graphics

mdmc was thought to be a tool capable of converting a 3D model into a Minecraft schematic (a subset of the Minecraft world). The process consists in the conversion of the 3D model to a 3D volume (conservative rasterization) and then the mapping of the 3D volume into Minecraft blocks. The tool hasn't been completed due to difficulties in the mapping process, but features interesting techniques such as parallel RadixSort, parallel Octree construction and traversal for visualization.

C++
OpenGL
CMake
GLSL

voxelizer

Computer graphics

voxelizer is a module that was originally part of mdmc. It can be used either as a tool or a library and provides constructs for 3D Conservative Rasterization, parallel Octree Construction and Traversal. When used as a tool, it's capable of writing the generated Octree on a file.

C++
OpenGL
GLSL
CMake

gpu-radix-sort

Computer graphics

gpu-radix-sort is a module that was originally part of mdmc. It's a header-only, one file, library containing a parallel Radix sort algorithm, written using OpenGL 4.6.

C++
OpenGL
GLSL
CMake

openverse

Computer graphics

Openverse is a sandbox voxel-world game written in Java (not to say it's yet another Minecraft clone). Its architecture is very similar to Minecraft's: the codebase is splitted in a client and a server, that cooperate locally to achieve singleplayer modality and can be detached for multiplayer. Openverse is thought to be easily and totally moddable by a future community (that's why we chose Java). For graphics, it uses LWJGL — which is a Java-port of OpenGL — and features a rasterize-based renderer and SSAO as an optional post-processing effect.

Java
OpenGL
gradle

carcassonne

Web development

carcassonne is the digitalization of the namesake board-game. It was developed by me and a friend during COVID-19 quarantine to play with our group of friends.

Typescript
Vue.js
PixiJS
HTML
CSS

pmcu

Embedded programming Backend

An IoT device meant to track weather conditions and air pollution. The measurements are done by two sensors: DHT22 (humidity and temperature) and SPS30 (particulate matter). These sensors are read by an MSP430 microcontroller that, along with the GPS position, sent the data to an MQTT broker, over the GSM network. The data is stored online and a website permits to view temporal charts.

Typescript
Vue.js
PixiJS
HTML
CSS

My contacts