Издержки при использовании LOD

Общие вопросы о Unity3D

Издержки при использовании LOD

Сообщение gturk 23 дек 2012, 23:14

Все мы знаем что инстанцирование новых объектов операция относительно дорогая и пользоваться ей нужно с осторожностью.
Соответственно возникает вопрос, а не появятся ли теже самые проблемы при активном использовании лодов.
Например такая ситуация: я довольно быстро двигаюсь в сторону объекта и абсолютно точно знаю что приближусь к нему вплотную, а затем пройду мимо, причем на экране этот объект проживет секунд 20. Есть ли смысл заморачивться с лодами для таких объектов или на смену мешей уйдет ресурсов больше чем выиграется от уменьшения полигонов
Аватара пользователя
gturk
UNITрон
 
Сообщения: 239
Зарегистрирован: 01 апр 2012, 18:49

Re: Издержки при использовании LOD

Сообщение seaman 23 дек 2012, 23:33

При смене мешей новый объект не инстансируется. Однако вопрос интересный. Никто не проводил измерений?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Издержки при использовании LOD

Сообщение BornFoRdeatH 23 дек 2012, 23:43

ну по всей логике определение дистанции и смена меша не должны быть накладнее отрисовки сложной геометрии?
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: Издержки при использовании LOD

Сообщение gturk 23 дек 2012, 23:47

BornFoRdeatH писал(а):ну по всей логике определение дистанции и смена меша не должны быть накладнее отрисовки сложной геометрии?

По идее для смены меша нужно как минимум выгрузить из видеокарты старый и загрузить новый, такчто тут не все так просто
Аватара пользователя
gturk
UNITрон
 
Сообщения: 239
Зарегистрирован: 01 апр 2012, 18:49

Re: Издержки при использовании LOD

Сообщение BornFoRdeatH 24 дек 2012, 00:08

а если предположить что они уже загружены? или я не совсем понимаю принципа работы видеокарт...
Ну а в действительности хотелось бы просветится как же работают лоды в юнити, пытался нагуглить но ничего не нашел.
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: Издержки при использовании LOD

Сообщение Receptor 24 дек 2012, 02:19

А причем тут смена объекта или инстантс, логично предположить, что идет подмена MeshFilter,грубо говоря, из уже подготовленного массива. Просто индексы работают. По идее все уже установленно давно и сидит в памяти, просто не рендерится. Ну это личные догадки, не больше :)
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: Издержки при использовании LOD

Сообщение gturk 24 дек 2012, 02:47

Receptor писал(а):По идее все уже установленно давно и сидит в памяти, просто не рендерится.

тоесть по твоему каждый объект, вне зависимости от того рендерится ли он или нет хранится в видеопамяти? А если еще и лоды используются, то в нескольких варииантах
Аватара пользователя
gturk
UNITрон
 
Сообщения: 239
Зарегистрирован: 01 апр 2012, 18:49

Re: Издержки при использовании LOD

Сообщение Agasper 24 дек 2012, 22:25

От включения LOD хуже не будет гарантировано. Но при небольшом количестве полигонов объекта и простом шейдере вы не добьетесь никакого прироста производительности.
_www.agasper.net
CEO Solar Games Ltd.
Наши игры: _www.solar-games.net
Agasper
UNIт
 
Сообщения: 69
Зарегистрирован: 13 фев 2011, 20:20
Откуда: Ростов-на-Дону
  • Сайт

Re: Издержки при использовании LOD

Сообщение Woolf 25 дек 2012, 05:30

gturk писал(а):
Receptor писал(а):По идее все уже установленно давно и сидит в памяти, просто не рендерится.

тоесть по твоему каждый объект, вне зависимости от того рендерится ли он или нет хранится в видеопамяти? А если еще и лоды используются, то в нескольких варииантах


Естественно. А вы как думали? Все лоды сидят в видеопамяти, просто в нужный момент подменяют друг друга. Точнее, они не подменяются.. Если подробнее: что такое меш, с точки зрения низкоуровневого рендеринга - это объект VBO. Т.е. массив данных в видеопамяти, содержащий буфер вершин, буфер цветов, буфер текстурных координат и буфер полигонов. При рендеринге каждого кадра выбираются нужные буфера среди представленных на экране мешей. Так что переключение лода не кушает вообще ничего, ну, кроме видеопамяти. Просто с определенного кадра вместо лод0, к примеру, выбирается лод1 или там лод2
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Издержки при использовании LOD

Сообщение seaman 25 дек 2012, 07:03

меш, с точки зрения низкоуровневого рендеринга - это объект VBO. Т.е. массив данных в видеопамяти, содержащий буфер вершин, буфер цветов, буфер текстурных координат и буфер полигонов

Второй ЛОД - второй меш. Совершенно другой объект VBO. Второй набор буферов (вершин и индексов). И не факт что они обязательно в видеопамяти. Вот мипмап текстур точно все в видеопамяти, а с ЛОД это совершенно не очевидно. Зависит ИМХО от движка -загрузит движок ЛОДы туда - будут они в видеопамяти, не загрузит - придется подгружать отдельно. На месте разработчиков движка я бы (по крайней мере на ПС) загружал Лоды в видеопямять заранее, но все же это факт. Где вы видели, что это именно так - ссылку плиз.
Да - текстурные координаты, цвета вершин, нормали, тангенты вообще все атрибуты вершины хранятся в буфере вершин, а не в отдельных буферах.
http://www.gamedev.ru/terms/vbo
http://www.gamedev.ru/code/terms/VertexBuffer
http://www.gamedev.ru/code/terms/Vertex
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Издержки при использовании LOD

Сообщение Woolf 25 дек 2012, 07:40

текстурные координаты, цвета вершин, нормали, тангенты вообще все атрибуты вершины хранятся в буфере вершин, а не в отдельных буферах.


А это уже как вы организуете. Иногда удобно вместе, иногда - по раздельности. Лично я, когда-то, делал раздельно вершины, отдельно цвета с нормалями и uv. Хотя да, тут вы правы несколько, глянул сейчас спецификацию OGL 4 на glGenBuffers - действительно, раздельного задания буферов больше нет. Но у OGL2 - она есть )

На месте разработчиков движка я бы (по крайней мере на ПС) загружал Лоды в видеопямять заранее, но все же это факт. Где вы видели, что это именно так - ссылку плиз.

Я этого не знаю достоверно, но не будем же мы считать разработчиков юнити дураками? Если бы постоянно генерились новые буферы при лодах - была бы просадка по производительности в момент переключения лода. Задание буфера - это достаточно "тяжелая" операция. Такого не наблюдается. Отсюда эмпирический вывод, что они в видеопамяти, как и положено.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Издержки при использовании LOD

Сообщение gturk 25 дек 2012, 10:13

Спасибо за краткий ликбез)
Аватара пользователя
gturk
UNITрон
 
Сообщения: 239
Зарегистрирован: 01 апр 2012, 18:49


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14