ps_3_0

Программируемый пиксельный шейдер состоит из набора инструкций, которые работают с пиксельными данными. Регистрирует передачу данных в ALU и из него. Для изменения инструкции, результатов или записанных данных можно применить дополнительный контроль.

Новые возможности

Добавление регистра лиц. Добавьте регистр позиции. Цветовые регистры (v#) теперь являются полностью плавающей запятой, и регистры координат текстуры (t#) были консолидированы. Входные объявления принимают имена использования, и для компонентов заданного регистра разрешено несколько вариантов использования.

Управление динамическим потоком

Устройство поддерживает динамическое управление потоком (если bool — ps, break — ps и break_comp — ps). Глубина вложенности составляет от 0 до 24.

Количество временных регистров

Количество поддерживаемых временных регистров — 32.

Глубина вложенного элемента управления статическим потоком

Call - ps/callnz /call_pred может быть вложен на максимальную глубину 4. Независимо от того, инструкции loop - ps/rep - ps могут быть вложены на максимальную глубину 4.

Произвольный swizzle

Поддерживается произвольный swizzle. См. статью Source Register Swizzling.

Инструкции по градиенту

Поддерживаются инструкции по градиенту. См . dsx — ps, dsy — ps и texldd — ps.

Предикация

Поддерживается предикация инструкций. См. раздел Регистрация предиката.

Зависимое ограничение чтения

Зависимые ограничения на чтение отсутствуют.

Ограничение инструкций текстуры

Инструкции по текстурам не ограничены.

Число инструкций

Каждый пиксельный шейдер допускается в любом месте от 512 до количества слотов в MaxPixelShader30InstructionSlots (не более 32768). Число выполнений инструкций может быть гораздо больше из-за поддержки циклов. Значение MaxPShaderInstructionsExecuted должно быть не менее 2^16.

Число выборок

Доступное количество выборок текстур — 16.

Ограничения для устройств

Если поддерживается ps_3_0, в оборудовании поддерживаются следующие ограничения (как минимум):

Колпачок Значение
MaxTextureWidth, MaxTextureHeight По 4 КБ
MaxTextureRepeat 8 КБ
MaxAnisotropy 16
PixelShaderVersion 3_0
MaxPixelShader30InstructionSlots 512
Устанавливаются следующие примитивные ограничения: D3DPMISCCAPS_BLENDOP, D3DPMISCCAPS_CLIPPLANESCALEDPOINTS, D3DPMISCCAPS_CLIPTLVERTS, D3DPMISCCAPS_CULLCCW, D3DPMISCCAPS_CULLCW, D3DPMISCCAPS_CULLNONE, D3DPMISCCAPS_FOGINFVF, D3DPMISCCAPS_MASKZ
Устанавливаются следующие растровые крышки: D3DPRASTERCAPS_MIPMAPLODBIAS, D3DPRASTERCAPS_ANISOTROPY, D3DPRASTERCAPS_COLORPERSPECTIVE, D3DPRASTERCAPS_SCISSORTEST в D3DCAPS9
Полная поддержка смещения глубины, включая: D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS, D3DPRASTERCAPS_DEPTHBIAS
Полный набор сравнений для проверки глубины и альфа-теста, включая: Все файлы D3DPCMPCAPS в D3DCAPS9.
Режимы наложения источника В качестве источника поддерживаются все режимы смешивания (за исключением D3DPBLENDCAPS_SRCALPHASAT, D3DPBLENDCAPS_BOTHSRCALPHA и D3DPBLENDCAPS_BOTHINVSRCALPHA).
Поддерживаются следующие ограничения текстуры: D3DPTEXTURECAPS_CUBEMAP, D3DPTEXTURECAPS_MIPCUBEMAP, D3DPTEXTURECAPS_MIPMAP, D3DPTEXTURECAPS_MIPVOLUMEMAP, D3DPTEXTURECAPS_PERSPECTIVE, D3DPTEXTURECAPS_PROJECTED, D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE, D3DPTEXTURECAPS_VOLUMEMAP
Ниже приведены ограничения фильтра текстуры, крышки фильтра текстуры тома и ограничения фильтров текстур куба. D3DPTFILTERCAPS_MINFPOINT, D3DPTFILTERCAPS_MINFLINEAR, D3DPTFILTERCAPS_MINFANISOTROPIC (это не требуется для VolumeTextureFilterCaps и CubeTextureFilterCaps ), D3DPTFILTERCAPS_MIPFPOINT, D3DPTFILTERCAPS_MIPFLINEAR, D3DPTFILTERCAPS_MAGFPOINT, D3DPTFILTERCAPS_MAGFLINEAR
На этапах вершины и пикселя поддерживаются следующие режимы адреса текстуры: D3DPTADDRESSCAPS_WRAP, D3DPTADDRESSCAPS_MIRROR, D3DPTADDRESSCAPS_CLAMP, D3DPTADDRESSCAPS_BORDER, D3DPTADDRESSCAPS_INDEPENDENTUV D3DPTADDRESSCAPS_MIRRORONCE
Поддерживаются все крышки шейдера пикселей. DynamicFlowControlDepth = 24, NumTemps = 32, StaticFlowControlDepth = 4, NumInstructionSlots = 512. Поддерживаются следующие функции: предикация, произвольные повороты и инструкции градиента. Нет ограничений на зависимое чтение и не ограничено сочетанием инструкций текстуры и математических инструкций.
Поддерживаются все операции набора элементов. Сюда входят два боковых трафарета. См . раздел D3DSTENCILOP.
Размер точки поддержки устройств на вершину D3DFVFCAPS_PSIZE в D3DCAPS9
Поддержка двух текстур не в мощности. Полная поддержка или условная поддержка, не поддерживающая pow-2; Устройство не должно иметь только ограничения квадратной текстуры, как в D3DPTEXTURECAPS_SQUAREONLY.
Если устройство поддерживает несколько целевых элементов подготовки к просмотру, поддерживаются следующие ограничения: D3DPMISCCAPS_INDEPENDENTWRITEMASKS, D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING
Если vs_3_0 поддерживается MaxUserClipPlanes в D3DCAPS9 — 6

 

Шейдеры пикселей