Here are some of my projects!
WebGL Node Editor
Inspired by Blender and Shadertoy, I created this tool demo that generates GLSL code from a node tree interface.
To create the interface, I used pure Typescript to create the UI and to write a compiler-like module that transverses the node tree and generates GLSL code. The highlight of this project is not the “compiler” itself, but the architecture design of the whole tool: I needed a foundation that made creating new types of nodes as easy as possible, and after three iterations I can finally say I did it. In the near future I want to expose the API I created so users can create their own custom nodes.
Procedural Terrain Generator
An infinite procedural generated landscape.
A small demo I made on my spare time during the first semester of 2023 using Typescript, ThreeJs and WebGl. I wrote the shaders for the terrain and the sky and implemented the Marching Cubes Algorithm to generate the geometry. To improve the generation time, I learned how to use web workers to parallelize the generation of the terrain chunks.
I used layered noise to create a height map to describe the landscape, however, I could’ve used a SDF to describe it, and that would allow me to have caves and ridges.
- Code: Github
Ray Tracer
Implementations of ray tracers in C++ that I made between 2020 and 2021, based on the Ray Tracing in One Weekend Series.
I parallelized some of the ray tracers using OpenMp and Cuda. It was more of a guided learning experience than anything else.
- Code: Github
2D Planets
This was one of my first experiments with HTML Canvas back in 2021-2022. I implemented a simple 2D interactive simulation of planets. I first implemented it in vanilla Javascript, later I refactored it to use Typescript.
- Code: Github
Maze Solver in Cuda
I had to implement an algorithm in Cuda for an CS school assignment in 2021. I chose to implement the A* algorithm using concepts from this article. I also wrote the same algorithm in sequential C++ (to compare against the parallel version) and a maze maker based on BFS, also in C++.