Quicklist: 

Systems programming, computer graphics, computer vision, other hacks, visual effects for Ubuntu, work for Igalia, mesa3D


(See also: my blog, my github, my freedesktop gitlab, my shadertoy and this list)




Winnie (libwinnie): a framebuffer window system

Winnie is a framebuffer window system I write for fun and to familiarize myself with the concepts of device handling, event management, window management, memory management etc on Linux. Winnie can handle the mouse and keyboard events (/dev/psaux, /dev/tty) and render to the Linux framebuffer device (/dev/fb0). It has a minimal window manager that can handle the frames using reparenting. (Linux) More...


BootBoot: a boot effect in x86 assembly

BootBoot is my x86 assembly helloworld. A program that boots from a floppy (or flash disk) displays an effect and loads the first sector of the first hard disk (grub). Code is on github. More...


Gliar (libgliar)

Libgliar is a library that can fake the OpenGL context information returned by most glGet methods. It can be used to debug OpenGL applications. (Linux) More...






Depth Aware upscaling experiments

An algorithm to upscale lower resolution textures (Vulkan):
I used the values of a downscaled normal buffer to classify the low resolution image pixel neighborhoods in two categories: neighborhoods where all the pixels are part of the same surface and neighborhoods where there's a surface discontinuity. Then I used linear interpolation to upsample the surface neighborhoods and a depth aware algorithm to upsample the neighborhoods that contain discontinuities. I used my own downsampling method to select the most representative pixel of each neighborhood and normals instead of depths to classify the pixels. The algorithm seemed to significally improve the visual results compared to 3 other depth aware downsampling algorithms I tried (max depth, min depth, and min/max depth selected one after the other following a checkerboard pattern) that are used with depth-based classification. An analysis of all the experiments I've done step by step and how I've came up with the idea of the final algorithm as well as metrics and comparisons can be found in the series of blog posts below. Part 6 is a complete description of the final method I used. More...


Sdrviewer

A minimal pixel shader viewer that can instantly show the changes made in a pixel shader. (Linux) More...


Hair simulation using a mass-spring system

A mass-spring based system to simulate mohawk-like hair. (Linux) More...


3D texture-based volume rendering: a CT scan viewer

3D texture based volume rendering of 2D computed tomography slices. It uses a sigmoid-based transfer function. (Linux) More...


3D graphics algorithms: Clouds and Bumps for Stellarium (a PC planetarium)

As part of the ESA Summer of Code in Space, I added shaders and multitexturing support on Stellarium (a planetarium for pc) and I used normal mapping and procedural clouds (Perlin noise) to improve the Stellarium planet rendering. (Linux, Windows, Mac OS X) More...



A CPU Path Tracer

A path tracer that can load complex scenes (with quad and triangle meshes) and perform global illumination using both area and point lights. Software rendering. (Linux, Windows, Mac OS X) More...



A CPU Ray Tracer

A ray tracer that can render spheres and sphereflakes. Software rendering. (Linux, Windows, Mac OS X) More...




Computer graphics experiments (Uni assignments and/or hobby projects)

Computer Graphics experiments i.e. hierarchical body animation using trigonometric functions, visual effects with particle systems (smoke, fire, fireworks). (Linux, Windows, Mac OS X) More...
Pixel Shaders Various effects in pixel shaders from my shadertoy

Voronoi, plasma, ray marching and more...

psych tunnel plasma overflow foobar creatures xor based patterns






VKeyb: A motion driven virtual keyboard application

Vkeyb is an optical flow driven keyboard for Linux that allows the user to type by moving his body in front of a web camera. More...



Computer vision and image processing research projects and MSc assignments.

Some Computer Vision and Image Processing projects like Optical Character Recognition (OCR), Head detection on Kinect depth frames, Snakes, Medical Imaging et c... (Linux, Windows, Mac OS X) More...



A team project for the CAVE environment: Virtual Anatomy Class

A virtual course for the CAVE environment. Team project, XVR. (Windows) More...


An augmented reality game: AR Snakeball

This is a small program, similar to the snakeball game. It can be "played" using a webcam and a flashlight. The player collects virtual balls that appear on a window in random positions using a flashlight. (Linux, Windows, Mac OS X) More...


Kinect helloworld: Invisible

A quick hack for kinect to play with libfreenect on linux. The texture is distorted using a GLSL shader and takes the shape and depth of my silhouette. (the idea comes from this video: https://www.youtube.com/watch?v=Z4nYmivmXGw) Code: here







A system to reject phone calls from my laptop

A system we devised and set up at home for me to be able to reject annoying phone calls from my laptop. I used it More...


DTMS ("Don't touch my screen!")

DTMS is a short program that shouts "Don't touch my screen bro!" whenever someone touches my screen and leaves a fingerprint on it. More...


Electronics experiments: an infrared receiver

An infrared receiver circuit to remote control programs with lirc support such as mplayer. (Linux) More...


☃☃☃☃☃☃ Experimental helloworld kernel module

My first (and last) kernel experiment. More...






Extracts from my code for Ubuntu

Screenshots and videos from random graphics assignments for the Ubuntu Desktop during my years @Canonical. More...




Code for Igalia

Highlights from my work for Igalia and code I've written for fun at Igalia. More...




Contributions to mesa3D

Highlights from my contributions to mesa3D.
More...



Other:
  • Blog: If something is missing from here you might find it in my blog!
  • Blog category Hobby projects and hacks might be slightly more updated too.