Что вычисляют разные стадии

Vertex shader обычно преобразует вершины и подготавливает данные для дальнейшего прохода. Fragment или pixel shader работает с покрытием примитива и выдаёт значения, используемые при формировании изображения. Compute shader выполняет параллельные вычисления без обязательного рисования геометрии. В ray-tracing pipeline существуют специальные стадии, связанные с генерацией лучей и обработкой попаданий.

Поэтому фраза «сложный шейдер» требует уточнения. Тяжёлая деформация геометрии и дорогая обработка каждого экранного фрагмента нагружают разные части кадра. У прозрачного материала дополнительно может многократно пересчитываться один участок экрана из-за наложенных слоёв.

Интерфейс / граф узловМатериал в Shader EditorНастоящий Shader Editor с базовой связкой Principled BSDF → Material Output. Через соединения узлов параметры материала превращаются в шейдер поверхности.Blender Documentation Team · CC BY-SA 4.0 · Blender Manual 3.5
Версия и обработка изображения

Blender Manual 3.5 — архив документации от 23.02.2023; точная версия интерфейса отдельных кадров не указана. Преобразование в WebP без потерь; исходные размеры сохранены; без кадрирования, дорисовки и удаления подписей. Все авторы и источники.

Исходник, промежуточный код и машина

HLSL, GLSL и WGSL — языки с собственными правилами и целевыми средами. Исходный текст проходит компиляцию и превращается в представление, которое принимает графический стек; затем реализация готовит исполнение для устройства. Например, документация Microsoft различает FXC для прежних shader models и DXC для Shader Model 6.

Простая замена расширения файла не переносит программу между API. Меняются способы привязки ресурсов, соглашения о координатах и доступные операции. Даже при использовании транслятора результат нужно проверять на целевой платформе. Для художника практический вывод: переносимость текстур гораздо шире переносимости произвольного процедурного материала.

Почему один материал компилируется много раз

Движок может создавать отдельные варианты для прозрачности, теней, разных источников света, skinning и поддерживаемых платформ. Комбинации быстро умножаются. Это не означает, что каждый вариант одновременно исполняется: часть готовится заранее для потенциального применения в сцене.

Практическая рекомендация: не вводите отдельную ветвь или статический переключатель без задачи. Если два материала отличаются лишь числом roughness, общий код с разными параметрами часто удобнее множества самостоятельных вариантов. Но объединение всего в один универсальный материал тоже может увеличить сложность исполнения; решение проверяется профилированием.

Интерфейс / граф узловBump только на диффузном слоеВ этом графе Bump меняет нормаль только Diffuse BSDF. Глянцевый слой остаётся гладким, а Fresnel управляет смешиванием. Соединения показывают, почему один и тот же рельеф можно применить к отдельному слою.Blender Documentation Team · CC BY-SA 4.0 · Blender Manual 3.5
Версия и обработка изображения

Blender Manual 3.5 — архив документации от 23.02.2023; точная версия интерфейса отдельных кадров не указана. Преобразование в WebP без потерь; исходные размеры сохранены; без кадрирования, дорисовки и удаления подписей. Все авторы и источники.

Логика процессаОригинальная схема преобразования материала. Она не показывает UI конкретной программы.

Как искать дорогую часть материала

Для первого теста замените материал простым, сохранив геометрию, камеру и разрешение. Затем возвращайте операции группами: текстуры, нормали, прозрачность и дополнительные слои. Такой эксперимент показывает, связан ли рост времени с shading. Если ускорения нет, узкое место может находиться в геометрии, тенях, памяти или подготовке команд.

Число узлов в редакторе не является надёжной единицей стоимости. Компилятор может удалить неиспользуемое вычисление или объединить выражения; небольшая группа узлов способна обращаться к крупным текстурам и вызывать дорогие операции. Оценивайте результат компиляции и измеренное время, а не визуальную сложность графа.

Почему одинаковые названия не дают одинаковый вид

Параметры base color, roughness и normal имеют смысл внутри конкретной модели и её соглашений. Различаться могут BRDF, преобразование roughness, нормали, энергетическая компенсация и обработка цвета. Название узла не гарантирует математической эквивалентности между приложениями.

Для переноса материала подготовьте небольшой набор эталонов: сфера, плоскость, объект с острыми рёбрами и несколько ракурсов света. Сначала согласуйте цветовое преобразование и геометрию, затем сравнивайте отражения. Это редакционная практическая методика, а не утверждение о полном совпадении любых двух рендереров.

Практический пример проверки материала: сначала выведите его base color без освещения, затем визуализируйте нормаль и только после этого включайте полный lighting. Если дефект уже присутствует в промежуточном представлении, изменение количества световых выборок не исправит исходные данные. Такой пошаговый вывод помогает разделить ошибки текстурных координат, декодирования входов и самой модели отражения, сохраняя проверку понятной художнику и разработчику.

Интерфейс / граф узловГраф настоящего displacementNoise Texture подключена к высоте Displacement, а его выход — к одноимённому входу Material Output. Это отдельная ветвь графа, которая задаёт смещение поверхности.Blender Documentation Team · CC BY-SA 4.0 · Blender Manual 3.5
Версия и обработка изображения

Blender Manual 3.5 — архив документации от 23.02.2023; точная версия интерфейса отдельных кадров не указана. Преобразование в WebP без потерь; исходные размеры сохранены; без кадрирования, дорисовки и удаления подписей. Все авторы и источники.