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


lit - vs

Обеспечивает частичную поддержку освещения путем вычисления коэффициентов освещения из двух точечной продукции и экспоненты.

Синтаксис

lit dst, src

 

where

  • dst — это регистр назначения.
  • src — это регистр источника.

Комментарии

Версии вершинного шейдера 1_1 2_0 2_x 2_sw 3_0 3_sw
Освещенной x x x x x x

 

Предполагается, что исходный вектор содержит значения, показанные в следующем псевдокоде.

src.x = N*L        ; The dot product between normal and direction to light
src.y = N*H        ; The dot product between normal and half vector
src.z = ignored    ; This value is ignored
src.w = exponent   ; The value must be between -128.0 and 128.0

В следующем фрагменте кода показаны выполненные операции.

dest.x = 1;
dest.y = 0;
dest.z = 0;
dest.w = 1;

float power = src.w;
const float MAXPOWER = 127.9961f;
if (power < -MAXPOWER)
    power = -MAXPOWER;          // Fits into 8.8 fixed point format
else if (power > MAXPOWER)
    power = MAXPOWER;          // Fits into 8.8 fixed point format

if (src.x > 0)
{
    dest.y = src.x;
    if (src.y > 0)
    {
        // Allowed approximation is EXP(power * LOG(src.y))
        dest.z = (float)(pow(src.y, power));
    }
}

Арифметика с пониженной точностью допустима при оценке целевого компонента y (dest.y). Реализация должна поддерживать по крайней мере восемь дробных битов в аргументе power. Точечная продукция вычисляется с нормализованными векторами, а пределы зажима — от -128 до 128.

Ошибка должна соответствовать значению logp ( vs и exp ) и сочетанию или не более чем приблизительно один значительный бит для 8-разрядного компонента цвета.

Инструкции по вершинным шейдерам