spiffre.eu

What has he done ?

Here are a couple of examples of programs I made during my curriculum (both for projects and in my free time). Everything is done in C++, and all rendering is done using OpenGL.


PhysicWare
My first real 3D application was a school project: it simulated the physics of spheres, with an emphasis on how good it’ll look over how physically realistic it’ll be. You could throw a bunch of balls around, tweak the gravity value (or even invert it) and watch them behave accordingly.

Parallax Mapping Shader
My first real shader was this parallax mapping material: texture coordinates are shifted based on a heightmap and a view vector, in order to emulate the parallax effect irregular surfaces have. This improves dramatically the impression of depth on such surfaces.

GPU Colision Detection
This was an experimentation of hardware collision detection. It uses occlusion queries to test the number of pixels passing the depth test; this number varies depending on viewport size and FOV, but the result is good enough to provide a YES/NO answer.

Depth Of Field Post-Process
The scene is rendered into a texture, which is copied, down-sampled and blurred. The copy and the original are then blended together, based on a factor that correlates the relative distances of world pixels and pixels that are perfectly in focus.

Glow Post-Process
The scene is first rendered into a low-resolution texture, using the objects’ glow color of only (occluders are black). This texture is then blurred and applied over the actual scene using a fullscreen quad, which makes the glow appear to bleed over the  scene elements.
GPU Normal Mapper
I developed a lightweight normal map generator for my tests. It uses offscreen rendering (OpenGL) on a screen-aligned quad to apply a 3×3 Sobel Filter to the heightmap. I later used the same framework for a school project on Image Processing on the GPU (collision detection, gather/scatter, etc).
Operationnal Risk Simulator
This is my final year school project. The aim of the project was to realize an Operationnal Risk Simulator for the Banque de France. Using MonteCarlo and Metropolis-Hastings algorithms and based on several available distribution laws (Normal, Gamma, Weibull, Pareto…), the software was to display distributed loss graphs and compute the Value at Risk. For more information, head over here (in french).

My role was to provide the team with a basic framework as well as develop the graphic part of the project. The framework:

  • provided basic debugging tools, memory management (smart pointers, allocators), file management,
  • allowed the seamless use of all the third-party libraries (wxWidget, OpenGL, Boost),
  • offered a basic general architecture (with modules for each of the third-party libraries and engines for instance).
ORS ORS ORS