Archives de catégorie : C++

Coercing Assimp into reading OBJ PBR materials

These days, I’m trying to import 3D models exported as Wavefront OBJ files in my Vulkan renderer. In order to achieve that effortlessly (kinda), I’m using the very good Assimp (pun not intended) library.

It kinda works well if you stick to a « traditional Blinn-Phong » lighting pipeline (also known as « prehistoric lighting » 😉 ), with ambient/diffuse/specular components and so on. Everything is there. Things become trickier if you try to bring PBR into the mix, with roughness, metallic and ambient occlusion maps for example.

What parameters should you use in Assimp to read those values ? What texture type should be used in order to import those maps ? Turns out it’s not as easy as one would think, because support on both the Wavefront OBJ specification and Assimp is just not there.

So I had to cheat a little, let me explain how !

Continuer la lecture de Coercing Assimp into reading OBJ PBR materials

UNREAL ENGINE TIPS – C++ BITFLAGS ENUMS

While working on the game Front Line Zero with the METATEK game developement studio, I’ve used the Unreal Engine 4 game engine for some years now.

I’d like to share some knowledge about the pitfalls and neat tricks I got to discover under the form of short, easily-readable blog posts.

Today’s topic : how to make a C++ enum that displays as an editable bit flags value in the editor.

Continuer la lecture de UNREAL ENGINE TIPS – C++ BITFLAGS ENUMS

Unreal Engine Tips – Playing random animations

While working on the game Front Line Zero with the METATEK game developement studio, I’ve used the Unreal Engine 4 game engine for some years now.

I’d like to share some knowledge about the pitfalls and neat tricks I got to discover under the form of short, easily-readable blog posts.

Today’s topic : how to play a random animation from a predefined list.

Continuer la lecture de Unreal Engine Tips – Playing random animations

Two dangers of modern C++

I’d like to talk here about two not-so-new features of C++ (auto types and lambda functions) that managed to bite me recently, even though I thought I knew them well enough (I still do!).

According to me, it doesn’t show that one should ditch them into oblivion and never use them (but some people make their life easier by doing so), but clearly that they should be handled with care, as they more or less act as syntactic sugar on C++ type system, which can be, unfortunately, both overly rigid (which is why we use them in the first place) and overly flexible (which is usually why bugs get in our way).

Let’s get to the point.

Continuer la lecture de Two dangers of modern C++

Aggressive commit of Intellisense suggestions in Visual Studio

Just to add a bit of context here: at the moment, I’m doing quite a lot of C++ programming on Windows environments, especially with Visual Studio.

And one thing I particularly dislike with Visual Studio’s default settings is that « aggressive commit » of Intellisense suggestions when you’re typing a type is disabled by default.

So, what is « aggressive commit of Intellisense suggestions », you ask…

Continuer la lecture de Aggressive commit of Intellisense suggestions in Visual Studio

Reblog: Problem with libGL.so on 64-bit Ubuntu

This isn’t a « true » reblog, but I just wanted to say that I had the same problem than the author of the blog post I’m about to link, and that his solution just did the trick for me too, so I thought I would give him full credit for the solution given it just worked completely unaltered in my situation too.

http://techtidings.blogspot.in/2012/01/problem-with-libglso-on-64-bit-ubuntu.html

Continuer la lecture de Reblog: Problem with libGL.so on 64-bit Ubuntu