Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Проекты > Проекты C++

Ответ
 
Опции темы
Старый 10.08.2012, 01:26   #376
HolyDel
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
wolfhound512 (10.08.2012)
Старый 10.08.2012, 01:34   #377
jimon
 
Сообщений: n/a
Ответ: axelynx

HolyDel
Давай меряцо, решил написать тест на 4к кубиков, 420 моих фпс против 365 твоих.

Редактор мой не сильно расчитан на 4к нодов (привет qml, точнее пока, скоро руками рендер делать буду), ибо казуалочкам хватает под 1к объектов, но пережили. В render pipeline пришлось макросами включать насильное кеширование всех стейтов, в обычных сценах оно не сильно влияет (там по разнообразнее всё же), а тут достаточно каждый дип устанавливать шейдер и VAO и уже вместо 420 фпс получаем всего 60, втф нвидиа, втф.

ps. s0.bin - вот и все 4096 объектов сцены, запечены сразу, но все model, model * view, model * view * prj матрички считаются, те 12k умножений матриц на кадр
Вложения
Тип файла: zip jimon_4k_test.zip (687.5 Кб, 384 просмотров)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (10.08.2012)
Старый 10.08.2012, 01:41   #378
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: axelynx

давай
выведи плиз в заголовок окна фпс (или еще как нибудь).

твоя демка запускается под вайном в убунте. но я не могу тут запустить фрапс ((
(Offline)
 
Ответить с цитированием
Старый 10.08.2012, 01:56   #379
jimon
 
Сообщений: n/a
Ответ: axelynx

Сообщение от HolyDel Посмотреть сообщение
давай
выведи плиз в заголовок окна фпс (или еще как нибудь).

твоя демка запускается под вайном в убунте. но я не могу тут запустить фрапс ((
вывожу фпс в консоль приложения раз в 360 кадров

...
без фрапса пиковый рекорд - 513 фпс, средний стал 460-470
Вложения
Тип файла: zip jimon_4k_test_r2.zip (688.5 Кб, 404 просмотров)
 
Ответить с цитированием
Старый 10.08.2012, 02:06   #380
HolyDel
 
Регистрация: 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 за это полезное сообщение:
FREE MAN (10.08.2012), is.SarCasm (10.08.2012), pax (10.08.2012)
Старый 10.08.2012, 07:20   #381
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: axelynx

Объединяйтесь! пишите вместе двигло, порвите всех нафиг!
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 6 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
FREE MAN (10.08.2012), HolyDel (22.08.2012), is.SarCasm (10.08.2012), mauNgerS (10.08.2012), pozitiffcat (10.08.2012), Randomize (10.08.2012)
Старый 10.08.2012, 12:11   #382
HolyDel
 
Регистрация: 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
jimon
 
Сообщений: n/a
Ответ: 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
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: axelynx

и все таки - ты для всей геометрии так делаешь?

множишь вершины на матрицу на процессоре?
(Offline)
 
Ответить с цитированием
Старый 10.08.2012, 14:09   #385
jimon
 
Сообщений: n/a
Ответ: axelynx

Сообщение от HolyDel Посмотреть сообщение
и все таки - ты для всей геометрии так делаешь?

множишь вершины на матрицу на процессоре?
с чего ты вообще взял что я множу вершины на матрицу ? я написал что двиг делает за кадр 12k умножений матриц, если представить что мы не будем считать никаких матриц, а будем только множить вектора позиций на матрички то это 4096 * 8 = 32768 операций, что уже не совпадает

я считаю на CPU только MVP матрицу (model_view_prj) ибо для мобильников множить три матрицы в вертексном шейдере довольно медленно, сами же вершины геометрии множатся на матрицу в вертексном шейдере, кроме спрайтов и текстов, чтобы рисовать спрайты и тексты вместе за один дип приходится их складывать в один батч, при добавлении их в батч я и множу их вершины на MV матрицу (model_view), умножение на Prj матрицу уже идет в шейдере для всего батча (ессно если две камеры рисуют разные спрайты то это уже будет 2 дипа)
 
Ответить с цитированием
Старый 10.08.2012, 16:06   #386
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: axelynx

чтобы рисовать спрайты и тексты вместе за один дип приходится их складывать в один батч
кубы ты тоже складываешь в батч? или все же он рисуется за 4096 дипов?
если складываешь в батч только кубы в этой демке - то это InstancedEntityCost.
если рисуешь каждый своим дипом или складываешь в батч любую геометрию, или это автоматом определяется (например судя по количеству вершин) - то это EntityCost.
ибо Entity могут быть с разными шейдерами, текстурами, блендингом и т.д.

в общем, если пользователь просто создает ентити, а оно батчится автоматом, то ето EntityCost, если пользователь создает специальную группу, или еще там как-то, то это InstancedEntityCost.
(Offline)
 
Ответить с цитированием
Старый 10.08.2012, 16:26   #387
jimon
 
Сообщений: n/a
Ответ: axelynx

Сообщение от HolyDel Посмотреть сообщение
кубы ты тоже складываешь в батч? или все же он рисуется за 4096 дипов?
если складываешь в батч только кубы в этой демке - то это InstancedEntityCost.
если рисуешь каждый своим дипом или складываешь в батч любую геометрию, или это автоматом определяется (например судя по количеству вершин) - то это EntityCost.
ибо Entity могут быть с разными шейдерами, текстурами, блендингом и т.д.
у меня геометрия не складывается в батчи, потому в демке 4096 дипов, можно юзать инстансинг, но он :
1) появился только в opengl es 3.0
2) я не нашел ему применения в реальных играх

ps. если реально в такой демке сделать разные материалы и текстуры - видеодрайвер умрёт, можешь проверить
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (10.08.2012)
Старый 10.08.2012, 16:29   #388
den
Дэвелопер
 
Аватар для den
 
Регистрация: 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
HolyDel
 
Регистрация: 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
den
Дэвелопер
 
Аватар для den
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (10.08.2012)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 16:19.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com