Я считаю, что распространенным решением является разделение преобразования камеры, используемого для проецирования сетки, из преобразования камеры, которое используется для визуализации сетки. На перспективах, близких к нисходящему, две камеры совпадают, но когда камера наблюдения приближается к горизонтальной перспективе, проекционная камера отклоняется и пытается сохранить минимальный угол наклона, то есть она зависает где-то над камерой обзора и смотрит немного вниз.
Сложность заключается в том, что поле зрения проекционной камеры всегда покрывает область сцены, видимую с камеры рендеринга. У меня нет под рукой ресурса, который подробно описывает, как вычислять соответствующие преобразования, и его может быть утомительно выводить вручную.
Другое решение состоит в том, чтобы получить набор инструментов для обработки сигналов: артефакты, видимые на вашем изображении, по сути, являются псевдонимами, вызванными недостаточной выборкой поля высоты волны проектируемой сеткой. Следовательно, одно из решений состоит в том, чтобы соответствующим образом отфильтровать поле высоты в зависимости от проектируемой площади ячейки сетки. Я полагаю, что это используется в автономном рендеринге океанов, и это, по сути, гарантирует, что волны на горизонте станут плоскими. Однако я не уверен, насколько это возможно при рендеринге в реальном времени, поскольку вам потребуется высококачественная анизотропная фильтрация, чтобы этот подход выглядел разумно.