[#] Краткий курс компьютерной графики: задание карт нормалей в касательном пространстве
habrabot(difrex,1) — All
2016-03-14 00:00:02


Дошли руки написать очередное дополнение к [моему краткому курсу компьютерной графики.][1] Итак, тема для очередного разговора — использование [карт нормалей][2]. В чём основное отличие использования карт нормалей от затенения Фонга? Основная разница в плотности задания информации. Для затенения Фонга мы использовали нормальные вектора, заданные к каждой вершине нашей полигональной сетки, интерполируя нормали внутри треугольников. Использование же карт нормалей позволяет задавать нормали для каждой точки нашей поверхности, а не лишь изредка, что просто драматическим образом влияет на детализацию изображений. В принципе, в [лекции про шейдеры][3] мы уже использовали карту нормалей, но только заданную в глобальной системе координат. Сейчас же разговор пойдёт про [касательное пространство][4]. Итак, вот две текстуры, левая задана в глобальном пространстве (RGB напрямую превращается в вектор XYZ), а правая — в касательном. ![][5] [Читать дальше →][6]

[1]: https://habrahabr.ru/post/249139/
[2]: https://en.wikipedia.org/wiki/Normal_mapping
[3]: https://github.com/ssloy/tinyrenderer/wiki/Lesson-6:-Shaders-for-the-software-renderer
[4]: https://en.wikipedia.org/wiki/Frenet%E2%80%93Serret_formulas
[5]: https://raw.githubusercontent.com/ssloy/tinyrenderer/gh-pages/img/06b-tangent-space/nm_textures.jpg
[6]: https://habrahabr.ru/post/279143/#habracut