По просьбам, набросал демку, что-то вроде краш теста
. 1000 кубов, 6000 граней или 12000 треугольников, с динамическими текстурами, динамическими объектами, визуализацией culling алгоритмов и т.д.

Управление:
- Key “Space” - animation on/off;
- Key “E” - show edge on/off;
- Key “Q” - change quality;
- Остальное, как всегда + управление камерой с клавиатуры.
Впечатляет, правда у меня FPS 90++ при любых ракурсах даже когда видно все кубы
. Наверно можно и до двух тысяч кубов увеличить “краш тест”, думаю в районе 50FPS тогда будет. Разница действительно поразительная по сравнению с аналогами.
Вы видимо успели посмотреть не ту версию демки (вчера не ту залил). Вообще это не совсем точный “краш тест”, надо проводить тест производительности без дополнительной нагрузки от динамических текстур, сами динамические текстуры съедают до 30% ресурсов.
Ладно потом добавлю демку с персонажем на 18000 треугольников.
Ну вот, совсем другое дело!
FPS предсказуемо упал до 20.
Скажите, а вы специально их подальше раздвинули и ограничили возможность отлететь камерой?
Чтобы все 1000 кубов одновременно сложно было посмотреть?
Не удалось посмотреть демо :(, вылетела ошибка:
Error: Error #1502: Сценарий выполнялся дольше периода ожидания, установленного по умолчанию на 15 секунд.
at infinity3D.engine.types::Hash/get length()
at infinity3D.engine.core.scene::Scene3D/statsOperation()
at infinity3D.engine.core.scene::Scene3D/calculateStats()
at infinity3D.engine.core.scene::Scene3D/meshOperation()
at infinity3D.engine.core.scene::Scene3D/objectOperation()
at infinity3D.engine.core.scene::Scene3D/calculate()
at infinity3D.engine.core.scene::Scene3D/onEnterFrame()
У меня min 42FPS. Вы, я вижу негативно настроены. Хорошо, покажите на любом другом движке 1000 динамических кубов с динамическими текстурами или хотя бы 200
! Это насчет предсказуемости.
Вы представляете как будут выглядеть 1000 кубов, если они плотно будут стоять? Это будет просто каша!
Используйте скролл мышки и увидите все кубы сразу.
Видимо у вас слабый комп., не успевает выполнить действия. Это все же своего рода “краш тест” => он может не работать на слабых машинах.
danVer, это для вас:
- Вжик! - сказал Infinity3D и распилил 6000 полионов.
- У-у, б**! - сказали суровые русские мужики и засунули в Infinity3D пять миллионов полигонов.
- Хррр… - сказал Infinity3D и показал 10 FPS.
- А-а, б**! - сказали суровые русские мужики и пошли программировать в Sandy3D.
Алексей, при всем моем уважении к вам у вас не верно подсчитано Render Time. Например показывает 24 FPS, RenderTime 15 ms. Должно быть 1000/24 = 41 ms!!! А то получается что процессор на полную загружен 24 кадра в секунду, это 41 милисекунда, 15 из них тратится на рендеринг, на что тратится 41 - 15 ???. Вы наверно делаете так:
var time:int = getTimer();
//rendering process
var renderTime:int = getTimer() - time;
Но это время лишь выполнения кода, вы думаете флеш плеер сразу рисует то что вы ему “отправили” на отрисовку? Получается что нет. Скорее всего он рисует как только выполнит предыдущие операции рисования… Изза этого тормозит проц, изза этого падает фпс. И поэтому Render Time ошибочное число. Исправьте пожалуйста иначе это вводит в заблуждение ))
Render Time - это время математических операций и это время не имеет отношение к времени отрисовки.
Разумеется я знаю когда и как flash рисует. Render Time - не ошибочно, есть и второй параметр Draw Time. И если выводить два разных по значению свойства в одном, вот это будет ошибочным.
Стоит учитывать, что я показываю скорость работы движка, а не скорость работы flash, а тут важно именно скорость конвейерной обработки всей сцены - вот это и показывает Render Time (собственно так же показывают счетчики и в других движках).
Да вы правы, что и Draw Time тоже полезно видеть при отладки проекта. Хорошо в новой версии сделаю публичным Draw Time.
Все демки опубликованы при frameRate = 100, в реальных проектах публикуют от 30 до 60, что и снижает загрузку процессора 2-3 раза. Т.к. уменьшает количество обновлений в секунду, т.е. мат. перерасчетов и отрисовку, все равно не заметную человеку (частота восприятия визуальной информации у человека 24 кадра в секунду).
P.S. Радует, что хоть кто-то понимает как считаются Render Time, Draw Time и FPS.
Best, спасибо за комментарии и за ваше адекватное мнение, подкрепленное правильным пониманием процессов работы flash player’a.
Не зачто! Я всегда рад подсказать. Да это очень полезная инфа будет если сразу и рендер тайм и время флешь отрисовки будет показываться одновременно. Т.к. и то и другое очень важно )
Обновил демку, переписан счетчик, теперь выводит Draw Time.
Есть правда несколько нюансов:
Допустим опубликовали ролик при frameRate = 100 у нас Render Time = 3ms и реальное время отрисовки заняло 4ms, но счетчик в Draw Time покажет 7ms (хотя должен 4ms, т.е. больше чем реально затрачено времени), т.к. осталось еще 3ms неизрасходованных и flash ждет пока они не пройдут и только после этого запустит новый кадр.
Если подробно в расчетах представить, то это будет выглядеть так:
1) 1000ms / frameRate (установленный при публикации) = “время на один кадр”;
2) “время на один кадр” - Render Time - Draw Time = лишнее время (т.е. если движок отрисовал быстрее чем за “время на один кадр”, то FPS будет максимум, но Draw Time покажет = 1000ms / frameRate(установленный при публикации))
Примеры:
a)
1) Установили frameRate при публикации равный 100 => “время на один кадр” = 1000/100 = 10ms;
2) Render Time у нас допустим 15ms, а Draw Time 11ms => 15+11 = 26ms, 26ms > 10ms (счетчик выводит правильную информацию) итог: 38FPS;
b)
1) Установили frameRate при публикации равный 30 => “время на один кадр” = 1000/30 = 33.3ms;
2) Render Time у нас допустим 15ms, а Draw Time 11ms => 15+11 = 26ms, 26ms < 33.3ms (счетчик выводит завышенную информацию 11ms + (33.3ms - 26ms) = 18ms) итог: 38FPS, а т.к. максимальное frameRate = 30, то FPS будет = 30;
3) Но стоит обратить внимание, что фактическое время отрисовки у нас 11ms, но показываться будет 11ms + (33.3ms - 26ms) = 18ms (счетчик выводит завышенную информацию, т.к. счетчик ждет нового кадра для расчета затраченного время на отрисовку, т.е. ждем 33.3ms - 26ms = 7ms).
Счетчик добавляет неизрасходованное время выделенное на рендеренг 1 кадра к Draw Time.
Получил 15 FPS под Linux Firefox 3.0.13 и adobe-flashplugin 10.0.15.3
Обновите версию http://get.adobe.com/flashplayer
Ok.
20 FPS Linux Chromium Unstable и adobe-flashplugin 10.0.32.18-1