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

Отсечение невидимой геометрии (11 стр)

Страницы: 110 11 12 1315 Следующая »
#150
11:29, 29 сен 2017

Daniil Petrov
> А там хотя бы одна ссылка есть по существу?

Есть

#151
11:39, 29 сен 2017

Ребята.... вы все тут такие умные - прям вах! Однако забыли самый базовый принцип оптимизации рендеринга - это сортировка полигонов и рисование их от ближнего к дальнему, благодаря этому, полигон (а точнее пиксель), который перекрыт не пройдет проверку на глубину при растеризации и будет отброшен. Только с прозрачными полигонами так не выйдет - их нужно рисовать от дальнего к ближнему.

#152
11:40, 29 сен 2017

0xc0de
> Daniil Petrov

Рассказываю, как пользоваться интернетом :)
1. Переходишь по той ссылке
2. Сразу же в первых рядах вылезает википедия https://ru.wikipedia.org/wiki/BSP
3. Заходишь в раздел "В информатике":
    Bulk synchronous parallel[en] — абстрактная модель параллельных вычислений
    Business System Planning — методология разработки информационных систем.
    Binary Space Partitioning — структура данных; используется, например, для отображения трёхмерной графики.
    Business Server Pages - технология SAP для динамической генерации HTML.
    Board Support Package — в операционных системах: код для поддержки конкретной аппаратной платформы.
4. Находишь слова "трехмерная графика"

#153
11:42, 29 сен 2017

Парни, вы его запутаете только) Короче BSP это формат уровней квейка. Просто и понятно.

#154
11:42, 29 сен 2017

mingw
> сортировка полигонов и рисование их от ближнего к дальнему

Полигоны сейчас никто не сортирует. Модели хранятся в памяти буферами и рисуются часто инстансингом. Для целей early-z test делают дополнительный проход в буфер глубины перед основной отрисовкой.

#155
12:35, 29 сен 2017

> Модели хранятся в памяти буферами
Как лучше хранить меши с небольшим (до 200) числом полигонов - каждому по буферу вершин и индексов или как-то можно объединять?
Вот такие размышлизмы:
Если запихивать модели с одним материалом в один вершинный буфер насколько там их уместится, то сократится число переключений вершинного буфера - не знаю насколько это повысит производительность движка. Тут возникает другая проблема - модели в одном буфере вершин могут быть расположены далеко друг от друга на сцене и часть моделей может быть не видна в камеру (причем видимые и невидимые меши могут чередоваться в буфере, что снижает пользу их нахождения в одном буфере).

#156
12:38, 29 сен 2017

Кто-нить слышал об adaptive BSP?

#157
13:11, 29 сен 2017

zavod3D
> Как лучше хранить меши с небольшим (до 200) числом полигонов - каждому по
> буферу вершин и индексов или как-то можно объединять?

Зависит от ситуации.

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

Необязательно объекты могут иметь один материал, чтобы лежать в одном буфере. Ты можешь хоть все меши запелить в один буфер, а потом рисовать их с заданными оффсетами внутри буфера индексов.

> Тут возникает другая проблема
> - модели в одном буфере вершин могут быть расположены далеко друг от друга на
> сцене и часть моделей может быть не видна в камеру (причем видимые и невидимые
> меши могут чередоваться в буфере, что снижает пользу их нахождения в одном
> буфере).

Зачем рисовать сразу весь буфер, рисуй только те чанки буфера, которые видны.

#158
13:19, 29 сен 2017

0xc0de
>Зависит от ситуации.
Я, поэтому, и подумываю сделать в конвертере моделей возможность указания ID вершинного и индексного буфера. в которые нужно грузить меш.

> Необязательно объекты могут иметь один материал, чтобы лежать в одном буфере.
Ты про разные части одной модели, которым назначен разный материал (сабсеты в ID3DXMesh)?
Да, логично, напрмер, меши металлического кузова, резинового колеса и кожетканевой обшивки держать в одном месте (буфере), так как автомобиль обычно тестирую на видимость/невидимость целиком.
> Зачем рисовать сразу весь буфер
Хотел сократить число вызовов  DrawIndexedPrimitive
> Ты можешь хоть все меши запелить в один буфер
Ну это вряд ли, емкость буфера ограничена 16 битным беззнаковым целым

#159
13:26, 29 сен 2017

zavod3D
> Хотел сократить число вызовов DrawIndexedPrimitive

Сократи через instancing.

> Ну это вряд ли, емкость буфера ограничена 16 битным беззнаковым целым

Индексы могут задаваться и как unsigned int.

#160
15:09, 29 сен 2017

0xc0de
> Сократи через instancing.
Я про разные меши в буфере
> Индексы могут задаваться и как unsigned int.
Если позволяет видеокарта

#161
15:15, 29 сен 2017

zavod3D
> Я про разные меши в буфере

Про indirect - буфер слышал?

#162
15:20, 29 сен 2017

0xc0de
> Про indirect - буфер слышал?
нет

#163
15:30, 29 сен 2017

zavod3D
> нет

Погугли, он как раз решает твою проблему. Грубо говоря, это буфер, хранящий смещения (позиции мешей) в твоем индексном буфере :) Заполняешь Indrect буфер, а потом одной командой отрисовываешь сразу все необходимые меши. Кроме того, можно завести еще отдельный буфер, хранящий матрицы трансформаций этих мешей, к нему при отрисовке обращаешься по instance id и получаешь необходимую матрицу для инстанса.

#164
15:37, 29 сен 2017

http://vbomesh.blogspot.com/2015/11/opengl-44-instancing-1.html
http://vbomesh.blogspot.com/2015/11/opengl-44-instancing-2.html

Страницы: 110 11 12 1315 Следующая »
ПрограммированиеФорумГрафика

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