Уніфікована шейдерна модель

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Уніфікована шейдерна модель (англ. 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, система часток і т. д., всі обчислювальні блоки можуть бути спрямовані на виконання піксельних шейдерів.

Уніфіковану шейдерну архітектуру підтримують графічні процесори починаючи з таких серій:

Примітки[ред. | ред. код]

  1. а б Common Shader Core (DirectX HLSL). Microsoft. Архів оригіналу за 4 квітня 2012. Процитовано 17 серпня 2008.
  2. GeForce 8800 GTX: 3D Architecture Overview. ExtremeTech. Архів оригіналу за 11 листопада 2006. Процитовано 17 серпня 2008. {{cite web}}: Cite має пустий невідомий параметр: |5= (довідка)