Я думаю, что у меня возникают проблемы с точностью в пиксельном шейдере при чтении текскодов, которые были интерполированы из вершинного шейдера.Vertex to Pixel Shader Точные ошибки интерполяции TEXCOORD
Моя сцена состоит из очень больших треугольников (краев длиной до 5000 единиц, а текс-коконов от 0 до 5000 единиц, так что текстура выложена около 5000 раз), и у меня есть камера, которая выглядит очень закройте один из этих треугольников (камера может быть настолько близка, что ее видовое окно охватывает только пару метров больших треугольников). Когда я панорамирую камеру по плоскости треугольника, текстура отстает и нервна. Моя мысль заключается в том, что я испытываю недостаток точности на интерполированных texcoords.
Есть ли способ повысить точность интерполяции texcoords?
Моим первым было то, что texcoord u хранится с двойной точностью в xy-компонентах и texcoord v в zw-компонентах. Но я думаю, что это не сработает, поскольку интерполяция шейдеров предполагает наличие 4 отдельных 8-битных компонентов, а не 2 16-битных компонентов?
Если на стороне шейдера нет решения, я полагаю, что мне нужно будет только привязать треугольники к более мелким кускам? Я бы не хотел делать это только для этой проблемы. Любые идеи?
РЕДАКТИРОВАТЬ: Проблема также видна при печати texcoords в виде цветов на экране без каких-либо фактических отборов текстуры вообще.
Вы подтвердили, что точность тегов с плавающей запятой на самом деле является проблемой? Я не уверен, что это так, но позвольте мне догадаться: при выборке текстуры координаты текстуры преобразуются в _fixed point_, как правило, с 8 бит дробной точности. Это означает, что существует только 256 _discrete_, эквидистантных местоположений между двумя текселями, где вы можете пробовать. Или, другими словами: вы получите артефакты бандажей, если увеличите текстуру более чем на 256 раз. – derhass
У меня была аналогичная проблема несколько дней назад. Я остановил полосу, сделав текстуру больше (но да, это очень глупое решение). Любые советы о том, как избежать проблемы @derhass? – Jerem
Проблема не в выборке текстур. Я попытался просто выводить координаты uv в возвращаемый пиксельный шейдер COLOR без какой-либо выборки текстур и все еще получал такую же проблему. –