RSSAmplifier

Blog

Clément Pirelli

Selected Works

clementpirelli.wordpress.comRSS feed ↗10 posts

Latest posts

Debugging Graphics Programs

Introduction Starting out with graphics programming can be very daunting. The usual approach is to follow a long tutorial like LearnOpenGL, Raytracing in One Weekend etc., and then try to expand upon the resulting code base. While this approach works, it has a major problem. A lot of beginner programmers will be learning both C++ and graphics programming at the same time, which can lead to…

Interviewing for junior programming positions

I m writing this to summarize my tips on how to get a job as a newcomer to the industry, hopefully to help you, the reader, to get your first job. Firstly, the application process. Applicants should not self-select out of a job application. This means you should only look at whether you d like to do the job, and not at whether you think you re qualified for it. This is the recruiters job to find…

Lists of types in C++

Template metaprogramming is a lot of fun, though without moderation it results in bloated compilation times, unreadable code and nightmarish error messages. In this post we will disregard caution, temperance, and most other virtues and reimplement some Haskell in C++ templates simply because it can be done and I prefer sin to boredom. First, I must explain some metaprogramming shenanigans we ll be…

Renderdoc is not a performance profiler

The timing metrics it displays are about how long the replay of the command took, nothing more. This differs significantly from the actual time commands take to execute, to the point where the metrics are useless for performance profiling. Renderdoc is an incredibly useful tool to debug what an application might be doing wrong, but please don t use it as a profiler, you will not have a good time.…

Total War: Warhammer III

As part of my work at The Creative Assembly, I was involved in the development of Total War: Warhammer III As I joined the project late, I was mostly focused on bug fixing. This was a nice change of pace

C++ Reflection TS: A First Look

Recently, Matus Chochlik implemented the C++ Extensions for Reflection N4856 technical specification (or TS) in a fork of clang, which we can toy around with here. Naturally I was intrigued, but the cppreference page seemed very barebones. Hence, after spending a bit of time with the TS, I wanted to explain what it s all about, and how to Actually Do Things™ with it. In this post, I ll explain the…

Unity Compute Shaders

During October of 2020 I took part in a compute shader workshop by arsiliath. This was a great opportunity to learn more about compute shaders and create some awesome simulations using the full power of the GPU. Here s a few

CPU-based Path-tracer

On my free time, I ve been reading Raytracing in One Weekend and Raytracing: The Next Week by Peter Shirley and implementing his code (which you can find here) The resulting images are very beautiful, however the performance of such a

Vulkan Deferred Renderer and SSAO

In an effort to delve deeper into Vulkan as well as more deeply understand deferred rendering, I started developping a deferred renderer using the forward renderer I had previously created as a base. In this video, I placed 100 point

Vulkan Forward Renderer

You can find the code for this project here. As a continous effort to get better at graphics programming, I started working on a vulkan renderer at the start of summer 2019. I started out following the vulkan-tutorial.com tutorial. After