Поделиться через


Модификаторы для ps_2_0 и выше

Модификаторы инструкций влияют на результат инструкции перед записью в регистр назначения.

В этом разделе содержатся справочные сведения о модификаторах инструкций, реализованных пиксельным шейдером версии 2_0 и более поздних версий.

Имя Синтаксис 2_0 2_x 2_sw 3_0 3_sw
Центроид _Центроид x x x x x
Partial_Precision _Pp x x x x x
Saturate _Сидел x x x x x

 

Центроид

Модификатор центроидов является необязательным модификатором, который зажимает интерполяцию атрибутов в пределах диапазона примитива, когда центр пикселей с несколькими выборками не охватывается примитивом. Это можно увидеть в разделе Выборка центроидов.

Модификатор центроида можно применить к инструкции сборки, как показано ниже:

dcl_texcoord0_centroid v0

Можно также применить модификатор центроида к семантике, как показано ниже:

float4 TexturePointCentroidPS( float4 TexCoord : TEXCOORD0_centroid ) : COLOR0
{
    return tex2D( PointSampler, TexCoord );
}

Кроме того, к любому регистру входного цвета (v#), объявленному с семантикой цвета, автоматически применяется центроид. Градиенты, вычисляемые из атрибутов, которые являются центроидными выборками, не гарантируют точность.

Частичная точность

Модификатор инструкций частичной точности (_pp) указывает области, в которых частичная точность допустима при условии, что базовая реализация поддерживает ее. Реализации всегда могут игнорировать модификатор и выполнять затронутые операции с полной точностью.

Модификатор _pp может возникать в двух контекстах:

  • В объявлении координат текстуры, чтобы разрешить передачу координат текстуры в пиксельный шейдер в форме частичной точности. Это позволяет, например, использовать координаты текстуры для ретрансляции цветовых данных в пиксельный шейдер, что может быть быстрее с частичной точностью, чем с полной точностью в некоторых реализациях. При отсутствии этого модификатора координаты текстуры должны передаваться с полной точностью.
  • Для любой инструкции, включая инструкции по текстуре, загрузите инструкции. Это означает, что реализация может выполнять инструкцию с частичной точностью и сохранять результат частичной точности. При отсутствии явного модификатора инструкция должна выполняться с полной точностью (независимо от точности входных данных).

Примеры:

dcl_texcoord0_pp t1
cmp_pp r0, r1, r2, r3

Изменение насыщенности

Модификатор инструкций (_sat) насыщает (или зажимает) результат инструкции в диапазон [0, 1] перед записью в целевой регистр.

Модификатор инструкций _sat можно использовать с любыми инструкциями, кроме frc - ps, sincos - ps и любых инструкций tex*.

Для ps_2_0, ps_2_x и ps_2_sw модификатор инструкций _sat нельзя использовать с инструкциями, записыващими данные в любые выходные регистры (регистр цвета вывода или регистр глубины вывода). Это ограничение не распространяется на ps_3_0 и выше.

Пример

dp3_sat r0, v0, c1

Инструкции по шейдеру пикселей