Хорошо. Так что проблема была не в TEXTURE_MAX_LEVEL в конце концов. Забавно, как простой тест помог понять это.
У меня было 2 теории о том, что LOD выбирают по-разному, и обе из них, похоже, опровергнуты тестом на сплошной цвет.
Тогда к третьей теории. Если я правильно понимаю вашу сцену, у вас есть модель, использующая текстурный атлас, и мы наблюдаем, что некоторые полигоны, которые должны извлекаться из определенного элемента атласа, на самом деле извлекаются из другого. Это верно?
Это может быть объяснено тем фактом, что мультисэмплированный фрагмент обычно выбирается в середине пикселя. Даже когда этот центр не находится внутри треугольника, который создал образец. См. эту страницу для иллюстрации.
Обычный способ обойти это называется выборка центроида (на этой странице также есть хорошие иллюстрации этой проблемы). Это заставляет выборку возвращать точку выборки внутри треугольника.
Теперь плохие новости: я не знаю ни одного способа включить фильтрацию центроидов за пределами программируемого конвейера, и вы не используете его. Как вы думаете, вы хотите переключиться, чтобы получить доступ к этой функции?
Изменить, чтобы добавить:
Кроме того, использование атласов текстур было бы способом обойти это. Причина, по которой это так заметно, заключается в том, что вы начинаете извлекать данные из другой части атласа с помощью шаблона выборки «вне треугольника».