Модификаторы для 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
Связанные темы