|
09.06.2012, 15:01
|
#61
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: DG3D Engine
Сообщение от MoKa
Не забывай о том что пишешь то ты открытый движок, для разработчика.
|
Движок закрыт в DLL. Просто функции движка позволяют на основе него набросать побыстрому свой каркас, я бы даже сказал не позволяют, а на этом движке необходимо затачивать свой удобный каркас (в PDF есть пример с освещением)... это лишь набор функций, что бы не ковыряться с гапи, а быстро начать делать что-либо... причем будут дополнения в виде bullet, physx, squall , etc.
|
(Offline)
|
|
09.06.2012, 15:52
|
#62
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: C3D Engine
новая версия работает медленнее. в два раза. когда все кубы видны. причем как то странно работает - если просто отъехать от стартовой точки назад - то фпс 70 если смотреть на кубы сверху то фпс 30. wtf?
нет, не так. если ему дать просраться на 5к фпс, то потом при взгляде на все кубики фпс падает до 30-ти. возможно проблема в моих драйверах. да - это стопудово в драйверах дело. аксель себя ведет также - если не дать просраться демке, то на 4к кубах она дает 900фпс вместо 750... странно, надо думать как это дело лечить.
обертка над гапи не должна проигрывать в производительности конструктору типа unity.
|
(Offline)
|
|
09.06.2012, 16:42
|
#63
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
O_o у меня наоборот быстрее (NVIDIA GT240, Intel E3300) 50 - 60 fps давало, вместо прошлой 20-25, я вообще не понимаю как у меня такая маленькая производительность.. я вообще все убирал, и все равно мало FPS.. как ты компилишь? MSVS ? Может какие-то особенные флаги компилятора?
|
(Offline)
|
|
09.06.2012, 17:04
|
#64
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: C3D Engine
я ж написал что ето в моем железе проблемы.
работать стало быстрее. с 60 фпс до 70.
если не давать демке работать на 1000+ фпсах.
я у себя походу sleep-ом буду ограничивать фпс тысячей. а то какая-то фигня творится после того, как видюха или винда поработает на высокой частоте обновления.
|
(Offline)
|
|
09.06.2012, 17:06
|
#65
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
Понятно... конечно странная фигня... у меня Win7 x86, Nvidia - такого глюка нет, специально сейчас проверил...
|
(Offline)
|
|
10.06.2012, 01:31
|
#66
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
ППЦ я не понимаю почему такая задержка
HolyDel:
В ядре:
сначала вызывается scene->draw();
в сцене лежит std::vector<CNode*> _nodes; //это список объектов для отрисовки
кратко, что делает CScene::draw()
...............
glm::mat4 m_view = camera()->matrix_view();//один раз за фрейм получаем матрицу вида
_frustum->CalculateFrustum(m_view);//считаем фрутсум
for(int i=-1;++i<_nodes.size();)//проходим по всем нодам (ентитям) (этот метод цикла быстрей итераторного)
{
CNode* curnode = _nodes[i];//берем 1 раз за итерацию объект массива (так быстрей)
if(curnode->vbo()!=NULL){//если есть геометрия
glm::vec4 cur_pos = curnode->position(true);//определяем позицию (4 столбец из матрицы)
if(_frustum->CubeInFrustum(cur_pos.x,cur_pos.y,cur_pos.z,curnode->vbo()->box()))//эта строка вообще никак не влияет на скорость как ни странно
curnode->drawVBO(m_view); //рисуем геометрию
}
}
.........................
}
вот код CNode::drawVBO
void CNode::drawVBO(glm::mat4 &m_view)
{
if(!_effect || !_visible) return;
_effect->setWorldMatrixSemantic(matrix(true));//тут ничего страшного тупо передача в шейдер не должно тормозить
_effect->setViewMatrixSemantic(m_view);
_effect->setProjMatrixSemantic(APP->render()->projection());
_effect->setTexture0Semantic(_texture);
_shader_queue->bind();//тут пусто, это передача кастомных параметров в шейдер
while(_effect->pass())//тут проходим по всем проходам, тоже ни чего мудреного проход один в шейдере
{
_vbo->drawBuffers();//рисуем буфферы на гапи
}
//_shader_queue->unbind();
}
код отрисовки буферов на гапи
if(_vbuffer && _ibuffer)
{
glBindBufferARB( GL_ARRAY_BUFFER_ARB, _vbuffer );
glVertexPointer( 3, GL_FLOAT, 0, 0 );
if(_nbuffer)
{
glBindBufferARB( GL_ARRAY_BUFFER_ARB, _nbuffer );
glNormalPointer(GL_FLOAT,0,0);
}
if(_tbuffer)
{
glBindBufferARB( GL_ARRAY_BUFFER_ARB, _tbuffer );
glTexCoordPointer( 2, GL_FLOAT, 0, 0 );
}
{
APP->render()->dips_up();
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, _ibuffer);
glDrawElements(GL_TRIANGLES,_cnt_indices,GL_UNSIGNED_SHORT,0);
//glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
}
}
мля!! что тут может тормозить я не понимаю!! я даже бинды убирал, эффект от этого не поменялся.. у мня 4к кубов 40 фпс, axel 255!!! юнити 50, все остальное 80
|
(Offline)
|
|
10.06.2012, 02:30
|
#67
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: C3D Engine
ты передаешь три матрицы. а я одну. и в шейдере их множишь получается (для каждой вершины) а я один раз, правда на цпу, так быстрее.
ты проверку на фрустум делаешь по боксу, а я по сфере, так быстрее.
ну и насчет сеток - у тебя один vbo/ibo на сцену, или 4096? у меня один, и у блица с хорсом тоже, за остальные не скажу. хотя это не так сильно влияет.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
10.06.2012, 02:43
|
#68
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
спасибо что посмотрел код
ты передаешь три матрицы. а я одну. и в шейдере их множишь получается (для каждой вершины) а я один раз, правда на цпу, так быстрее.
я пробовал - дольше!
ты проверку на фрустум делаешь по боксу, а я по сфере, так быстрее.
имхо - меньше точность
неужели одного буффера хватит на кучу сложных объектов? O_o
один буфер на всё, дал прирост 5 фпс... ниочем
|
(Offline)
|
|
10.06.2012, 02:47
|
#69
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: C3D Engine
нет. тут дело в том что объекты то одинаковые.
странно. должно быть быстрее и это еще на кубах. а если будет на каких-нибудь хайполи модельках, да на каком нибудь интегрированном интеловском говнеце, то твой метод отрисовки сразу начнет очень сильно проигрывать.
ну и множить, надо понятное дело один раз.
т.е. viewproj считаем один раз и model на нее множим столько раз, сколько нод.
|
(Offline)
|
|
10.06.2012, 02:53
|
#70
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
т.е. viewproj считаем один раз и model на нее множим столько раз, сколько нод.
хм - не подумал... спасибо
upd: не дало результата... фпс остались такие же
|
(Offline)
|
|
10.06.2012, 03:22
|
#71
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: C3D Engine
ну тогда хз ))
надо значит профайлером пройтись.
|
(Offline)
|
|
12.06.2012, 02:30
|
#72
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
УРААААААААА 233 FPS ксорс дает 95 на моем железе... Там с CG заморочки были и еще, тут кое какие сортировки сделал, чтоб один и тот же шейдер не биндить 4096 раз
400 человечков, с анимацией
4096 кубов
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо pozitiffcat за это полезное сообщение:
|
|
12.06.2012, 12:17
|
#73
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: C3D Engine
во, респект! теперь давай выкладывай бинарники чтобы на разном железе потестить ))
анимаци костаня или морфная?
|
(Offline)
|
|
12.06.2012, 15:29
|
#74
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
анимация морфная, бинарники вечером выложу, там кое че подправить надо для интелектуальной сортировки по нескольким критериям, плагин для макса 2010 в комплекте, если от плагина сорцы надо, пиши. У меня плагин для макса любую анимацию в морф делает. Все преобразования на CPU идут через SSE2, так что быстро )))
|
(Offline)
|
|
12.06.2012, 17:12
|
#75
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:30.
|