Portfolio

You can read a little bit about me first!

Fuel Renegades

Fuel Renegades

Description: Published PC Racing Multiplayer Game (Steam) (Video)
Tech: UE4, C++
PBR Engine

PBR Game Engine

Description: Component Based, Multithreaded... (Video)
Tech: C++, OpenGL
vxr

vxr Rendering Engine

Description: Open Source (GitHub) PBR Engine + Final Year Project
Tech: C++, OpenGL
vxt

vxt Raytracer

Description: Open Source (GitHub) Multithreaded Path Tracer based on Peter Shirely's books
Tech: C++
Rasterizer

CPU Rasterizer

Description: Small C++ CPU rasterizer of triangle based convex meshes in Raspberry Pi 3
Tech: C++
Rasterizer

WIP: Roguelike PS4 Game

Description: Upcoming PS4 untitled game (university project)
Tech: UE4, C++

Fuel Renegades (Steam Published Game) (Oct 2017 - Jul 2018)

Link: https://store.steampowered.com/app/878110/Fuel_Renegades/

Arcade racing multiplayer (4 players split-screen, up to 8 players online) game with polished mechanics and smooth game feel, built in Unreal Engine 4 and published on Steam. Contributions to the project are:

  • Player Vehicle design and implementation: full implementation of vehicle movement mechanics with special emphasis on its feeling and speed.
  • Proper use of UE4 substepping system to achieve solid gameplay performance and framerate independent physics across computers with a wide range of specs.
  • Implementation of several postprocessing effects.
  • Several UI design including the Main Menu.
  • Making of the video trailers for the game.

The game received the following awards:

  • Best Videogame (Second Place), Student Game Contest ‘18, AEV Valencia.
  • Best Technology (First Place), Student Game Contest ‘18, AEV Valencia..

Back to top

PBR Game Engine (Oct 2017 - Jul 2018)

OpenGL and C++ game engine I made in my final HND year at ESAT Valencia for the graphics programming subject. This project was also my first attempt at making a 3D engine. Its features are the following:

  • Multithreaded agnostical graphics API.
  • Component oriented engine.
  • Physically Based Rendering techniques:
    • Material pipeline (PBS, Metallic/Roughness workflow).
    • Image Based Lighting (Radiance and Irradiance environment mapping).
    • Atmospheric Scattering (Rayleigh and Mie Scattering).
  • GLTF model loading.
  • Postprocessing Pipeline: SSAO, Bloom, Light Scattering (God Rays), Shadow Mapping, FXAA, Lens Distortion, Tonemapping and multiple one-pass filters.
  • Procedural generation of infinite voxel worlds.
  • UI integration (ImGui).
  • Sound integration (OpenAL).
  • Physics integration (Bullet Physics).

Back to top

vxr Engine (Open Source) (Jul 2018 - Ongoing)

Link: https://github.com/avilapa/vxr

Project that emerged from the desire to build a general purpose rendering tool that I could use to implement anything I was curious about or wanted to learn about. As it stands now, it is a multithreaded, PBR, 3D engine written in C++ and oriented to support different rendering backends. It is currently being worked on.

  • Multithreaded agnostical graphics API
  • Command Based Rendering, allowing to build the render commands in advance to be run in a separate thread
  • GameObjects with the following components currently implemented (each component is controlled and updated by a specific system):
    • Transform: Containing the object’s transformation and position in the scene’s hierarchy.
    • Mesh Filter: Reference to the mesh the object will be rendered with.
    • Renderer: Reference to the Material Instance the object will be rendered with.
    • Current Materials: Standard (Lit), Unlit, Wireframe, Skybox, Screen, Planet, Add your own!
    • Light: Turns the object into a source of light.
    • Image Based Light: Light that captures the environment lighting into a diffuse irradiance map and a specular irradiance map for reflections.
    • Camera: Adds to an object all the functionality needed to render from its point of view with its unique parameters.
    • Camera Composer: Organizes all post-processing needed for any specific camera, and handles updates automatically.
      • Postprocessing Materials: One-Pass-Filters (Grayscale, Negative), Add your own!
    • Custom Component: Similar to Unity’s MonoBehaviour, allows the user to create custom reusable components with specific behaviours.
  • Model loading (.obj)
  • UI Editor

Back to top

vxt Raytracer (Open Source) (Nov 2018)

Link: https://github.com/avilapa/vxt

First contact with ray tracing and offline rendering techniques in C++. Multithreaded CPU based path tracer built from scratch.

  • Multithreaded Tiled Rendering in CPU.
  • Creation of Image Previews in the process.
  • Objects: Sphere, Box, Axis Aligned Plane, Volume, AABB (all capable of being Translated and Rotated).
  • Bounding Volume Hierarchy Acceleration Structure.
  • Materials: Lambertian, Metal, Glass, Isotropic (Fog/Smoke), Diffuse Light.
  • Textures (used in all materials): Image Based, Noise, Custom.
  • Realistic Camera: Depth of Field, Motion Blur.

Back to top

CPU Rasterizer in Raspberry Pi 3 (May 2018 - June 2018)

Project for the low level and optimization subject in my final HND year. It consisted in implementing a graphics algorithm and applying as many optimization techniques as possible.

  • CPU rasterization of triangle based convex meshes.

Back to top