Wednesday, November 6, 2024

Monte Carlo Path Tracer C++

I made a Monte Carlo Path Tracer in C++. I used PDFs to sample important places in the scene like the Sphere to make the caustic and the light to remove the  Noise. I also made a PDF for lambertian surfaces.


It also has:

  • It loads 3D Objects
  • It has BVH (Bounding Volume Hierarchies) for fast ray intersection testing. The boxes are aabb's (Axis Aligned Bounding Boxes).
  • I made this Materials: (Isotropic, Lambertian, Metal and Dielectric).
  • I made Texture Mapping. (2D Texturing).
  • I made the Motion Blur.
  • I made 3D Texturing with Perling Noise.


This one has Motion Blur on the orange ball, Texture Mapping, Refractive Material, BVH Hierarchy and Perling Noise:


If you want to look into the Code:

Path Tracer Code



Thursday, October 17, 2024

Multithreaded Renderer

I made a Multithreaded Renderer. It is a 2.5D Renderer that uses SIMD for rendering 4 pixels per thread. Each thread makes one block of the window, making independent jobs. I used WindowsAPI with semaphores.


If you want to look at the code:

Multithreaded Renderer Code

Tuesday, June 20, 2023

Zombie Game in Unity C#

I made a Zombie Game in Unity. It is a First Person Shooter. I used C#. I made the level in Unity.
  • Player Movement
  • Zombie AI
  • Different Weapon
  • Ammo System
  • Flashlight Decay
  • Pickups



Shooter Game Made In Unreal C++

This is a Shooter I made in Unreal Engine with C++.

Among the systems I made are:

  • Character Movement Functions.
  • Shooting.
  • Enemy AI - Behavior Trees.











Friday, July 2, 2021

Two Pass Gaussian Blur for Bloom Effect

 


This is a demo of Bloom effect I made in OpenGL using a two pass Gaussian Blur, I will explain the process to blur the image below:

If we look at the next video, in RenderDoc we can watch the brightness texture I blurred:



I used Ping Pong Buffers for this technique, which is basically to use two framebuffers that blur the input brightness image, one horizontallly and the other vertically. (That is the reason of the name two pass Gaussian Blur). 

This blurring happens for multiple passes, if we iterate sufficiently we can get a pretty good blur effect, in this case I iterated 10 times in total, which is 5 blur passes (1 horizontal and 1 vertical).

This blurred image is added on top of the original HDR color buffer to get the Bloom effect.

Tuesday, June 29, 2021

Parallax Occlussion Mapping with Normal Mapping


Added Parallax Occlussion Mapping, Parallax Occlussion Mapping is a technique to simulate depth without extra vertex overhead. Per example the next video shows a simple 2D plane but with Parallax Occlussion Mapping we can simulate depth and shaded 3D figures. Parallax Occlussion Mapping works best with normal mapping which is added on top of Parallax Occlussion Mapping to simulate light bouncing.

Saturday, June 26, 2021

HDR tonemapping in OpenGL with gamma correction.

 


This is a demo of HDR tonemapping with gamma correction, it uses a uniform variable to manipulate the exposure and HDR tonemapping enabling.