Вычислить ограничивающий квадрат сферы с помощью вершинного шейдера - PullRequest
8 голосов
/ 28 апреля 2010

Я пытаюсь реализовать алгоритм из графической бумаги, и часть алгоритма рендерит сферы известного радиуса в буфер. Они говорят, что визуализируют сферы, вычисляя местоположение и размер в вершинном шейдере, а затем выполняя соответствующее затенение в фрагментном шейдере.

Есть предположения о том, как они на самом деле это сделали? Положение и радиус известны в мировых координатах, а проекция - в перспективе. Значит ли это, что сфера будет проецироваться как круг?

Ответы [ 3 ]

3 голосов
/ 28 апреля 2010

Я нашел статью, которая описывает то, что вам нужно - вычисление ограничивающей квадрики. См:

http://web4.cs.ucl.ac.uk/staff/t.weyrich/projects/quadrics/pbg06.pdf

Раздел 3.2, Расчет ограничительной рамки. В документе также упоминается, что это делается на вершинном шейдере, так что это может быть тем, что вам нужно.

Некоторые личные мысли:

Вы можете аппроксимировать ограничивающую рамку, хотя аппроксимируете размер сферы по ее радиусу. Преобразуйте это в пространство экрана, и вы получите немного больше, чем правильная ограничивающая рамка, но это будет не так уж далеко. Это терпит неудачу, когда камера находится слишком близко к точке, или когда сфера слишком велика, конечно. Но в противном случае расчет должен быть достаточно оптимальным, поскольку это будет просто соотношение между двумя одинаковыми прямоугольными треугольниками.

Если вы сможете определить длину аккорда, то соотношение даст точный ответ, но сейчас это немного не так.

альтернативный текст http://xavierho.com/temp/Sphere-Screen-Space.png

Конечно, это всего лишь приблизительное приближение, иногда с ошибкой большой , но это может привести к быстрому и легкому развитию событий.

В противном случае см. Связанную бумагу выше и используйте правильный путь. =] * * Тысяча двадцать-семь

1 голос
/ 24 августа 2012

Сфера будет проецироваться как эллипс, если только она не находится в центре камеры, как говорит брейнджем.

Статья, на которую ссылается Ксавье Хо, описывает обобщение проекции сферы (то есть квадратичной проекции). Это очень хорошее чтение, и я тоже его рекомендую. Однако, если вас интересует только проекция сферы и, точнее, четырехугольник, ограничивающий проекцию, тогда Механика надежных теней трафарета, стр. 6: Оптимизация с помощью ножниц подробно описывает, как это сделать.

Замечание о приближении Ксавье Хо

Я хотел бы добавить, что приближение, которое предлагает Ксавье Хо, является, как он отмечает, также очень приблизительным. Я фактически использовал это для рендерера на основе тайлов, чтобы приблизить световые границы в пространстве экрана. На следующем изображении показано, как оно обеспечивает хорошую производительность благодаря 400 омни (сферически связанным) источникам света в сцене: Рендеринг на основе плиток - Дальний вид . Однако, точно так же, как Ксавье Хо предсказал, что неточность световых границ вызывает артефакты вблизи, как показано здесь, при увеличении: Рендеринг на основе плитки - Близкое представление . Перекрывающиеся четырехугольники не могут полностью ограничить источники света и вместо этого обрезать края, открывая сетку плиток.

0 голосов
/ 28 апреля 2010

В общем, сфера рассматривается как эллипс в перспективе. альтернативный текст http://psychology.jrank.org/article_images/psychology.jrank.org/perspective.7.jpg

Это изображение внизу этой статьи .

Раздел 6 этой статьи описывает, как получается ограничивающая трапеция проекции сферы. Прежде чем компьютеры, художники и рисовальщики должны понять это вручную.

...