Что вычисляют разные стадии
Vertex shader обычно преобразует вершины и подготавливает данные для дальнейшего прохода. Fragment или pixel shader работает с покрытием примитива и выдаёт значения, используемые при формировании изображения. Compute shader выполняет параллельные вычисления без обязательного рисования геометрии. В ray-tracing pipeline существуют специальные стадии, связанные с генерацией лучей и обработкой попаданий.
Поэтому фраза «сложный шейдер» требует уточнения. Тяжёлая деформация геометрии и дорогая обработка каждого экранного фрагмента нагружают разные части кадра. У прозрачного материала дополнительно может многократно пересчитываться один участок экрана из-за наложенных слоёв.
Версия и обработка изображения
Blender Manual 3.5 — архив документации от 23.02.2023; точная версия интерфейса отдельных кадров не указана. Преобразование в WebP без потерь; исходные размеры сохранены; без кадрирования, дорисовки и удаления подписей. Все авторы и источники.
Исходник, промежуточный код и машина
HLSL, GLSL и WGSL — языки с собственными правилами и целевыми средами. Исходный текст проходит компиляцию и превращается в представление, которое принимает графический стек; затем реализация готовит исполнение для устройства. Например, документация Microsoft различает FXC для прежних shader models и DXC для Shader Model 6.
Простая замена расширения файла не переносит программу между API. Меняются способы привязки ресурсов, соглашения о координатах и доступные операции. Даже при использовании транслятора результат нужно проверять на целевой платформе. Для художника практический вывод: переносимость текстур гораздо шире переносимости произвольного процедурного материала.
Почему один материал компилируется много раз
Движок может создавать отдельные варианты для прозрачности, теней, разных источников света, skinning и поддерживаемых платформ. Комбинации быстро умножаются. Это не означает, что каждый вариант одновременно исполняется: часть готовится заранее для потенциального применения в сцене.
Практическая рекомендация: не вводите отдельную ветвь или статический переключатель без задачи. Если два материала отличаются лишь числом roughness, общий код с разными параметрами часто удобнее множества самостоятельных вариантов. Но объединение всего в один универсальный материал тоже может увеличить сложность исполнения; решение проверяется профилированием.
Версия и обработка изображения
Blender Manual 3.5 — архив документации от 23.02.2023; точная версия интерфейса отдельных кадров не указана. Преобразование в WebP без потерь; исходные размеры сохранены; без кадрирования, дорисовки и удаления подписей. Все авторы и источники.
Как искать дорогую часть материала
Для первого теста замените материал простым, сохранив геометрию, камеру и разрешение. Затем возвращайте операции группами: текстуры, нормали, прозрачность и дополнительные слои. Такой эксперимент показывает, связан ли рост времени с shading. Если ускорения нет, узкое место может находиться в геометрии, тенях, памяти или подготовке команд.
Число узлов в редакторе не является надёжной единицей стоимости. Компилятор может удалить неиспользуемое вычисление или объединить выражения; небольшая группа узлов способна обращаться к крупным текстурам и вызывать дорогие операции. Оценивайте результат компиляции и измеренное время, а не визуальную сложность графа.
Почему одинаковые названия не дают одинаковый вид
Параметры base color, roughness и normal имеют смысл внутри конкретной модели и её соглашений. Различаться могут BRDF, преобразование roughness, нормали, энергетическая компенсация и обработка цвета. Название узла не гарантирует математической эквивалентности между приложениями.
Для переноса материала подготовьте небольшой набор эталонов: сфера, плоскость, объект с острыми рёбрами и несколько ракурсов света. Сначала согласуйте цветовое преобразование и геометрию, затем сравнивайте отражения. Это редакционная практическая методика, а не утверждение о полном совпадении любых двух рендереров.
Практический пример проверки материала: сначала выведите его base color без освещения, затем визуализируйте нормаль и только после этого включайте полный lighting. Если дефект уже присутствует в промежуточном представлении, изменение количества световых выборок не исправит исходные данные. Такой пошаговый вывод помогает разделить ошибки текстурных координат, декодирования входов и самой модели отражения, сохраняя проверку понятной художнику и разработчику.
Версия и обработка изображения
Blender Manual 3.5 — архив документации от 23.02.2023; точная версия интерфейса отдельных кадров не указана. Преобразование в WebP без потерь; исходные размеры сохранены; без кадрирования, дорисовки и удаления подписей. Все авторы и источники.