4 comments

[ 3.3 ms ] story [ 20.9 ms ] thread
Great article on tangent spaces! Could you explain how UV distortion affects tangent vector calculation in more detail?
Another great reference on this: https://3dreference.notion.site/Texture-Types-15aef4826bf04d...

Note that normal maps are still widely used in PBR workflows. The article doesn't mention them, but older renderers tended to use diffuse, specular, normal maps, and modern asset creation typically involves albedo, roughness/smoothness, metalness, and ambient occlusion maps in addition to normal maps for textures.

> If we could afford a polygon for every pixel we wouldn’t need textures at all.

Heh; with mesh shaders and Nanite, we sort of can now. Whether older GPUs can render them is a different matter altogether though.

There are a couple of equivalent but complementary definitions of tangent space used in differential geometry. One is that a tangent vector at a point p is a directional derivative operator, i.e. a local map from functions defined in a neighborhood of p to numbers that is linear and obeys the Leibniz (product) rule of derivatives. It turns out that any such operator can be identified with some equivalence class of curves through p, which is the second definition of a tangent vector: a set of curves which define "the same" directional derivative operator.

I find the second definition more intuitive and easier to visualize, while the first is more formal and algebraic. For example, using the second definition it's easy to visualize the pushforward T(V) (given a smooth map T) of a tangent vector V at p to another vector U at q = T(p): picture a curve through p corresponding to V mapped via T to a curve through q. That curve defines the pushforward U = T(V). This isn't a substitute for the algebraic definition of a pushforward, of course, but I find it helpful. (The same approach is easy to extend to the pullback of a 1-form.)