Унифицированная шейдерная модель (англ. Unified shader model) — термин, который используется для описания двух подобных, но вместе с тем и отдельных понятий: унифицированная шейдерная архитектура (англ. Unified Shading Architecture), которая описывает аппаратный уровень, и унифицированная шейдерная модель, которая описывает программный уровень.
Унифицированная шейдерная модель
правитьУнифицированная шейдерная модель, известная в Direct3D 10 как Shader Model 4.0, использует согласованный (схожий) набор команд для всех типов шейдеров[1]. Шейдеры всех типов имеют очень похожие возможности — они могут «читать» текстуры, буфера данных и выполнять тот же самый набор арифметических инструкций.
Однако, набор команд не полностью одинаков во всех типах шейдеров; например, только пиксельный шейдер может читать текстуры с неявными координатными градиентами; и только геометрический шейдер может производить рендеринг дополнительных примитивов, и так далее[1].
Ранние шейдерные модели (Shader Model 1.x) использовали очень разные наборы команд для вершинных и пиксельных шейдеров, где вершинные шейдеры имели намного более гибкий набор команд. Более поздние шейдерные модели (2.x и 3.0) всё более сокращали различия, что и привело к унифицированной шейдерной модели.
Унифицированная шейдерная архитектура
правитьКогда графический процессор поддерживает унифицированную шейдерную модель, то имеет смысл проектировать его вычислительные блоки так, чтобы любой из этих блоков мог выполнить любой тип шейдера. Когда вычислительные блоки графического процессора «унифицированы», то есть способны выполнять любой тип шейдерной программы, то это и называется «Унифицированная шейдерная архитектура». Чаще всего такие графические процессоры составлены из массива вычислительных блоков и блоков динамического планирования/баланса загрузки, для распределения выполнения шейдерных программ между всеми вычислительными блоками.
Аппаратное обеспечение не обязано иметь унифицированную шейдерную архитектуру для поддержки унифицированной шейдерной модели, и наоборот. Графические процессоры с поддержкой Direct3D 10 всё ещё могут иметь выделенные геометрические, вершинные и пиксельные процессоры. Технологически более ранние графические процессоры с поддержкой Shader Model 3.0 также могут частично выполнять унифицированную шейдерную модель, что видно на примере графического процессора Xenos для игровой консоли Xbox 360.
Унифицированная шейдерная архитектура позволяет более гибко использовать ресурсы графического процессора[2]. Например, в условиях с симуляцией тяжелой геометрии уровня унифицированная шейдерная архитектура может задействовать все блоки графического процессора для вычисления вершинных и геометрических шейдеров. И наоборот; когда геометрия не является сложной, а симулируется множество сложных пиксельных эффектов, таких как Parallax occlusion mapping, система частиц и так далее, все вычислительные блоки могут быть направлены на выполнение пиксельных шейдеров.
Унифицированную шейдерную архитектуру поддерживают графические процессоры GeForce 8, Radeon R600, S3 Graphics Chrome 400[англ.], Intel GMA X3000, Xbox 360's GPU, Qualcomm Adreno 200 series, Mali Midgard, PowerVR SGX GPUs и последующие серии.
Примечания
править- ↑ 1 2 Common Shader Core (DirectX HLSL) . Microsoft. Дата обращения: 17 августа 2008. Архивировано 4 апреля 2012 года.
- ↑ Loyd Case. GeForce 8800 GTX: 3D Architecture Overview . ExtremeTech (8 ноября 2006). Архивировано 11 ноября 2006 года.