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

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

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


person Community    schedule 13.10.2008    source источник


Ответы (1)


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

MaxTextureRepeat — это возможность аппаратного сэмплирования текстуры.

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

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

person NeARAZ    schedule 15.10.2008