ПрограммированиеФорумГрафика

На каком этапе делается отсечение?

Страницы: 1 2 3 4 Следующая »
#0
11:57, 31 мая 2010

На каком этапе делается отсечение полигонов областью видимости (frustum culling вроде называется)? Я прочитал в книжке что отсечение делается уже после трансформаций и расчёта освещения. Не совсем понятно почему нельзя делать отсечение до расчёта освещения. Из за такой схемы конвеера многие пишут отсечение своё т.к. расчёт цвета это ресурсоёмкая операция.

#1
12:16, 31 мая 2010

Всё верно прочитал.

#2
12:24, 31 мая 2010

Unknown_000
может речь шла о трансформации вершины ?

#3
12:36, 31 мая 2010

frustum отсечение ручками. Наверное имелось ввиду отсечение полигонов областью камеры? И что за книжка если не секрет?

#4
12:36, 31 мая 2010

Кто нибудь может объяснить почему нельзя сначала сделать отсечение, а потом считать свет?

#5
12:44, 31 мая 2010

http://www.steps3d.narod.ru/tutorials/occlusion-tutorial.html ссылка по отсечению

#6
12:45, 31 мая 2010

Unknown_000
> Кто нибудь может объяснить почему нельзя сначала сделать отсечение, а потом считать свет?
В книжке полагалось, что освещение рассчитывается по-вершинно в вертексном шейдере. Так как в нём же считается позиция, отсечение происходит после того как он отработал целиком.

#7
12:48, 31 мая 2010

>frustum culling вроде называется
Это называется clipping.

Под "считать свет" имелось ввиду повертексное освещение.
И вообще гугл. http://en.wikipedia.org/wiki/Graphics_pipeline

#8
16:45, 31 мая 2010

А я и имею ввиду вертексное освещение. Вопрос сохранился

#9
16:46, 31 мая 2010

Unknown_000
> Не совсем понятно почему нельзя делать отсечение до расчёта освещения. Из за
> такой схемы конвеера многие пишут отсечение своё т.к. расчёт цвета это
> ресурсоёмкая операция.

ты путаешь

в VS как раз делают

1) освещение
2) перевод ModelSpace->ClipSpace

#10
17:08, 31 мая 2010

>А я и имею ввиду вертексное освещение. Вопрос сохранился
Какой вопрос?

Так ли это? Да, так.

Почему так? Какая тебе разница, если оно всё равно так и никак иначе?

#11
17:55, 31 мая 2010

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

#12
23:33, 31 мая 2010

В общем я так вижу конвеер: Координаты Модели -> (матрица Мира) -> Координаты Мировые -> (матрица Вида) -> Координаты Видовые(относительно камеры) -> Освещение -> (матрица Перспективной Проекции) -> Homogenius Clip Space -> Отсечение -> Деление на W(собственно перспективная проекция) -> (матрица преобразования из -1..1 по X и Y в экранные координаты) -> Экранные Координаты.

Это верно? Собственно непонятно как делается отсечение. Отсечение это выяснение лежит ли треугольник внутри пирамиды видимости и если на границе генерация ещё одного треугольника по пересечению с пирамидой?
А чем же всё таки плохо проверять в Видовых Координатах на отсечение?

#13
23:50, 31 мая 2010

Unknown_000
Извините за оффтоп:
> Homogenius
но что это за Гомо-Гений?
Наверно все-таки имелось ввиду homogeneous ?

#14
1:53, 1 июня 2010

Unknown_000
Ну вообще-то всё намного проще.
... экспорт вершин -> определение граней -> растеризация -> иерархический z-stencil -> попиксельные операции

Экспорт вершин, соответственно, может идти как после вершинного, так и после геометрического шейдера, смотря какой пайплайн.
Отсечения делаются на этапе определения граней, и отсечения по пирамиде видимости там нет. Если треугольник лежит за пределами экрана, то у него будет ноль граней. Отсечения по плоскостям отсечения (ClipDistances) могут происходять как во время edge setup, так и во время растеризации, всё по желанию производителей железки. Вроде говорят что в современных GPU оно идёт на этапе растеризации.

А вообще на недавних GPU (кроме Fermi), как ни тужься, упрёшься либо в экспорт вершин, либо в скорость edge setup. И кстати, edge setup на тех же R600-Evergreen при включении мультисемплинга забавным образом замедляется ровно в полтора раза.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.