About
Download my CV
Skills
Languages: C++, C, Rust, Python, JavaScript, GLSL, HLSL, x86 assembly, RISC-V, MATLAB, Mathematica, LaTeX.
Libraries: OpenGL, Vulkan, DirectX 12, TBB, CUDA, WebGL, Three.js, Qt, STL, OpenCV, PyTorch, numpy, sklearn.
Tools: Clion, Visual Studio, VTune, Renderdoc, PIX, Git, Perforce, Maya, Bifrost, Arnold, Mitsuba, PBRT.
Education
M.Eng. Computer engineering (Thesis), McGill University, Canada
Jan 2017 - May 2019
B.Eng. Computer engineering, Université de Sherbrooke, Canada
Sep 2012 - Dec 2016
- Specialization in digital signal processing and machine learning
Work experience
Senior software engineer, NVIDIA
April 2022 - Present
- Working on OmniGraph, the compute engine of Omniverse.
R&D software engineer, Electronic Arts - SEED
Mar 2020 - April 2022
- Develop a GPU implementation (DirectX 12, HLSL) of Direct Delta Mush, a cutting edge real-time skinning animation technique to significantly improve the quality of characters animation in video games and reduce artists time.
- Collaborate on major improvements to the algorithm to increase the runtime efficiency, leading to a publication at SIGGRAPH.
- Validate the algorithm in Python and numpy to ease debugging of the GPU implementation.
- Implement GGX environment prefiltering in SEED's real-time research renderer (C++) to improve the realistm of shiny surfaces.
- Implement 4D mesh streaming in the renderer to support ongoing research on hyper-realistic characters in video games.
Software developer, Maxon
Jun 2019 - Mar 2020
- Develop new features in Cinema4D, a 3D animation software (C++, OpenGL), to improve various modeling workflows.
- Resolve important software defects encountered by users and internally on Windows and Mac.
Software developer (Intern), Autodesk
Jan 2019 - May 2019
- Develop a new C++ plugin as key support for the Bifrost procedural generation system in Arnold, a film quality renderer.
- Act as the principal communication point between two teams of vastly different backgrounds and development pipelines involved in this project.
- Debug tricky low-level crashes on Linux related to smart pointers using custom memory allocators within shared libraries.
Teacher Assistant (TA), McGill University
Sep 2018 - Dec 2018
-
Develop a hybrid offline and real-time renderer
(deferred shading + shadow mapping + SSAO + baked GI) for the Realistic image synthesis (ECSE 446/546) class.
- Prepare assignments and the final exam.
- Hold tutorials and office hours.
Software developer (Intern), Autodesk
May 2016 - Aug 2016
- Develop a new tool in Maya (C++) using a skinning decomposition algorithm to allow importing complex animated characters into game engines without the usual tedious and time-consuming intermediate steps.
- Develop a graphical user interface and an appropriate workflow for this tool.
Software developer (Intern), Autodesk
Sep 2015 - Dec 2015
- Optimize the FBX importer of Maya (C++) using the Intel VTune profiler, giving 6x performance improvement.
- Generalize the animation curves name function to the hardware accelerated context using OpenGL.
- Develop an automated test suite in python to detect performance and usability regressions.
Software developer (Intern), Autodesk
Sep 2014 - Dec 2014
- Optimize a module in Maya using hardware accelerated graphics (OpenGL), giving 4x performance improvement.
- Develop and debug various features in the very large C++ codebase of Maya.
- Write regression tests to ensure retro compatibility of clients' scene.
Engine programmer (Intern), Ubisoft
Jan 2014 - Apr 2014
- Develop and debug features of AAA game engine in C++ and C# to meet the changing demands of game production.
- Collaborate with a team of hundreds of developers, artists and producers to ensure their problems are solved correctly.
- Document the features of the engine in a way that can be easily understood by artists.
Software engineer (Intern), Canadian Space Agency (CSA)
May 2013 - Aug 2013
- Extend the 3D simulator (C++, Ogre3D) of the ISS robotic arm CANADARM to provide various networking functionalities.
- Design a robust multithreaded client/server architecture to handle many TCP clients at the same time.
Software developer, CIMA+
May 2012 - May 2013
- Design and develop an automatic archiving platform using C# and the Outlook API, allowing substantial savings in multiple divisions of the company.
- Generalize the software to be used by many different offices by providing easy & robust customization via XML files.
- Deploy the system in production and provide technical support for various bugs encountered by users.
Additional experience
Honors & Awards
-
Graduate Excellence Fellowship (GEF) - 2018
Electrical & Computer Engineering, McGill University.
- Winner of "Most retro hack" at McHacks 2018.
- 2nd Place at the McGill Physics Hackathon 2017.
-
Graduate Excellence Fellowship (GEF) - 2017
Electrical & Computer Engineering, McGill University.
- 2nd Place at the Startup Weekend Montreal 2014 hackathon.
Courses
See the complete list
Interests
- Computer Graphics
- Rendering
- Fluids simulation
- Physically based animation
- Game engine
- Machine learning
- Digital signal processing
- Low-level stuff (bits and bytes)
- OS
- VM
- Emulation
- Embedded systems
- CPU/GPU architecture
- Physics
- 3D animated movies
- Photography
See more history