Linear vs. Gamma in PBR render pipelines - 2020-05-14 23:04

Linear vs. Gamma in PBR render pipelines

Link to main site

I’m noticing that its asking for the tangents to be calculated with an attribute create on the shoe. Its a pretty big difference in the render, is there a reason not to do it?

Oh ya, that’s actually a question I had rolling around my head too - I went back and forth for a while trying both attribute create for normals and tangents…

You’re right, tangents made a big difference. Although it wasn’t super clear to me which version seemed correct. Found areas in the model where both with and without looked better/worse depending.

Sometimes the modeling application exports the mesh with custom normals. Usually this is only used to improve fidelity visually with out increasing poly counts. I think TD’s attrib create applies a uniform generic normal calculation that usually looks good when there were no normals before.

The shoe had normals, but no tangents - @malcolm do you have any suggestions here? Is tangent attributes something that technically should always be on/created even when custom normals are provided through the mesh?

Tangents always need to be present when doing normal mapping. Without them the normals created from the normal map will be incorrect.

Awesome thank you for the clarification there too! Will update the file accordingly.
Guessing then if the model has custom normals, then we would turn on create tangents but leave the normals toggle off so tangents are created from the normals in the file?

I’m glad I’m not the only one that couldn’t figure out which way looked better. Ultimately I decided it looked more correct with the normals created, but it was a tough call

Really excellent demo. Thanks for sharing. One question about sRGB. If you know your input map is in sRGB shouldn’t you toggle this ‘on’ in the MovieFile In TOP?

Also noticed no cast shadows. Is this because shadow rendering quality is limited currently in TD?

@art3mis yep you’re correct sRGB toggle in movie file in would be the best way to go, as it’s computing it for free basically in the same node which saves you on GPU memory and some processing overhead.

I’ve broken that step out into it’s own shader so people can see the actual maths behind it.

Also, if you want to generate base color via ramps, or noise TOPs etc, you may want to convert that to linear before passing it into the base color slot of a pbr shader. It really comes down to what you’re using for your visual reference for what is “correct”.

Ya I left shadows off, felt that they kind of distracted from the main purpose of this demo which was the shading part.