Когда я рисую текстуру в пиксельном шейдере, блоку текстуры нужно выбрать mipmap на основе градиента текстуры вокруг затененного пикселя.HLSL tex2D() - откуда берется градиент?
Там есть функция tex2Dgrad()
, которая позволяет мне поставить информацию о градиенте вручную и tex2Dlod()
, который позволяет мне выбрать MIPMAP вручную, но если я просто позвонить tex2D()
тогда где же дополнительная информация градиента взялась?
tex2D()
является наиболее распространенным случаем для отображения текстур, используемого в большинстве шейдеров, но я понятия не имею, откуда градиент. Очевидно, что Mipmapping работает, поэтому он должен откуда-то исходить.
Я хочу использовать текстуру в виде таблицы перекодировки в пиксельном шейдере с использованием вычисленных U
и V
координаты, но я не хочу любые неожиданные «магия» происходит в tex2D()
.
Нужно ли использовать tex2Dlod()
, чтобы избежать этого? Я читал, что tex2Dlod()
медленнее, чем tex2D()
.
Он исходит из «магии», аналогичной «ddx» и «ddy», применяемой к компоненту глубины – harold
Гарольд ... В отличие от глубины, он не может быть основан на каких-либо входах с этапа вершины. Я могу вычислить произвольную координату текстуры (u, v) в пиксельном шейдере, и mipmapping все еще работает. – Jinstarr
Координата u, v не влияет на уровень mip, хотя – harold