Linear vs. Gamma in PBR Render Pipelines For Beginners & Intermediate

UPDATE: 05/28/2020:

  • fixed very small bug in linear<->sRGB conversion functions in glsl tone mapping TOP.


UPDATE: 05/15/2020:

  • turned compute tangents on for shoes - tangents must always be computed if normal mapping is used.


In the world of PBR rendering, where material and lighting settings aim to be as physically based as possible, special care should be taken to ensure that the render comes out the way it should.

One of the more common issues with render pipelines is that texture resources are not all converted to linear space before entering the shader. PBR specifically requires this, and with out taking the neccesary steps to convert from sRGB to Linear, and vice versa can result in renders that just don't look quite right.

When this happens, it's common to try and color correct/grade the render result to look more realistic, but often as we layer on more effects and changes, it becomes harder and harder to keep a cohesive look between materials, lighting scenarios, and 3d models.


In the attached TOE file, you will find a simple 3d PBR scene utilizing a substance material as well as a set of exported textures. 


For a larger discussion on the topic, please read through this forum thread:


Credit for the shoes 3d model :


If you want to help support this kind of work, please check out my Patreon

Experience level