Как стать автором
Обновить

Комментарии 8

Спасибо за п.4 Попробую.

По п.6 смущает что нормаль умножается попиксельно. Нельзя ли в пиксельный шейдер передавать уже помноженную нормаль?

До растерезации не известно, на какую сторону треугольника смотрим.
Не поясните почему? Вроде бы направление взгляда камеры известно, нормали вершин тоже. Если скалярное произведение этих векторов положительно, нормаль треугольника надо перевернуть. Ну или из матрицы можно эту информацию вытащить.
Чаще всего нормаль, записанная в вертексы треугольника, не будет перпендикулярна плоскости треугольника (из-за софт эджей, настроенных художником). SV_IsFrontFace же не зависит от нормали и оперирует порядком объявления вершин и работает для всего треугольника.
А откуда этот флаг берется и на основе чего? Он же постоянен для всего треугольника, или нет?
Из MSDN:
Floating-point scalar that indicates a back-facing primitive. A negative value faces backwards, while a positive value faces the camera.
Он рассчитывается аппаратно для всего треугольника.
Геометрические шейдеры вроде как признаны устаревшими и не рекомендуются к использованию даже самими производителями видеокарт.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории