Если вкратце, то дело вот в чём: Шейдер - это программа, на писанная на языке высокого уровня, для удобства человеков, и чтобы выполнить её на видеокарте - надо перевести её в машинный код, этот процесс и называется компиляцией. Раньше шейдеры были простыми, их было немного, и соответственно процесс компиляции проходил "на лету", фоном, незаметно для пользователя. Со временем графика игр усложнялась, материалы окружения становились более комплексными, на одну поверхность или ассет стало приходиться несколько, а иногда - несколько десятков сложных, длинных программ-шейдеров, и компиляция их на лету при появлении в кадре нового объекта стала приводить к задержкам, пока система ожидала окончания компиляции. Это вызывало статтеры - рывки изображения. Поэтому было решено вынести процесс компиляции почти всех, или хотя бы самых комплексных шейдеров в отдельный процесс перед запуском игры, в результате чего все доли секунд от тысяч шейдеров стали занимать значительное время, которое ты и видишь, ожидая пока полосочка компиляции доползёт до конца.
Меня больше интересует - почему лет пять назад игры не сообщали о компиляциях шейдеров (а они все же были), а сейчас стали? Возможно, проблема кроется в визуальных редакторах шейдеров, которые добавляют слишком много данных в программы, из-за чего компиляция происходит дольше. А раньше руками код писали.
Если вкратце, то дело вот в чём:
Шейдер - это программа, на писанная на языке высокого уровня, для удобства человеков, и чтобы выполнить её на видеокарте - надо перевести её в машинный код, этот процесс и называется компиляцией.
Раньше шейдеры были простыми, их было немного, и соответственно процесс компиляции проходил "на лету", фоном, незаметно для пользователя. Со временем графика игр усложнялась, материалы окружения становились более комплексными, на одну поверхность или ассет стало приходиться несколько, а иногда - несколько десятков сложных, длинных программ-шейдеров, и компиляция их на лету при появлении в кадре нового объекта стала приводить к задержкам, пока система ожидала окончания компиляции. Это вызывало статтеры - рывки изображения. Поэтому было решено вынести процесс компиляции почти всех, или хотя бы самых комплексных шейдеров в отдельный процесс перед запуском игры, в результате чего все доли секунд от тысяч шейдеров стали занимать значительное время, которое ты и видишь, ожидая пока полосочка компиляции доползёт до конца.
Хорошо написал. Украду текст?
ШЕЙДЕРЗлодей из черепашек-ниндзя
произошло зло 1%
Проблема в DirectX 12 и криворуких разрабах.
Именно так. Почему-то форза без проблем компилируется на запуске за 1-2 минуты
Меня больше интересует - почему лет пять назад игры не сообщали о компиляциях шейдеров (а они все же были), а сейчас стали?
Возможно, проблема кроется в визуальных редакторах шейдеров, которые добавляют слишком много данных в программы, из-за чего компиляция происходит дольше. А раньше руками код писали.