Короче говоря, из-за причин производительности они не программируются.
История и Рынок
Раньше для процессоров вершин и фрагментов использовались отдельные ядра, чтобы избежать раздувания FPU. Например, были некоторые математические операции, которые вы могли выполнять только в коде фрагментного шейдера (потому что они в основном относились только к фрагментным шейдерам). Это создаст серьезные аппаратные узкие места для приложений, которые не максимизируют потенциал каждого типа ядра.
Поскольку программируемые шейдеры стали более популярными, появились универсальные модули. Все больше и больше этапов графического конвейера были реализованы аппаратно, чтобы помочь с масштабированием. За это время GPGPU также стал более популярным, поэтому поставщикам пришлось включить некоторые из этих функций. Тем не менее, важно отметить, что большую часть доходов от графических процессоров все еще составляли видеоигры, поэтому это не могло повлиять на производительность.
В конце концов крупный игрок Intel решил инвестировать в программируемые растеризаторы с их архитектурой Larrabee . Этот проект должен был быть новаторским, но производительность была явно ниже желаемой . Он был закрыт, а его части были спасены для процессоров Xeon Phi. Стоит отметить, что другие производители этого не реализовали.
Попытки программных растеризаторов
Были некоторые попытки растеризации с помощью программного обеспечения, но все они, похоже, имеют проблемы с производительностью.
Одна заметная попытка была сделана Nvidia в 2011 году в этой статье . Это было выпущено близко к тому, когда Larrabee был уволен, так что очень возможно, что это был ответ на это. Несмотря на это, в этом есть некоторые показатели производительности, и большинство из них показывают производительность во много раз медленнее, чем аппаратные растеризаторы.
Технические проблемы с растеризацией программного обеспечения
Есть много проблем, с которыми столкнулись в газете Nvidia. Вот некоторые из наиболее важных проблем с программными растеризаторами:
Главные проблемы
Интерполяция:
Аппаратная реализация генерирует уравнения интерполяции в специализированном аппаратном обеспечении. Это медленно для программного рендера, поскольку это должно было быть сделано в фрагментном шейдере.
Сглаживание.
Были также проблемы с производительностью сглаживания (особенно с памятью). Информация о субпиксельных выборках должна храниться в памяти чипа, что недостаточно для ее хранения. Жюльен Герто отметил, что кеш / кеш текстуры может быть медленнее с программным обеспечением. MSAA, безусловно, имеет здесь проблемы, потому что переполняет кеш (кеши без текстур) и уходит в память вне чипа. Растеризаторы сжимают данные, хранящиеся в этой памяти, что также способствует повышению производительности.
Потребление энергии:
Саймон Ф. отметил, что потребление энергии будет ниже. В документе упоминается, что пользовательские ALU находятся в растеризаторах (что уменьшило бы энергопотребление), и это имело бы смысл, поскольку в прошлом блоки обработки фрагментов и вершин имели собственные наборы команд (так что, вероятно, также и пользовательские ALU). Это, безусловно, было бы узким местом во многих системах (например, мобильных), хотя это имеет значение не только для производительности.
Резюме
TL; DR: слишком много недостатков, которые программный рендеринг не может преодолеть, и все это складывается. Есть также много больших ограничений, особенно когда вы имеете дело с пропускной способностью VRAM, проблемами синхронизации и дополнительными вычислениями.