Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / 1.000.000 треугольников, можно ли с этим жить?

1.000.000 треугольников, можно ли с этим жить?

Страницы: 1 2 Следующая »
IIIarpПостоялецwww2 янв. 20183:23#0
В общем, рендерю 1кк треугольников на экран с помощью стандарта - VAO + VBO/EBO
На выходе получаю 60 кадров, при большем кол-ве падает ниже этой заветной отметки, например при 1.2кк уже 50 кадров

Девайс:
Intel Core i3-5020U(2 ядра / 4 потока)
Integrated Intel HD 5500(512mb)
RAM - 16gb

Код:

+ Показать

Скрины:

+ Показать

Допустим эти точки принадлежат разным моделям с разной топологией и т.д и лежат в одном буфере ради батчинга и т.п.
Т.е. инстансинг в учет НЕ берем.

Например нарисовать 10 различных персов по 10к полигонов, окружение(деревья, архитектура и т.п.)
Средне детализированное дерево - 2к полигонов, с десяток их разновидностей уже 20к
Плюс пара мега текстур, пара проходов и парктиклы, вот и видно на экране 1кк полигонов и 512мб использованной видео памяти.
Учитывая что на последнем скрине я засрал 438мб

Какие есть более оптимальные методы отрисовки такого кол-ва треугольников?
И наверное основной вопрос, хватит ли 1кк полигонов/ 3кк вершин для нормальной работы?
При том что в космос я лететь не собираюсь, и на гта 6 не претендую, но и одними кубиками в стиле майнкрафта ограничиваться не собираюсь...

Правка: 2 янв. 2018 22:51

IIIarpПостоялецwww2 янв. 20183:33#1
Хотя я ошибся наверное...
3 000 000 вершин * 3 координаты * 4 байта(float) = 36мб
Это если я правильно посчитал
А дэбагер выдает интересные цифры

Правка: 2 янв. 2018 3:34

Daniil PetrovПостоялецwww2 янв. 20183:40#2
IIIarp
> 3 000 000 вершин * 3 координаты * 4 байта(float) = 36мб
Точнее ~34,5 Мб, если быть дотошным и учесть, что один Мб = 1024 * 1024 байт :)
gamedevforПостоялецwww2 янв. 20183:44#3
push_back для vector случайно не делает у тебя automatic reallocation?
eMan.LivedПостоялецwww2 янв. 20184:43#4
Daniil Petrov
> если быть дотошным и учесть
мегабайт (Мбайт) = 10^6 = 1 000 000 байт
vs
мебибайт (МиБ) = 2^20 = 1 048 576 байт
Kurono267Постоялецwww2 янв. 20189:10#5
IIIarp
При каком разрешении выполнено тестирование? Не знаю как у других, но у меня изображения не отображаются.
Имхо, если цель разработка с использованием данной видюхи, то стоит иметь ввиду что производительность у нее на уровне десктопной видюхи 8 летней давности, плюс стоит рассчитывать что максимальное адекватное разрешение для нее все таки 1280x720, может немногим больше.
По поводу данного теста, я считаю что он далеко не в полной мере отражает скорость работы данной видюхи.
IIIarp
> Какие есть более оптимальные методы отрисовки такого кол-ва треугольников?
Лоды - на экране часть треугольников может быть бесполезной, ибо не несет какой либо информации.
Если судить именно о коде, то проблем там пока нет, ибо кода тоже особо нет.
-=MASTER=-Пользовательwww2 янв. 201814:20#6
да запусти ты в NSight-е свой софт и посмотри, где у тебя ботлнек
SuperInoyПостоялецwww3 янв. 20184:07#7
-=MASTER=-
> и посмотри, где у тебя ботлнек
Да и так видно же, что тут:
Intel HD 5500(512mb)
IIIarpПостоялецwww3 янв. 20186:40#8
Что мне удалось выжать, так это 3.300.000 полигонов на 60 кадров
glDrawElements одной машинки жрет 4.521ms, это с отсечением бэка
Очистка по цвету, глубине, бинд ВАО, свап буфферов, в сумме дают 0.8ms
+ Показать

Правка: 3 янв. 2018 6:45

ZefickПостоялецwww3 янв. 20188:35#9
  Triangle Strip? Не, не слышал.
ELena_ShloemovichПользовательwww3 янв. 201814:36#10
Zefick
> Triangle Strip?
На первом скриншоте треугольнички отдельные.

IIIarp
> 3 000 000 вершин * 3 координаты * 4 байта(float) = 36мб
А нормали для каждой вершины.

ArchiDevilПостоялецwww3 янв. 201815:25#11
О, еще одни тесты в вакууме :)
Скажу правильное решение сразу, чтобы не тратить время на ерунду: надо делать дальше и забить на треугольники и их количество. Когда начнет тормозить, то в 99% случаев проблема окажется не в треугольниках. Если этого не сделать, то сейчас придется потратить много времени, потом выбросить все полученные результаты на свалку и начать заново.
1 frag / 2 deathsУчастникwww3 янв. 201817:33#12
IIIarp
> Какие есть более оптимальные методы отрисовки такого кол-ва треугольников?
Не рисовать столько треугольников. Как тут сказали, далёкие модели рисовать в меньшей детализации ("лоды"). То, что заслоняется, не рисовать вообще. Определять заслоняемые участки можно с помощью порталов (для сцен в помещениях/коридорах) или окклужон буфера (для сцен на открытой местности).
Видяха так себе, но если делаешь не для себя, то надо учитывать.
IIIarpПостоялецwww3 янв. 201819:04#13
1 frag / 2 deaths
Это мой основной рабочий ноут, но в запасе стоит комп
Xeon x3440 + GTX 750Ti 2Gb (уверен, тут цифры будут поярче)

Но хочется и на ноуте порадоваться всей красоте)

Лоды так лоды...
С терейном все просто, quadtree мне в помощь, а с другими моделями?(в ручную делать лень)
Слышал есть алгоритмы, вычленяющие точки из модели в реалтайме, генерируя лоды, только вот найти не могу...

BiomanПостоялецwww4 янв. 201812:43#14
IIIarp
> Но хочется и на ноуте порадоваться всей красоте)
Радоваться графике на встроенной карте смысла практически никакого,как не делай нормальной производительности с нее не получишь.Да и при оптимизации результаты на  встроенных от десктопных будут отличаться.Как уже сказали выше,бесполезный труд,который в последствии вы вряд ли будете использовать.Разумнее сразу начинать делать то,с чем в итоге вы будете работать,а не пытаться из костылей шедевр собрать.
Страницы: 1 2 Следующая »

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

Тема закрыта.

2001—2018 © GameDev.ru — Разработка игр