About Me.
I’m an engineer at heart who possesses a big soft spot for the art of blending and merging different disciplines together. This particular drive took me down the road of Computer Graphics as a principal focus. Art🧑🏻🎨 and technology 💻 come together in CG in such a beautiful way that learning the mathematics and technical principles in favor of the construction of said art became a life priority for me.
However! CG is not the only area I have delved my hands into. I also possess experience in Business, Engineering Management and Entrepreneurship (created a small business back in Colombia), Academic Research (Worked as Research Assistant in a Lab) and Teaching (Authored a couple of surprisingly successful courses on Udemy in the fields of animation and game development). Take a look!
Professional Experience
I also did a bunch
of cool technical & artistic CG projects @ UPenn. Take a look!

Continue below for a detailed overview of everything I've done!
Topics in Computer Animation
C++ / OpenGL - GLFW / Visual Studio 2019

2D OpenGL Parametric Curves & Interpolation Engine.
Supports: Linear, Bezier Cubic Catmul-Rom, Hermite, B-Splines.
Methods: Bernstein Polynomials, De Casteljau.
Can help represent position & orientation (Quaternions and Euler Angles) of 3D Objects over time.


3D OpenGL Animation Engine.
Supports: Scene Graph World Hierarchy, Skeleton Transform Kinematic Chain Traversal, Foward Kinematics Solver, Loading of BVH animation files, Inverse Kinematics Solver, Skeleton - Mesh Skinning to drive geometry.
Methods: For FK, The skeleton's joints are arranged in a hierarchy where each child is positioned and oriented relative to its parent. The engine can compute or read from a BHV file the position and orientations of each joint in a skeleton relative to the world.
For IK, an IK chain is created, and it's solved by using both Cyclic Coordinate Descent and the Pseudo-Inverse Jacobian Approach.



Simple Physics Engine.
Supports: Simulation of Particle Systems. Rockets can fly up in the air and explode with particles.
Methods: Every rocket has the current state per frame and the derivate of the state. Integration methods such as Euler and Runge-Kutta are used to solve for the dynamics of the system.
PD Controllers, Intelligent Agents with Behaviors.
Supports: Individual and Group Behaviors such as: Seek, Flee, Arrive, Wander and Obstacle Avoidance. Flocking and Leading for Group sims are also supported.
Methods: Every agent gets info on the state of the world per frame. With this, the sim computes the desired velocities and heading angles which are then used by the feedback controllers (PD controllers in this case) to produce corresponding forces and torques. Then, the software updates all the agent's state vector using Euler integration and then displays the agent in the world.
Topics in Computer Graphics & Rendering
C++ / OpenGL - GLSL / QT

3D Software Rasterizer.
Supports: Rasterization of a full 3D Scene from World Space to Screen Space with Z-Buffering. Texture Sampling, Model Shading with Lights, Camera and OBJ model loading are supported.
Methods: Starting from World Space, the software converts to Camera Space using the View Matrix, then the Projection Matrix to get to Screen Space. SS Triangle rasterization is done manually. Texture Sampling done with Barycentric interpolation. Lighting and Shading using Lambert's law of cosines.


Fully Featured 3D CPU & GPU Path Tracer Rendering Engine.
Supports: Full OBJ scene loader. Global Illumination. Different types of surface materials, colors and lights. Textures.
Methods: Solving the Light Transport Equation and shooting rays per pixel that bounce in the scene.
Direct and Global Illumination, different types of BRDFs & Multiple Importance Sampling (MIS) are among parts of technology that has been implemented.
For the GPU case, the Rendering is being solved via a shader, on a screen space sized quadrangle.
Look below for some actual results from my rendering engine!

Physically Based Shaders. "RealShading."
Supports: RealTime PBR Materials. Environment Maps. Metallic - Roughness PBR Workflow.
Methods: Implementation of Epic Game's Real Shading in Unreal Engine 4 paper found here.
General Implementation of the Cook-Torrance Microfacet Specular Shading Model. We pre-calculate the information of GI and store it in a 2D look-up Texture.
Videogame Development
Raw OpenGL / Unity / Unreal Engine
OpenGL: From Scratch Minecraft Clone

NeonDodge VR - A Multiplayer VR Dodge Ball Game.
Lumos - A Multiplayer Hack n' Slash Game
