![]() |
Ответ: Советы по оптимизации
Забил на эту программульку, вручную создал LOD'ы - никаких рывков.
Да и своя технология создания выработалась ) Вот что у меня получилось http://forum.boolean.name/showthread...982#post248982 |
Ответ: Советы по оптимизации
У меня возникла очередная идея )
Если большое количество Ентитей нагружает проц, а скрытие элементов не полностью не освобождает ресурсы. У меня возникла идея вместо использования AutoFade, уничтожать ентити с растоянием. Я про те ентити, которые сидят в списках. Затем проходить по спискам, допустим по 100 элементов в кадр и если нужно вернуть мешу - копируем её шаблона и трансформируем. Как думаете, будет ли такой вариант быстрее, при расчете, что элементов допустим 3 тысячи. И ещё, есть какие нибудь варианты вычислить расстояние до точки. У меня только примитивный вариант, перемещать какой-нибудь пивот и вызывать EntityDistance(). :rolleyes: |
Ответ: Советы по оптимизации
Ну что скажете? Что посоветуете?
|
Ответ: Советы по оптимизации
О, мистер Ф!! Заходи дорогой! ))
|
Ответ: Советы по оптимизации
Цитата:
ну ок: Цитата:
Цитата:
Цитата:
|
Ответ: Советы по оптимизации
Мудрость предыдущих поколений блитцеров гласит:
не используй HideEntity без крайней нужды ибо тормазит оно, используй EntityAlpha(0) вместо него, да ускорится программа твоя. |
Ответ: Советы по оптимизации
Цитата:
|
Ответ: Советы по оптимизации
За ксорс не скажу, но можно проверить, делается тест с сокрытием кучи энтатей по альфе и по сокрытию.
|
Ответ: Советы по оптимизации
Ладно, спс!
Ну списком я иногда подразумеваю записи тайпа. Сегодня сделаю семпл по этой теме. И альфу с хайдом сравню. Удачи тебе МрФ! Билетов попроще! ) |
Ответ: Советы по оптимизации
А у меня еще один вопрос родился. У меня при работе в ксорсе иногда зависает бук, похоже на ошибку обращения к памяти (синий экран смерти). Замечаю такую тенденцию, что в основном косяк происходит при нескольких MAV'ах.
Как думаете, может ли это быть связано с тем, что в корявом коде я обращаюсь на несуществующую ссылку в память, которая в своё время уже занята другим процессом - что приводит к краху системы? |
Ответ: Советы по оптимизации
Отчет!! Ну что, господа булочники) Начну со слов Джокера Цитата:
У меня терпения хватило на 50к кубиков. Скрытие в Ксорс, что с помощью xHideEntity (fps-60) ,что с помощью xEntityAlpha (fps-60) Блитц HideEntity (fps-58 ) , EntityAlpha (fps-58 ) Легенда разрушена!! :-D Зато порадовала производительность Ксорса, она выше блитца на + 20% Тест на 40к кубиков, результат отдаление с AutoFade Цитата:
семпл ксорса Щас попробовал написать такую функцию: Прироста нет! Даже небольшое падение на общёте Щас попробовал еще одну функцию, с которой вся тема и завелась в моей голове. Функция с растоянием удаляет ентити и восстанавливает из данных полей. сам семпл bb Я выполняю xFreeEntity(), а в диспечере смотрю за оперативкой и за процессором, там ничего не меняется!! Че за фигня?! У меня только один вывод, не придумывайте себе геморой, как это делаю я. Используйте меньше ентити и ЛОДы. Ибудет счастье!! |
Ответ: Советы по оптимизации
Объявление не моё, я просто разместил объяву ;)
|
Ответ: Советы по оптимизации
HideEntity - EntityAlpha
Цитата:
что их и отличает! То-есть на мой взгляд, тест с кубиками без учёта коллизии не пруф, давай по честному тесты проводить, а то получается что функция работает процентов на 50% а с учётом коллизии будет на все 100% Я же могу скрывать объект для оптимизации, но не трогать коллизию:) |
Ответ: Советы по оптимизации
Вот к примеру, я не пользуюсь коллизиями вообще, для это я пользуюсь физ движком.
И тест не для проверки коллизий, а что быстрее робит. Да и вообще Хайд и Альфа я тестил только из интереса слов Джокера Цитата:
А суть теста вообще в другом. За место автоФейда удалять ентити. Короче надо будет, сам прочитаешь отчет :) |
Ответ: Советы по оптимизации
Цитата:
попробуй на 1кк кубиков. и скомпиль оба ексешника пожалуйста, а то не у всех есть блиц, а потестить охота)) еще бы померить время самого скрытия с помощью альфы и хайдом. у меня в движке есть два варианта скрытия Hide / Show - которое удаляет ссылку на енити из сценграфа. оно работает долго, но зато скрытая таким образом ентити вообще никак не участвует в расчетах. так можно и миллион скрыть - и все равно ничего не изменится. и есть SetVisible - которое просто устанавливает флаг. Сам вызов SetVisible очень быстр, но скрытая таким образом ентити все равно участвует в расчетах (пусть и всего лишь проверка булевой переменной). |
Ответ: Советы по оптимизации
Цитата:
Цитата:
Вообще тут тупой сценограф Freeentity не освобождает ентити со сценографа. КАК ТАК!?!?! >:( При 100к ентити, скрываешь или удаляешь ентити, оперативка не высвобождается, проц также в напряге, и нормально становится только при 2 к кубиков. А это фуфло! У меня в проекте уже вырастает 750 растений и 4000 плоских мешей для дебага скрытых, плюс парочках пост-эффектов с дополнительным рендером - фпс стабильное. :dontknow: |
Ответ: Советы по оптимизации
FreeEntity в блице должен удалять ентити и из сценграфа и из памяти. Т.е. это полное очищение)))
память по диспетчеру небось смотришь? там она может не сразу снизиться. Цитата:
|
Ответ: Советы по оптимизации
Цитата:
Цитата:
Хотя кубики копейки весят наверное, там то только мб пишет.. Цитата:
Ну извини, не сравнивай хайтэк с буком )) |
Ответ: Советы по оптимизации
4 тысячи.
|
Ответ: Советы по оптимизации
Я знаю Холидел, что 4 к кубиков работает без проблем и у меня, но сють в другом, с твоим процом если вывести гдето 200к кубиков и скрыть 196 к кубиков, блитц будет тормозить..
|
Ответ: Советы по оптимизации
Извиняюсь, что на тему подзабил, выкидываю екзешник и исходник в спойлере.
Мой вывод был правильный, не создавайте геморой. Максимум что можно помудрить - это разбиение на секторы. И то, надо ли это... Вряд ли ктото будет делать Обливион или Фалаут ) Погоняйте пример, мне показалось что Хайд ентити чуть быстрее работает чем Альфа(0). Тестил в углу на 3к кубиках и Хайд выиграл на пару сотен кубиков ) Компиль http://www.sendspace.com/file/ia8zkw |
Ответ: Советы по оптимизации
Цитата:
|
Ответ: Советы по оптимизации
Народ, посматрите пример пожалуйста.
Не могу понять что за косяк. Смысл такой. Я делаю каждый кадр LinePick на воду в нескольких точках. А когда появляется новое дерево с параметром EntityPickMode 2 ксорс начинает дико тормозить. И так с каждым появлением нового пикнутого дерева. код тормозов: Код:
For i=0 To 50 Ссылка http://www.sendspace.com/file/hgrgxv |
Ответ: Советы по оптимизации
я не могу его скачать. там тыщи кнопок download(( лотерея, блин
|
Ответ: Советы по оптимизации
Нажми Click here to start download from sendspace
|
Ответ: Советы по оптимизации
Цитата:
Цитата:
|
Ответ: Советы по оптимизации
1,2,4 - на границе всинка - 60 фпс
0,3 - 30 фпс выключение в драйверах синхроимпульса не помогло. |
Ответ: Советы по оптимизации
Цитата:
Но даже один раз падает гдето на 5-10, но чувствуется - не приятно Проблема решается, если пик деревьев определять как бокс или сфера, но это не решение. У меня должно быть взаимодействие с деревьями :mad: Цитата:
|
Ответ: Советы по оптимизации
Цитата:
|
Ответ: Советы по оптимизации
Спс конечно за совет, но для меня пока это слишком замороченно )
Да меня эта тема зацепила, потому что я думал что Пик функции быстрые... Я подумал сделать так - если игрок в воде (позиция У ниже уровня воды), тогда пикать воду. Слой "под водой" хочу сделать изобычного плоского меша, расположенным прямо перед камерой, как думаете, Какой размер делать слоя и на каком расстоянии от камеры? Чтобы не было артефактов от будущих пузырей |
Ответ: Советы по оптимизации
ВСЁ!! Сделал тест, и был удивлён!
Тест проведён на 1000 сфер, с разным количеством вызовов CameraPick в 3-х возможных режимах Код:
Режим кол-во вызовов FPS Ссылка http://www.sendspace.com/file/ha9vz2 Жмём Click here to start download from sendspace Исходник |
Ответ: Советы по оптимизации
Цитата:
PS А нет, там не тупой перебор, там бинарное дерево. |
Ответ: Советы по оптимизации
Ну один хер работает убого.
И если бы сначала пикалось по боксу, то не было бы такого! Код:
Mesh 15 3 |
Ответ: Советы по оптимизации
Цитата:
Цитата:
Во-вторых Цитата:
|
Ответ: Советы по оптимизации
Цитата:
Запусти екзешник, сам посмотри Цитата:
|
Ответ: Советы по оптимизации
Цитата:
|
Ответ: Советы по оптимизации
Нет, меня это не удивляет. Хотя думал будет работать быстрее.
Но твоё утверждение SDK с твоих слов по поводу перебора ентити по боксу, А уже далее по геометрии - чушь! |
Ответ: Советы по оптимизации
Цитата:
Если ентити - меш, и стоит режим пика по треугольникам - происходит проверка по боксу ( точнее по дереву боксов ) и потом уже по треугольникам ( в листьях дерева ) Вот тебе пруф, развертка CameraPick ( некоторые неважные места я пропустил ): файл blitz3dsdk/dev/source/bbsdk/bbblitz3d.cpp функция bbCameraPick Код:
943| Entity * bbCameraPick( Camera *c,float x,float y ){ Код:
938| static Object *doPick( const Line &l,float radius ){ метод World::traceRay Код:
127| Object *World::traceRay( const Line &line,float radius,ObjCollision *curr_coll ){ Код:
87| bool World::hitTest( const Line &line,float radius,Object *obj,const Transform &tf,int method,Collision *curr_coll ){ метод Object::collide Код:
48| virtual bool collide( const Line &line,float radius,::Collision *curr_coll,const Transform &t ){ return false; } файл blitz3dsdk/dev/source/blitz3d/meshmodel.cpp этот самый перегруженный метод MeshModel::collide, берет коллайдер и проводит коллизию с сегментом Код:
290| bool MeshModel::collide( const Line &line,float radius,Collision *curr_coll,const Transform &t ){ Код:
282| MeshCollider *MeshModel::getCollider()const{ Код:
133| MeshCollider *getCollider()const{ непонятно конечно почему сразу лучом не трассирует, но не суть Код:
54| bool MeshCollider::collide( const Line &line,float radius,Collision *curr_coll,const Transform &t ){ Код:
66| bool MeshCollider::collide( const Box &line_box,const Line &line,float radius,const Transform &tform,Collision *curr_coll,MeshCollider::Node *node ){ сначала проверка на пересечение с боксом узла дерева ( потом уже трассировка до листов дерева, а в листьях трассировка треугольнков ) ЗЫ Есь чо возразить?:) |
Ответ: Советы по оптимизации
Цитата:
там даже при остуствии пика по бокусу (курсор уведен в сторону) проверка пика по геометрии работает в 15 раз медленне проверки по боксам. хотя должна быть одинаковой. видимо blitz3D и blitz3D SDK не одно и то же. |
Ответ: Советы по оптимизации
Цитата:
Кстати счетчик Stats3D ( 0 ) показывает ( странно что обнуление не сделали ) как раз кол-во треугольников "собранных" по время трассировки дерева, и по нему видно что даже когда уводишь курсор, трассировка доходит до листьев дерева. Цитата:
|
Ответ: Советы по оптимизации
Цитата:
Цитата:
Покрутил побольше тест с pick mode mesh, если в рендер попадают меши фпс сразу падает. Пробовал наводится на пустое место на небольшом расстоянии - фпс в норме. Далее начиная отдаляться,не двигая камеру, фпс начинает падать. Т.е. берутся пик-меши в опеределенном диапазоне от центра экрана. А с другой стороны, если расположить шары в линию, т.е. чтоб выглядело как линия горизонта, и расположить центр чучуть выше -всё норм. Что противоречит предыдущему выводу. Короче - говнокод! |
Ответ: Советы по оптимизации
Сами вы нарики, с кривыми руками на любом ЯП будет все тормозить.
Ну вот НАХЕРА пикать в цикле 100500 высокополигональных мешей? Блеать, это на асме тоже будет тормозить ! Мозг включить надо и все "проблемы" уйдут. Варианты всегда есть, как минимум сделать малополигональный невидимый "пик-меш" с отсечением по секторам, или расстоянию (иф двигался - выключить всем пикмод, включить тем кто близко и тд). И да, используйте ентитипик, он быстрее на многих машинах и удобнее. Используйте ресурсоемкие функции ТОЛЬКО ПО НЕОБХОДИМОСТИ ПО УСЛОВИЮ, а не в цикле от балды (непременный атрибут говнокода всех начинающих). И хватит уже списывать свою убогость на прекрасный инструмент. |
Ответ: Советы по оптимизации
http://www.youtube.com/watch?v=K0_eh...ilpage#t=66 s
блин надо не полениться и смастерить игрулю, показывающую "широкий мир" в B3d |
Ответ: Советы по оптимизации
Слушай, тормоз, давай без оскарблений. Каждый может сказать, включи мозг, руки не от туда..
Ты сам мозг включи! Во-первых там всего 1000 мешей, это вполне реальная цифра для сценографа. Во-вторых. Я не собираюсь 1к мешей пикать. Это тест, меня просто заинтересовала производительность пика. З.Ы. Для тебя может это глупым кажеся. Но кто-то для себя какие-то выводы сделает. |
Ответ: Советы по оптимизации
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Ответ: Советы по оптимизации
Цитата:
Я не могу представить ситуацию где бы это было нужно Цитата:
Цитата:
Цитата:
зы. я как-то вытащил свой древний нубский мега-проЭкт 2002 года и прооптимизировал. Цикл выполнялся 30 мс, после оптимизации 4-5 мс. Это без ускоряющих длл, только правильная логика игры и взаимодействий. А в игре объектов 7-11 тыс одномоментно. |
Ответ: Советы по оптимизации
Да ладно, хватит писькой мериться. )
Без обид, тормоз, но ты реально иногда тормозишь. НИКТО НЕ СОБИРАЕТСЯ ПИКАТЬ 1000 мешей в цикле!!! Цитата:
|
Ответ: Советы по оптимизации
burovalex, без обид, но мал ты еще на тормоза наезжать :)
tormoz, вся фишка в тестах - узнать цену метода. ни больше - ни меньше. если методы быстрые - то можно меньше думать - больше прыгать. если методы медленные надо извращаться. Цитата:
|
Ответ: Советы по оптимизации
holydel, ты как плагиат - тоже самое, только своими словами, без обид :-D
А на тормоза я и не наезжаю, просто пытаюсь объяснить, что смысл теста - это не кривые руки ) |
Ответ: Советы по оптимизации
Эти тесты 100500 раз уже сделаны и пережеваны. У меня батхерт, когда впустую на блитц наезжают.
К слову, еще в 2005 на офсайте проскакивала "грамотная система коллизий и пиков" на длл. И быстрее она была аж на 13% в коллизиях и 5% в пиках. Так что кривизна движка сильно преувеличена. |
Ответ: Советы по оптимизации
Цитата:
И скажи, разве плохо что в теме "Советы оптимизации" появился пример с производительностью EntityPickMode??? |
Ответ: Советы по оптимизации
Мерить производительность ФПС - мягко говоря неправильно. Сделай нормальный тест с замером времени и правильной интерпретацией - похвалим. ;)
|
Часовой пояс GMT +4, время: 16:05. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot