|
29.05.2012, 11:41
|
#46
|
Знающий
Регистрация: 01.04.2011
Адрес: Екатеринбург
Сообщений: 232
Написано 48 полезных сообщений (для 82 пользователей)
|
Ответ: C3D Engine
Я как понял PhysX не скоро....
|
(Offline)
|
|
29.05.2012, 14:14
|
#47
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
Да и тем более я на две недели в отпуске и ничего сейчас не делаю, а в инет выхожу с планшетного ПК ))))
|
(Offline)
|
|
07.06.2012, 15:38
|
#48
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
Поменял концепцию движка.
Теперь он работает под openGL 2.1 (ибо по моим тестам быстрее directx 9), попрежнему остался казуальным. Только теперь в ядре не будет встроеной физики звука и так далее. Все это будет отдельными библиотеками. И пользователь сам может выбрать что ему использовать. В качестве звука, физики пользователь сможет использовать различные движки, все будет зависеть от того какие dll он подключит к проекту.
Теперь в качестве шейдеров будет использован CG. Никаких FFPшных функций не используется. Нет стандартного шейдера, конечно есть в комплекте пример, но программист свой шейдер делает сам и назначает его по умолчанию, и именно он будет использоваться в программе при создании объектов, пока что какого-то конкретного ToDo нету. Названия семантик, тоже можно менять. Возможность программировния техник в шейдере, под различные версии GLSL.
ТЫТРУБА
Будет детальный туториал
это будет последние кардинальные изменения... я окончательно определился с концепцией
Последний раз редактировалось pozitiffcat, 07.06.2012 в 21:57.
|
(Offline)
|
|
08.06.2012, 17:08
|
#49
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
Build 131 - только графическая составляющая + Tutorial из 5 примеров и PDF. Не все возможности описаны в туториале...
скачать движок
PDF
В туториале описывается как создать проект, как рисовать объекты, как написать первый шейдер, как настраивать, как создать модель (сетку) из кода и анимацию (например для написания своего загрузчика), как сделать источник освещения.
Движок предназначен для пользователей среднего уровня. На основе него можно написать свой каркас.. это и есть концепция. Designer Casual Graphics 3D engine.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.06.2012, 17:16
|
#50
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: C3D Engine
очень низкий уровень создания меша.
проще писать на гапи.
что думаешь о мобильных платформах?
почему cg а не glsl, если у тебя не мультигапи?
ну и почему capi, если пишешь на плюсах? intellisens хороший помощник в написании кода...
а вообще респект, что-то уже есть
примеры, желательно сделать так, чтобы они собирались в папку с бинарниками движка. чтобы небыло мути со всякими не найдена dg3d.dll.
getCamera() - в движке не больше одной камеры?
у тебя очень высокая цена ентити, сопостовима с юнити, в два раза выше чем у блица, в три раза выше чем у хорса и в 10 раз выше чем у меня. и, судя по всему, нет даже проверки на фрустум камеры. надо пилить.
|
(Offline)
|
|
08.06.2012, 19:33
|
#51
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
Да фрустума еще нет. CG потому что удобно и похоже на HLSL + затачивается под разные версии шейдеров, камерой может выступать любая нода, достаточно вызвать setCamera. Как ты добился такой скорости? HolyDel У тебя даже без фрустума скорость офигенная!
capi, для дальнейшего заюзывания в разных ЯП.
Про мобильные платформы даже не читал... хотя тестировть есть на чем... но как-то не очень заинтерисован...
|
(Offline)
|
|
08.06.2012, 19:56
|
#52
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: C3D Engine
Как ты добился такой скорости?
|
были кучи бенчмарков.
в двух словах ничего лишнего. нет необходимости переключать стейт - не переключаю стейт. нет необходимости счтитать матрицу - не считаю матрицу. и т.д.
ну и еще:
16 битные индексы.
оптимизация под post TnL кэш
оптимизация под картный 32-м байтам размер аттрибутов вершины
оптимизация по переключениям стейтов (для этой демки не актуально)
или ты про скорость твоей демки на моей машине? тут просто i7 и 460GT.
Последний раз редактировалось HolyDel, 08.06.2012 в 21:50.
|
(Offline)
|
|
08.06.2012, 20:12
|
#53
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
А что дало резкий прирост скорости?
|
(Offline)
|
|
08.06.2012, 20:22
|
#54
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: C3D Engine
ничего не дало)) просто я не делал ничего такого, чтобы скорость резко падала, а ты что то сделал)) или шейдер применяешь на каждый дип, или еще что то в етом роде.
быстрее чем рендерит железо рендер все равно идти не будет.
ну и профайлер наш друг, да.
|
(Offline)
|
|
08.06.2012, 22:00
|
#55
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
Что-то переключение стейтов совсем не влияют на FPS...
|
(Offline)
|
|
08.06.2012, 22:04
|
#56
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: C3D Engine
ну ты бы показал код рендера
или профайлером посмотри. не может тупая отрисовка быть такой долгой, где то ты что-то лишнее делаешь
|
(Offline)
|
|
08.06.2012, 22:18
|
#57
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
//отрисовка сцены
for(int i=0;i<_nodes.size();i++)
{
if(!_nodes[i]->vbo()) continue;
float px = 0; float py= 0; float pz = 0;
_nodes[i]->position(px,py,pz,true);//узнаю глобальные координаты (тут тормозит перемножение матриц парента и своей, прям сильно, хз че делать)
if(_frustum->CubeInFrustum(px,py,pz,_nodes[i]->vbo()->box()))//если попадает во фрустум
_nodes[i]->drawVBO(m_view, m_projection);//отрисовка
//отрисовка сетки
//там есть места где сематники в шейдер задаются, но они не влияют на скорость я пробовал коментировать. компилял интеловским компилятором, тоже скорости не дало.. я в тупике, а код твоего движка не понял, да и лень разбираться...
void CVBO::drawBuffers()
{
if(g_last_drawed_vbo == this)//это если сетка назначена на несколько объектов (быстрее не становится все равно)
{
APP->render()->dips_up();
glDrawElements(GL_TRIANGLES,_cnt_indices,GL_UNSIGNED_INT,0);//short быстрее не делает
return;
}
if(_vbuffer)
{
glBindBufferARB( GL_ARRAY_BUFFER_ARB, _vbuffer );
glVertexPointer( 3, GL_FLOAT, 0, (char *) NULL );
}
if(_nbuffer)
{
glBindBufferARB( GL_ARRAY_BUFFER_ARB, _nbuffer );
glNormalPointer(GL_FLOAT,0,(char*)NULL);
}
if(_tbuffer)
{
glBindBufferARB( GL_ARRAY_BUFFER_ARB, _tbuffer );
glTexCoordPointer( 2, GL_FLOAT, 0, (char *) NULL );
}
if(_ibuffer)
{
APP->render()->dips_up();
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, _ibuffer);
glDrawElements(GL_TRIANGLES,_cnt_indices,GL_UNSIGNED_INT,0);//short быстрее не делает
//glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
}
g_last_drawed_vbo = this;
//glDisableClientState(GL_VERTEX_ARRAY);
//glDisableClientState(GL_NORMAL_ARRAY);
//glDisableClientState(GL_TEXTURE_COORD_ARRAY);
//glDisableClientState(GL_ELEMENT_ARRAY_BUFFER_ARB);
}
}
пользуюсь математической библиотекой glm, включил поддержку sse2, fps выросло всего на 4 + матрицы по ссылке стал передавать... в итоге на 10 fps прирост, мало
поднял fps с 25 до 60 при 4096 кубиках - ксорс на моем железе дает 90, axelinx 250... Unity 60
заметил снижает скорость передача матрицы в шейдер.. а как быть? один шейдер 4096 кубов, следовательно 4096 передач параметров для каждого куба.. как это оптимизировать?
Последний раз редактировалось pozitiffcat, 09.06.2012 в 00:07.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
09.06.2012, 01:41
|
#58
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
Обновил PDF-ку, добавил урок работы с камерами, рендером в текстуру и пост-эффектами
PDF
Движок - билд 132
Оптимизация под SSE2
добавлен frutsum
некоторые оптимизации ядра
|
(Offline)
|
|
09.06.2012, 03:56
|
#59
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: C3D Engine
Не забывай о том что пишешь то ты открытый движок, для разработчика. Следственно нужна качественная документация, и продуманная архитектура и интерфейс, также дружелюбные паттерны. Очень важно то как выглядит код, имена функций и т.п. Этим сейчас многие берут сильно вверх, а именно дружелюбностью. В пример возьми node.js, на нём начять кодить как 2 пальца. И документация содержит тела самих функций - что более чем объясняет какие данные нужны на входе, и как она работает. Также это заставляет разработчика движка следить за кодом очень критично, что требует больше времени, но ведёт к более элегантным решениям.
Также тупо Враппер ГАПИ никому не нужен. Возьми например Unity - это нечто совсем иное, и народу ОЧЕНЬ нравится, новый подход, по другому нужно мыслить - такое продумать не так и просто..
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
09.06.2012, 12:18
|
#60
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: C3D Engine
я хз. я тоже передаю матрицу трансформации на каждый дип, правда одну.
возможно, можно как-то оптимизировать через UBO, но это уже не совсем то. такие вещи скорее нужно будет делать на уровне пользовательского кода через инстансинг.
поднял fps с 25 до 60 при 4096 кубиках
|
молодец! более чем в два раза ускорил.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:54.
|