Я переделываю свой рендерер ландшафта, теперь он использует тесселяцию gpu с шейдерами, с подходом в стиле проецируемой сетки: сетка центрируется и располагается вокруг камеры, находя ближайшую точку сетки позади нее, делая ее центром (подход к скайтигеру a немного переделано) Работает хорошо, пока я не выключу «метод репозиции» и не уйду к краю сетки.
Поскольку алгоритм тесселяции находится в стадии тестирования, я использую простое расстояние от тесселяции типа камеры, внешние факторы зависят от расстояния центральных краевых точек от камеры и внутреннего от четырехточечной центральной точки от камеры. Когда я двигаюсь вокруг, я довольно хорошо бегаю, но когда я рядом с краем сетки, в моем случае (0,0,0) я получаю ужасную задержку.
Я использую VBOs, VAO, сэмплер карты высот в тесселяционном шейдере, нет отбраковки борозд (пока), не выбрано тесселяции вне экрана (пока), ширина моей карты составляет 2 ^ n * GRIDSCALE, n и GRIDSCALE зависит от усеченного конуса. Я проверил это с картой 8192 * 8192. Средний кадр / с при разблокированной камере (не по центру) составляет около 60-70, а около P (0,0,0) — 8-15.
Я рендерил всю тестовую сетку без процессора LOD, только с тесселяцией GPU.
Что может вызвать это?
РЕДАКТИРОВАТЬ: Я столкнулся с такой задержкой, когда делал свою первую карту высот, это была простая статическая сетка с треугольными полосами с VBO и индексным массивом. Когда я переместил камеру в центр карты (это не было (0,0,0)) или верхнюю половину по оси ‘z’ в направлении ‘z-‘, и посмотрел вниз по оси ‘z +’ Я получил отставание.
Это медленная точка зрения. Около (0,0,0).
В другом месте все идет гладко.
РЕДАКТИРОВАТЬ: точка не в (0,0,0), Я просто не принял во внимание преобразование вершинного шейдера, Итак Четырехугольный центр местности (0,0,0) и нижний правый угол (+ MAPWIDTH, 0, + MAPWIDTH) (угол на картинке)
На других углах нет никакого отставания.
Задача ещё не решена.
Других решений пока нет …