Функция EvaluateAttributeSnapped
Вычисляется в пиксельном центроиде со смещением.
Синтаксис
numeric EvaluateAttributeSnapped(
in attrib numeric value,
in
int2 offset
);
Параметры
-
value [in]
-
Тип: attrib numeric
Входное значение.
-
offset [in]
-
Тип: int2
Двухмерное смещение от центра пикселей с помощью сетки 16x16.
Комментарии
Диапазон для параметра offset должен быть определен в следующем коде байтов.
Используются только наименее значимые 4 бита первых двух компонентов (U, V) смещения пикселей. Преобразование из 4-разрядной фиксированной точки в float выглядит следующим образом (MSB... LSB), где MSB является частью дроби и определяет знак:
- 1000 = -0,5f (-8 / 16)
- 1001 = -0,4375f (-7 / 16)
- 1010 = -0,375f (-6 / 16)
- 1011 = -0,3125f (-5 / 16)
- 1100 = -0,25f (-4 / 16)
- 1101 = -0,1875f (-3 / 16)
- 1110 = -0,125f (-2 / 16)
- 1111 = -0,0625f (-1 / 16)
- 0000 = 0,0f ( 0 / 16)
- 0001 = 0,0625f ( 1 / 16)
- 0010 = 0,125f ( 2 / 16)
- 0011 = 0,1875f ( 3 / 16)
- 0100 = 0,25f ( 4 / 16)
- 0101 = 0,3125f ( 5 / 16)
- 0110 = 0,375f ( 6 / 16)
- 0111 = 0,4375f ( 7 / 16)
Примечание
Левый и верхний края пикселя включаются в смещение; однако нижний и правый края не включены. Все остальные биты в 32-разрядном целочисленном значении смещения вы и V игнорируются.
Реализация может принять смещение, предоставленное шейдером, и получить полное 32-разрядное значение фиксированной точки (28,4), которое охватывает допустимый диапазон, выполнив следующее вычисление:
iU = (iU<<28)>>28 // keep lowest 4 bits and sign extend, which yields [-8..7]
Если реализация должна сопоставить смещение со смещением с плавающей запятой, она выполняет следующее вычисление:
fU = ((float)iU)/16
Минимальная модель шейдера
Эта функция поддерживается в следующих моделях шейдеров.
Модель шейдера | Поддерживается |
---|---|
Модели шейдеров 5 и более поздних версий | да |
Эта функция поддерживается в следующих типах шейдеров:
Вершина | Корпуса | Домен | Geometry | Пиксель | Вычисления |
---|---|---|---|---|---|
x |
См. также раздел