Personal projects

Here is a list of projects I have made during university and in my spare time.

Videogames


The Ukrainian Crysis

For my bachelor degree thesis, I created a videogame with Unreal Engine 4, about the lastest conflicts happened between Ukraine and Russia, as a First Person Shooter game, featuring allied and enemy AI, realistic graphics, and real world elements.

Demo video Source code

Bug Invasion

A tower defense videogame developed with Unity, features procedural generated levels, low-poly style, and gives users the ability to created their own levels following a simple set of rules, using only a text editor and a pixel-based image editing software, such as Paint.net.

Demo video Source code

Bring me back

A platform game developed with Unity, in which the player (a ghost) has to advance throught a castle pushing a bubble by blowing it, with puzzles and traps that the player must overcome in order to complete each level. Developed as part of my Master Degree, with Alejandro Molina, Tania Garrido, and David Lerma.

Demo video Source code

Computer graphics


OpenGL infinite procedural world

Render engine, built from scratch using OpenGL and C++, featuring an infinite procedrual world fully generated on GPU using tessellation and geometry shaders, with procedural vegetation, volumetric cloudscapes, based on Guerrilla's Horizon: Zero Dawn cloud model, post-processes such as HDR, screen space reflections, or screen space light scattering, among others.

Demo video Source code

Monte Carlo Raytracer / Pathtracer

A small physically based multithreaded offline render engine featuring a Whitted Raytracer, Monte-Carlo Raytracer, and Pathtracing, which includes BRDFs such as microfacets, pure specular, or pure dielectric, and optimized using a bounding box hierarhy automatically build from scene elements.

Source code

OpenSceneGraph Amusement park

A scene featuring an animated amusement park built using OpenSceneGraph and C++.

Source code

Simulation


Handmade cloth simulation in Unity

A mass-spring system implemented in Unity, with the purpose of simulating cloth behaviour, featuring different mathematical models, both explicit and implicit, and using a Cholesky solver provided by the C# framework.

Demo video Source code

Handmade rigid bodies simulation in Unity

A rigid body simulation system, featuring soft and hard constraints, to simulate ball-joint hierarchies under gravity acceleration. Uses underneath Cholesky solver provided by the C# unity to solve the equation systems.

Source code

Fluid Simulation

A viscous fluid simulation application, using the finite differences method, and implemented with the fractionated step method, to simulate a fluid under the Navier-Stokes equation. Built in C++ and using OpenGL for visualization.

Source code

Shaders and Image processing


Real-time toon shading and cross-hatching shading

A set of shaders featuring two different non-photorealistic rendering effects, toon Shading and cross-hatching shading, implemented using synthclypse under OpenGL and GLSL language.

Source code

GPU Based, real-time physically simulated particle system

A simple particle system with dozens to hundred of thousands particles, simulated using compute shaders and following physically correct behaviour, of smoke. Uses texture atlas and customizable settings to update particles throught their lifetime.

Source code

Image-based box filter and HDR Tone mapping

Image processing algorithms, such as different box filters effects and HDR tone mapping algorithm implemented in C++ using CUDA to take full advantage of the GPU processing power.

Source code

Miscelaneous


Asynchronous I/O, multi-threaded network engine

A network engine, implemented in Java, using the lastest Java NIO features to implement a fully asynchronous I/O network engine, handling TCP packets in a multi-hreaded engine, capable of handling thousands of connections.

Source code

Mesh processing algorithms

An application featuring a set of triangle based mesh algorithms, capable of processing million-vertex meshes in less than a second. Built in C++, and using Eigen library to solve equation system for different purposes, such as automatic UV texture mapping.

Source code

Game Extender

A DLL hijacking application with the purpose of extending the functionality of old applications without having the source code, giving the capability of hooking functions and injecting code into a running process memory. Tested by altering the network crypt system of massive multi-player online games. Built only for learning and testing purposes.

Source code