Отрезать части над сеткой - PullRequest
1 голос
/ 19 февраля 2020

Итак, я хочу сделать сцену такой же для этой Сферной сцены

enter image description here

Теперь у меня есть sh с случайное поколение как земля и сфера. Но я не знаю, как отключить геометрию сфер над собой sh. Пробовал использовать Stencil и hightmap. Трафарет рендерит землю впереди, но сфера над землей все еще визуализируется. Использование карты высот, чтобы узнать, нужно ли это визуализировать (я сравнил карту высот и worldPos), проблематично c, потому что текстура накладывается на всю сферу, а не проецируется на нее. Вы можете помочь. Есть ли какая-либо функция шейдера, чтобы отключить все выше меня sh.

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Как я понял, стандартного способа отбраковки без артефактов не существует. Единственный способ сделать это - использовать лучевую визуализацию.

0 голосов
/ 19 февраля 2020

Я делал нечто похожее для демоверсии астероидов несколько лет go. Всякий раз, когда ударил астероид, я использовал карту высот - на самом деле, просто карту шума - чтобы сместить половину вершин в модели астероида, чтобы придать ей вид с разбивкой пополам. Для другой половины я просто продублировал модель астероида и сместил вторую половину, используя ту же карту шума. Эффект заключается в том, что две «половинки» совпали идеально.

Вот что я бы попробовал:

  1. Ваша модель сферы должна быть полной сферой.
  2. Вам понадобится карта высот для местности.
  3. В вершинном шейдере вашей сферы для любой вершины к северу от экватора:
    • Пример карты высот.
    • Установите координату Y вершины на высоту от карты высот. Это эффективно сгладит верхнюю часть сферы, а затем сместит ее на основе вашей карты высот. Вам, вероятно, придется масштабировать значение высоты здесь, чтобы получить что-то рациональное.
    • Преобразуйте новые x, y, z как обычно.

Обратите внимание, что вы не текстурируете сферу. Вы модифицируете геометрию. Это должно происходить в геометрической части конвейера, , а не в фрагментном шейдере.

Еще одна вещь, которую вам нужно рассмотреть, это как добавить обломки - камни и т. Д. c. - так, чтобы оно соответствовало смещению геометрии на сфере. Поскольку у вас есть карта высот, она должна быть простой.

Для начала я бы попросил ваш вершинный шейдер выровнять верхнюю половину сферы. Как только это сработает, добавьте в карту высот.

Чтобы это выглядело убедительно, вам потребуется карта сферы и высоты с довольно высоким разрешением. Чтобы сократить геометрию, вы можете использовать плоскость для рельефа местности и полусферу для нижней части. Просто отбросьте любой фрагмент для плоскости, которая находится не в сферическом объеме, который вас интересует. (Вы также можете использовать круговую «плоскость», а не прямоугольную плоскость angular, но заставить вершины выровняться со сферой и заполнить отверстия на границе может быть сложно.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...