|
10.08.2012, 01:26
|
#376
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: axelynx
по новой сборке и вопросам wolfhound512
2) Как изменить surface (изменить количество вершин/треуголников) ?
|
surface->Resize(count_trinagles,count_vertices);
3) Если необходимо изменить геометрию объекта в сцене (добавить удалить вершины/треугольники), то нужно удалить entity, удалить surface, и создать все заново?
|
ent->SetGeometry(new_geometry);
4) можно ли задавать параметры вершин списками,а не по одной?
|
SetVerticesPositions(int start_index, int count, const vec3* position) =0;
SetVerticesNormals(int start_index, int count, const vec3* normal) =0;
SetVerticesTangents(int start_index, int count, const vec3* tangent) =0;
SetVerticesTexCoords(int start_index, int count, const vec2* uv, int layer = 0) =0;
SetVerticesColors(int start_index, int count, const vec4* color) =0;
1) Можно изменить направление камеры? Чтобы она смотрела не в -Z, а в +Z? Так как-то привычнее.
|
camera->Projection(fov, aspect, znear, zfar,ST_LEFT_HANDLE);
2) Попробовал решить п.1 следующим образом:
axelynx:ivot* body = _scene->AddPivot();
_camera = _scene->AddCamera();
_camera->SetParent( body );
_camera->Turn( 0, 180, 0 );
И двигать пивот, а не камеру. Но при движении пивота камера почему-то не двигается.
|
теперь будет двигаться. но с повротом камеры все равно пока какая-то фигня.
3) SetRotate() и SetMousePos() не работают.
|
теперь работают
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
10.08.2012, 01:34
|
#377
|
|
Ответ: axelynx
HolyDel
Давай меряцо, решил написать тест на 4к кубиков, 420 моих фпс против 365 твоих.
Редактор мой не сильно расчитан на 4к нодов (привет qml, точнее пока, скоро руками рендер делать буду), ибо казуалочкам хватает под 1к объектов, но пережили. В render pipeline пришлось макросами включать насильное кеширование всех стейтов, в обычных сценах оно не сильно влияет (там по разнообразнее всё же), а тут достаточно каждый дип устанавливать шейдер и VAO и уже вместо 420 фпс получаем всего 60, втф нвидиа, втф.
ps. s0.bin - вот и все 4096 объектов сцены, запечены сразу, но все model, model * view, model * view * prj матрички считаются, те 12k умножений матриц на кадр
|
|
|
Сообщение было полезно следующим пользователям:
|
|
10.08.2012, 01:41
|
#378
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: axelynx
давай
выведи плиз в заголовок окна фпс (или еще как нибудь).
твоя демка запускается под вайном в убунте. но я не могу тут запустить фрапс ((
|
(Offline)
|
|
10.08.2012, 01:56
|
#379
|
|
Ответ: axelynx
Сообщение от HolyDel
давай
выведи плиз в заголовок окна фпс (или еще как нибудь).
твоя демка запускается под вайном в убунте. но я не могу тут запустить фрапс ((
|
вывожу фпс в консоль приложения раз в 360 кадров
...
без фрапса пиковый рекорд - 513 фпс, средний стал 460-470
|
|
|
10.08.2012, 02:06
|
#380
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: axelynx
ubuntu 12.04
i7 2.4GHz
6850M
axelynx - 200
твое - 300
win7 64 bit
i3 2.1 GHz
intel hd 2000
axelynx - 16
твое - 20
win7 64 bit
i7 2600K 3.4Ghz
geforce 460 gt
axelynx (EntityCost) - 760
axelynx (InstancedEntityCost) - 3130
твое - 690
Последний раз редактировалось HolyDel, 10.08.2012 в 16:27.
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
|
|
10.08.2012, 07:20
|
#381
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: axelynx
Объединяйтесь! пишите вместе двигло, порвите всех нафиг!
|
(Offline)
|
|
Эти 6 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
10.08.2012, 12:11
|
#382
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: axelynx
вот и все 4096 объектов сцены, запечены сразу, но все model, model * view, model * view * prj матрички считаются, те 12k умножений матриц на кадр
|
однако в таком случае ты не можешь менять кубам блендинг например.
это все таки не EntityCost скорее InstancedEntityCost.
и да, ты для всей геометрии так делаешь?
|
(Offline)
|
|
10.08.2012, 12:35
|
#383
|
|
Ответ: axelynx
Сообщение от HolyDel
однако в таком случае ты не можешь менять кубам блендинг например.
это все таки не EntityCost скорее InstancedEntityCost.
и да, ты для всей геометрии так делаешь?
|
ну а где можно менять блендинг то ? в udk или cry engine тебе понадобится как минимум переназначить материал, у меня тоже можно переназначить материал в реалтайме, придется заставлять потом двиг ворошить очередь рендера, но менять можно а блиц-way где всё можно менять с ходу - это явно не залог производительности
у меня вся геометрия (вообще вся), это 1 вбо, я посчитал что больше 10 метров геометрии мне особо и не надо, дип происходит с offset-ом в этом vbo (все заранее печется в vao если надо)
всё же это EntityCost, в тесте я 4096 раз продублировал asset_transform и asset_surface, когда в одном экземпляре остались только texture, material, geometry
|
|
|
10.08.2012, 13:12
|
#384
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: axelynx
и все таки - ты для всей геометрии так делаешь?
множишь вершины на матрицу на процессоре?
|
(Offline)
|
|
10.08.2012, 14:09
|
#385
|
|
Ответ: axelynx
Сообщение от HolyDel
и все таки - ты для всей геометрии так делаешь?
множишь вершины на матрицу на процессоре?
|
с чего ты вообще взял что я множу вершины на матрицу ? я написал что двиг делает за кадр 12k умножений матриц, если представить что мы не будем считать никаких матриц, а будем только множить вектора позиций на матрички то это 4096 * 8 = 32768 операций, что уже не совпадает
я считаю на CPU только MVP матрицу (model_view_prj) ибо для мобильников множить три матрицы в вертексном шейдере довольно медленно, сами же вершины геометрии множатся на матрицу в вертексном шейдере, кроме спрайтов и текстов, чтобы рисовать спрайты и тексты вместе за один дип приходится их складывать в один батч, при добавлении их в батч я и множу их вершины на MV матрицу (model_view), умножение на Prj матрицу уже идет в шейдере для всего батча (ессно если две камеры рисуют разные спрайты то это уже будет 2 дипа)
|
|
|
10.08.2012, 16:06
|
#386
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: axelynx
чтобы рисовать спрайты и тексты вместе за один дип приходится их складывать в один батч
|
кубы ты тоже складываешь в батч? или все же он рисуется за 4096 дипов?
если складываешь в батч только кубы в этой демке - то это InstancedEntityCost.
если рисуешь каждый своим дипом или складываешь в батч любую геометрию, или это автоматом определяется (например судя по количеству вершин) - то это EntityCost.
ибо Entity могут быть с разными шейдерами, текстурами, блендингом и т.д.
в общем, если пользователь просто создает ентити, а оно батчится автоматом, то ето EntityCost, если пользователь создает специальную группу, или еще там как-то, то это InstancedEntityCost.
|
(Offline)
|
|
10.08.2012, 16:26
|
#387
|
|
Ответ: axelynx
Сообщение от HolyDel
кубы ты тоже складываешь в батч? или все же он рисуется за 4096 дипов?
если складываешь в батч только кубы в этой демке - то это InstancedEntityCost.
если рисуешь каждый своим дипом или складываешь в батч любую геометрию, или это автоматом определяется (например судя по количеству вершин) - то это EntityCost.
ибо Entity могут быть с разными шейдерами, текстурами, блендингом и т.д.
|
у меня геометрия не складывается в батчи, потому в демке 4096 дипов, можно юзать инстансинг, но он :
1) появился только в opengl es 3.0
2) я не нашел ему применения в реальных играх
ps. если реально в такой демке сделать разные материалы и текстуры - видеодрайвер умрёт, можешь проверить
|
|
|
Сообщение было полезно следующим пользователям:
|
|
10.08.2012, 16:29
|
#388
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: axelynx
Вообщем либу собирать не стал (уж больно она огромная), использовал уже собранную. Собираю проект. Собрался.
Код:
#include <axelynx/axelynx.h>
using namespace axelynx;
int main()
{
Engine *eng = Engine::Init();
eng->Free();
return 0;
}
Выход в консоль:
FILENAME FILENAME FILENAME:/
|
плюс ещё три не читаемых символа
лог создался, но он пустой.
ЧЯДНТ?
|
(Offline)
|
|
10.08.2012, 16:34
|
#389
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: axelynx
у меня геометрия не складывается в батчи, потому в демке 4096 дипов
|
а, ну тогда нет вопросов тогда респект
ps. если реально в такой демке сделать разные материалы и текстуры - видеодрайвер умрёт, можешь проверить
|
верю
Den
все правильно сделал.
что попросил движок - то он и сделал.
инициализировался и тупо закрылся.
хочешь что-то увидеть - создай окно.
#include <axelynx/axelynx.h>
using namespace axelynx;
int main()
{
Engine *eng = Engine::Init();
Window *wnd = eng->AddWindow(512,512);
while(wnd->isRunning())
{
wnd->Flip();
}
eng->Free();
return 0;
}
|
(Offline)
|
|
10.08.2012, 16:47
|
#390
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: axelynx
Сообщение от HolyDel
Den
все правильно сделал.
что попросил движок - то он и сделал.
инициализировался и тупо закрылся.
хочешь что-то увидеть - создай окно.
#include <axelynx/axelynx.h>
using namespace axelynx;
int main()
{
Engine *eng = Engine::Init();
Window *wnd = eng->AddWindow(512,512);
while(wnd->isRunning())
{
wnd->Flip();
}
eng->Free();
return 0;
}
|
чёрное окошко, всё норм.
Лог:
succers: 512 XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0" after 2466 requests (2466 known processed) with 0 events remaining.
это нормально?)
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:22.
|