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

Помогите с идеями оптимизации в "сложных условиях" (4 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 13 4 5 612 Следующая »
#45
11:21, 3 июня 2012

BorisV
Много уже написали, clip distance делали для объектов? Вообще пробовать нужно PerfHUD'ом смотреть. Почитаю подробнее что написали уже в теме и т.д., может еще что посоветую.


#46
11:55, 3 июня 2012

Я так понял, что дом на самом деле не целый, а по кускам?
Да и привели бы вы подробную информацию - куда сколько ДИПов уходит.

#47
12:11, 3 июня 2012

Скачай Intel GPA и посмотри, это совсем недолго, увидишь где у тебя боттлнеки и скажешь нам, мы подумаем. Лучше вообще сделать Frame Capture и выложить куда-нибудь.

#48
12:45, 3 июня 2012

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

А зачем использовать биллборды? Лучше aabbox'ы , видимость и номера ячеек в изображении для bbox'a вычислять аналитически по преобразованным координатам вершин bbox'a на СPU, можно в отдельном треде.

#49
13:19, 3 июня 2012

В качестве безумных идей:
Рендерить то, что далеко, в меньшее разрешение? Дипов меньше не станет, но будет побыстрее.
Генерацию атласов можно подускорить, если вдруг.

Вариантов вообще мало.

Если проблема в домах - надо ковырять именно их, но для этого хорошо бы расписать поподробнее.

#50
13:26, 3 июня 2012

BorisV
> 25 мс рендеринг в цвет, 8 мс в тень, 20 мс на всю подготовку объектов
> (изначально, было 38, но еще думаю выжать 10-15 удастся)
20 мс на подготовку объектов? это поиск сортировка, расчет анимация, обновление частиц? Ну если так, то на CPU у тебя возможна просадка. 8мс для отрисоки в тень наверное многовато, буфер для отрисоки в тень упрости, для деревьев позиция + texcoord, для остальных объектов хватит только позиции.
1) Еще я у тебя увидел деревья. Я та понял там альфат тест, делаешь discard в шейдере или IDirect3DDevice9::SetRenderState ?. с расстоянием уменьшая Alpha Ref, меньше будет пикселей рисоваться.
2) Отключай прозрачность окон в домах по расстоянию
>уже не помню, давно экспериментировал и пришел к выводу, что в количество дипов и в вершинную производительность упёрся (поровну на тестовом железе)
3) пробовал half floaf делать для вершин? Это естественно на уровне экспортера придется реализовывать. ATI tootle попробуй, overdraw для мешей может сократиться.

#51
13:40, 3 июня 2012

это тактическая стратежка - поинт в том, чтобы локально была куча деталей - отсюда некоторые проблемы :)

#52
14:00, 3 июня 2012

Вообще, лучшая схема детализации выглядела бы так (на примере стенки):
Изображение
Правда, в неё входит...
1.LOD неразрушенный (параллелепипед, примитив), снизу слева
2.неразрушенный меш вблизи, сверху слева
3.fractured (фрагментированный) вблизи, сверху справа
4.fractured издалека, снизу справа
вот про что я говорил..

#53
14:02, 3 июня 2012

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

#54
15:39, 3 июня 2012

BorisV
> GF9600. Но к примеру срань вроде Radeon 2400 не на много медленнее
Целевая аудитория - видеокарты за 300 рублей?

#55
16:10, 3 июня 2012

BorisV
> Хлам железо выбрано потому, что целевая аудитория любителей таких игр это 25-40
> летние пользователи, у которых еще athlon xp водится, подросткам такое не
> интересно вообще.
А они заплатят за игру? Уже это проходили - жлобы, жалеющие копеек на апгрейд, скачают ваш мегапроект с торрентов.

BorisV
> Лоды не спасут отца русской демократии.
Они помогут уменьшить память под объединенные ВБ. На домах всякую мелочь безболезненно можно выкинуть, остальное в буффер, если напрягает пропадание объектов, можно их диссолвить по алфе.
Ну и импосторы попробовать в каком-нить виде. Для растительности они везде применяются, но в данном случае памяти под них надо много.
Приведи статистику по домам - сколько частей, текстур, сколько их на карте.

