В какой момент вступают в силу ограничения MaxTextureRepeat?

StackOverflow https://stackoverflow.com/questions/196554

Вопрос

При выполнении пиксельного шейдера в Direct3D ограничения на координаты текстуры, налагаемые MaxTextureRepeat, становятся проблемой только при вызовах функций поиска текстуры, таких как Tex2D (), или они вступают в действие всякий раз, когда к координатам текстуры обращаются в пределах шейдер?

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

Это было полезно?

Решение

Координаты текстуры имеют собственную точность интерполяции. На оборудовании, поддерживающем пиксельные шейдеры 2.0, это по крайней мере 24-битное значение с плавающей запятой (или, возможно, 32-битное, не уверен). Внутренне вычисления в пиксельном шейдере должны составлять не менее 24 бит с плавающей запятой. Большинство современных графических процессоров работают с 32-битной точностью с плавающей запятой.

MaxTextureRepeat - это возможность оборудования для выборки текстур.

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

Однако, когда значение ГРП изменяется от 0 до 1, вы получите большие градиенты, поэтому в этих местах GPU захочет использовать мип-уровень с очень низким разрешением. Это может быть не проблема в зависимости от вашей ситуации, конечно; но это одна из точек потенциальных проблем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top