Размытие кубической карты - PullRequest
5 голосов
/ 04 декабря 2010

Есть идеи как это сделать?Теперь у меня есть динамически генерируемая кубическая карта, которую я использую в качестве текстуры отражения на торе.

Размытие каждой стороны отдельно не сработает, верно?Из-за пикселей рядом с границей, которые не получат влияния размытия от соседей.

Может быть, я должен создать еще одно FBO, связать его, "развернуть" кубическую карту на экране, применить базовый шейдер размытия и затем отделитьразмытая текстура на 6 сторон?Не уверен, как сделать «отдельную» часть.

1 Ответ

5 голосов
/ 04 декабря 2010

Размытие кубической карты? Это довольно сложно.

Чтобы сделать математически правильное размытие по Гауссу, вам необходимо преобразовать его в частотную область (сферические гармоники), применить там фильтр нижних частот, а затем выполнить обратное преобразование. Это не простая задача.

Если приближения достаточно, сделайте следующее.

  1. Создать пустую конечную кубическую карту.
  2. Для каждой грани F вашего куба визуализируйте грань F и соседние пиксели от других четырех граней следующим образом:

     ___________
    |\         /|
    | \       / |
    |  \-----/  |
    |  |     |  |
    |  |  F  |  |
    |  |     |  |
    |  /-----\  |
    | /       \ |
    |/_________\|
    

    Количество соседних пикселей зависит от радиуса размытия.

  3. Примените свой любимый алгоритм размытия.
  4. Скопируйте F в кубическую карту назначения.
  5. Повторите 2-4 для каждого лица.
...