Любой шейдер способен описать большинство свойств поверхности чистой математикой через BxDF функции. Но не всегда поверхность объекта имеет однородный диффузный или зеркальный цвет, не всегда объект может иметь ровную поверхность. В таких ситуациях на помощь приходят растровые текстуры, через которые можно усложнять шейдер, делая его визуально более реалистичным. Согласитесь что локальным цветом или процедурной текстурой не всегда можно получить удовлетворительный результат.
Через растровую текстуру можно задать не только сложный диффузный цвет поверхности, но и «запечь» некоторые её свойства. Использование текстур, в которых «запечены» свойства материала, пришло в массы из игровой индустрии. По сложившейся практике пользователю, предлагается три базовые текстурные карты — Diffuse, Specular\Metalness и Glossy\Roughness, по ситуации, подключают дополнительные технические карты — Opacity, Normal, Height, Ambient occlusion, Cavity, Emissive maps. Классический сет это четыре текстуры: Diffuse, Specular\Metalness и Glossy\Roughness, Normal
Важным недостатком так называемых «PBR текстур»
https://pbr-textures.com является отсутствие гибкости. Так например — карта Glossy\Roughness предлагает мне уже зафиксированные значение шероховатости поверхности. А что если мне нужно сделать больше глянца, как быть? Понятно что мне, как пользователю с опытом, не составляет труда «подкрутить» все эти карты до нужного результата, а как быть менее опытным коллегам? Поэтому мне не особо понятен тот хайп, который был в свое время поднят вокруг PBR текстур.
PBR текстуры для меня, в первую очередь, это решение все же узкоспециальное, для таких направлений как VR, реал-тайм и игровые движки, где нужно максимально упростить и унифицировать шейдерные вычисления, когда текстуры запекаются комплексно для всей модели сразу. В этом контексте — PBR текстуры это простое и универсальное решение, своего рода кроссплатформенный набор «Сделай сам».
3d модель, шейдер которой сделан с соблюдением PBR принципов, будет рендериться, в любой современной рендер системе, без необходимости конвертировать материалы или что либо в них перенастраивать. Особенно если часть свойств шейдера, было зафиксировано (запечено) в текстурах, о которых я говорил выше. Это важное и ценное качество для 3d модели, особенно когда вы продаете её на стоке [Посмотреть стрим о 3D стоках]. Покупатель будет понимать, что купив ваш продукт, он получит универсальное шейдерное решение, которое будет давать одинаковый результат при рендеринге в независимости от используемой рендер системы.
Есть два шейдерных решения так или иначе поддерживаемых в большинстве рендер движков — Specular workflow и Metalness workflow. Эти решения отличаются набором необходимых текстур и соответственно слотами размещения. Итоговая разница не существенна, но заметна в ряде деталей. Забегая вперед сразу скажу, что Metalness workflow более удобен, более экономичен в расходовании видеопамяти (актуально для игровых движков), прост и поэтому стал теперь доминирующим рабочим пространством.