Jarro
> Вообще, лучшая схема детализации выглядела бы так (на примере стенки):
Проблема в том, что в ВТВ дома состоят из чрезмерно большого числа объектов, иерархически связанных для логики разрушения. Сами по себе эти объекты простые - навроде бревен, балок и т.д. Поэтому единственный вариант существенно снизить дипы - динамически их объединять в один ВБ.

#56
16:48, 3 июня 2012

TelVolt
Не совсем чтоб только в зданиях, но они больше всего. Уже писал, что их перемоделировать нет возможности, а состоят из порезанных крупных деталек для разрушений и слишком быстро в процессе игры ломаются, чтоб тратить время на создание цельной формы. Еще неприятный факт не описал, что количество вершин слишком велико из-за генерации при экспорте tangent вектора для вершин. Здание это отдельные меши (фактически просто детальки разрушения крупные), вряд ли с ними что-то можно сделать. Удаление такого куска безболезненно по скорости, а при замене грузится массив более мелких частей (экономия памяти) и они распадаются, большинство исчезает со временем.
Детальки по отдельности никак не могу показать, но вот пример частичного разрушения, в принципе суть ясна:
Изображение

daemolisher
Импостеры идея хорошая, но как уже писал, они не дружат со сглажкой из-за альфа 1 битного, значит придется делать суперсэмплинг, иначе заметно слишком. А при суперсэмплинге уже совсем другие затыки производительности, хоть овердрав составляет 2.5 в этой гаме, все равно жуть.

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

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

А в gui тетрис запускать.

Aroch

а для геометрии оптимизация для кеша есть?

Да, притом очень эффективная.

Chaos_Optima

когда происходит событие на разрушение меняй геометрию как это в нормальных играх делается

Так и делается.

Andrey

clip distance делали для объектов?

Как это для объектов? По лодам если, то исчезают на определенном расстоянии, глобально разумеется стандартная far clip plane камеры. Менять эти настройки нельзя, потому что с заданными максимальными настройками детализации должен достичь достаточной производительности на тестовом железе.
20 мс на подготовку объектов? это поиск сортировка, расчет анимация, обновление частиц? Ну если так, то на CPU у тебя возможна просадка.

Да, все это. Но не стоит забывать, что тут свыше ста тысяч объектов на самом деле и 20 мс это я уже оптимизировал неплохо оригинальный движок, который вообще в один поток работает. Позже допилю еще, но надо именно с рендером разобраться, ибо если рисовать несколькими громадными vb с одной текстурой только в цвет, то вместо 25 мс становится 7-8 мс (это еще на карте нет танков... там вообще ад). Вот надо приблизиться к этой цифре как можно ближе.
8мс для отрисовки в тень наверное многовато, буфер для отрисоки в тень упрости, для деревьев позиция + texcoord, для остальных объектов хватит только позиции.

Уже так. Утык в дипы, не могу в крупные vb много упаковывать из-за затрат памяти и тормозов при перемещении (это частично компенсировал, но все равно "лагает"). А если это делать на видеокарте целиком, render targets под позиции вершин засрут видеопамять без возможности выгрузить и в целом производительность понизится. Я уже забил на тени, наверно для них буду придумывать альтернативный алгоритм.
Еще я у тебя увидел деревья. Я та понял там альфат тест, делаешь discard в шейдере или IDirect3DDevice9::SetRenderState ?. с расстоянием уменьшая Alpha Ref, меньше будет пикселей рисоваться.

Не, это деградация качества неоправданная, деревца сортирую front to back и они по z тесту весьма эффективно работают, проверял создавая огромный массив и смотрел сквозь него, притом на разных видеокартах, даже с самозатенением шустренько.
Отключай прозрачность окон в домах по расстоянию

А не смогу определить, что внутри домов отключать, особенно разрушенных. И окна/двери от взрывной волны быстро вылетают всюду (или солдаты бьют).
пробовал half floaf делать для вершин?

Эээ, сейчас поищу, не знал о возможности такого в d3d9 для позиций. Часть вертексных данных пожал, правда это на скорость не особо повлияло, во всяком случае у меня (зато память сэкономил).
ATI tootle попробуй, overdraw для мешей может сократиться.

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

PlayerDark
Да, дом кусками.
Дипов примерно поровну, половина на здания уходит, половина на все остальное. Уменьшить их могу в 3 раза спокойно, в самом начале писал недостатки этих методов, шило на мыло. Так что считать дипы и т.п. это не тот случай, нужно радикальное или инновационное решение, но не ценой качества.

ArchiDevil
О каких боттлнеках можно говорить, если тут объектов ох* сколько? Все сплошной боттлнек, сейчас оптимизация кода произведена и еще запас остался, но смысла сейчас там лазить нет, надо бить в самую сложную проблему, а это рендеринг этой массы. Уменьшаю дипы - увеличивается нагрузка по тексель рейту и длинне шейдеров, сглажка аппаратная невозможна -> один хрен, только сбоку. И с нехваткой/фрагментацией памяти на 64 битных осях проблема, не разгуляешься. Тупик какой-то.

axiom

А зачем использовать биллборды? Лучше aabbox'ы , видимость и номера ячеек в изображении для bbox'a вычислять аналитически по преобразованным координатам вершин bbox'a на СPU, можно в отдельном треде.

Для меня импостеры это любая простейшая фигура, важен принцип работы. В данном случае конечно боксы удобнее.

ryzed

Рендерить то, что далеко, в меньшее разрешение? Дипов меньше не станет, но будет побыстрее.

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

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

Jarro
К сожалению, это нереально выполнить в малые сроки, без переэкспорта никак. Да и лучше было бы вообще сделать новую систему разрушений и тесселировать цельную геометрию, наверно меньше времени займет. Ну не знаю я, почему месяц-полтора тратит каждый моделлер на экспорт здания, может отмазку такую для меня придумали. Кстати, может есть какая либа готовая для разрушений c bsd лицензией и приценить, сколько времени это подключать и реально ли... Но не решится проблема после разрушения зданий.


Nomad

Целевая аудитория - видеокарты за 300 рублей?

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


Ataman

А они заплатят за игру? Уже это проходили - жлобы, жалеющие копеек на апгрейд, скачают ваш мегапроект с торрентов.

Насколько мне известно, задроты с картами по 500 баксов не платят за игры в большинстве своем, сознательный гражданин придерживается миддлэнда, не сидит в играх круглосуточно и поэтому не вышвыривает деньги в бездонную бочку апгрейда.
> Лоды не спасут отца русской демократии.
Они помогут уменьшить память под объединенные ВБ. На домах всякую мелочь безболезненно можно выкинуть, остальное в буффер, если напрягает пропадание объектов, можно их диссолвить по алфе.
Ну и импосторы попробовать в каком-нить виде. Для растительности они везде применяются, но в данном случае памяти под них надо много.
Приведи статистику по домам - сколько частей, текстур, сколько их на карте.

Лоды уже юзаются и уже объединяются в крупные вертекс буфферы, что вызывает тормоза при движении и памяти расход все равно великоват. С импостерами можете предложить решение, которое бы выглядело как антиалиазинг, чтоб в режиме msaa не видеть багов? У меня кроме суперсэмплинга нет идей. Вместо альфа теста юзать мягкую прозрачность альфа блендинга это несколько иные артефакты, даже при сортировке (сортировать очень много объектов, займет 5 мс наверняка).
У домов 20-30 частей, текстур около 20, на карте домов не считал сколько, но вот то что на первом скриншоте умножить раза в 3.

#57
18:00, 3 июня 2012

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

#58
18:08, 3 июня 2012

BorisV
лод-ы поагрессивнее.
метров со 100 ваши затайленые текстурки уже выглядят как однотонные с небольшим шумом - можно запекать те-же куски карты 100х100м и стримить.
для ближних 4 кусков (пре)сортировать радикс сортом всю геометрию по материалам - за одно узнать сколько их там на кусок, и нельзя ли их количество сократить.
С некоторыми потерями качества -
геометрия домиков могла бы быть существенно проще, если вырезать в них дырки альфа-тестом.
и "вырываются" куски домов вероятно взрывами - а там наверное не так важно чтоб разлетались куски именно этого конкретного домика.
возможно хватило бы и геометрических патиклов с досками/щепками/кирпичами(+много пыли) смешанными в разных пропорциях.

#59
18:15, 3 июня 2012

Всё это звучит как: Я ничего не хочу делать (и моделлеры с художниками тоже), но буду жаловаться, что всё тормозит.

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

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