forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты C++ (http://forum.boolean.name/forumdisplay.php?f=56)
-   -   C3D Engine (http://forum.boolean.name/showthread.php?t=16433)

Mhyhr 02.08.2012 18:46

Ответ: C3D Engine
 
По поводу блума:
Смотреть в скайбокс: 27 фпс
Сцена: 22 фпс
Конфиг в подписи.

Кстати позиция камеры с клавиатуры не обновляется пока не используешь мышь.
По поводу Андроидов - готов потестить на Sensation (Adreno 220 , ЦП 2*1.5 ггц)

St_AnGer 02.08.2012 18:57

Ответ: C3D Engine
 
тест блума на проце Intel Core i3-530 2.93 GHz на встроенном видео выдаёт стабильно 30-33 фпс, куда бы не смотрела камера

pozitiffcat 02.08.2012 19:28

Ответ: C3D Engine
 
Цитата:

Сообщение от Mhyhr (Сообщение 235034)
Кстати позиция камеры с клавиатуры не обновляется пока не используешь мышь.
[/offtop]

да девайс на адрено есть я тестил, с блумом не юзабельно на этой сцены, там саму сцену оптимизировать надо, а я позицию камеры и не делал что бы обновлялась с клавиатуры вроде...

pozitiffcat 02.08.2012 19:55

Ответ: C3D Engine
 
Код:

//работа с партиклами "дым"
class ParticleCallback : public ocge::IParticleCallback
{
public:
        virtual ocge::IParticleProperties & onLoad(ocge::IParticleProperties &properties)
        {
                properties.scale = 10;
                properties.alpha = (float)(rand() % 100) / 100.0;
                properties.position = glm::vec3(properties.x/5.0,5.0-properties.alpha*5.0,properties.y/5.0);
                return properties;
        }

        virtual ocge::IParticleProperties &onProcess(ocge::IParticleProperties &properties)
        {       
                properties.color = glm::vec3(properties.alpha*0.3, properties.alpha*0.3, properties.alpha*0.3);
                properties.alpha -= 0.5 * 0.001;
                if(properties.alpha <= 0) properties.alpha += 1.0;
                properties.position.y = 5.0-properties.alpha*5.0;
                return properties;
        }
};

//создание партиклов
....................
ocge::IParticleSystem* psystem = smgr->createParticleSystem("myPS",engine->createTexture("smoke.oi"),10*10, new ParticleCallback());
psystem->setActive(true);
....................


pozitiffcat 02.08.2012 20:02

Ответ: C3D Engine
 
Моя сцена на nvidia gt240 дает 147 fps.

помню боролся с ксорсом, когда писал tower defense, сцена давала 90 с чем-то...

MiXaeL 02.08.2012 20:28

Ответ: C3D Engine
 
450 на gtx470

Spy4433 03.08.2012 00:25

Ответ: C3D Engine
 
307 в кадре и 360 конфигурация ПК в подписи

pozitiffcat 07.08.2012 16:39

Ответ: C3D Engine
 
Новый тест для андроид устройств. Оптимизированная сцена. (группироака мешей в один буффер вершин, по материалам, на уровне движка, увеличило 35% производительность у меня)
http://rghost.ru/39619958 APK
http://rghost.ru/39620226 media.zip класть в /sdcard/ocge/ (не в /mnt/sdcard/ocge), я еще не поправил автоопределние...
на адрено 200 ровно 30 фпс. Проц 600 мгц

moka 07.08.2012 17:02

Ответ: C3D Engine
 
30 Mb.... много не?
Тем более для мобилок.

FPS: 49 - 51
Используй Notifications чтобы хотя бы сообщить что он не нашёл медию.

Имхо, для Tegra 3, твой движёк слиииишком медленный, для такой мелкой сцены.

pozitiffcat 07.08.2012 17:15

Ответ: C3D Engine
 
Ну может быть.. тока хз куда еще больше оптимизировать.. а проблемы с медией это мелоч, это очень легко решаемо, просто не до этого.
Спасибо за тест
З.Ы. в медии лежит левел, который я для компа делал, там текстуры некоторые по 16 метров =) в зипе поменьше...
MoKa, а ты пробовал еще чьи нибудь движки? Просто интересно, как с другими производительность... просто я не пробовал, не в курсе...

moka 07.08.2012 18:07

Ответ: C3D Engine
 
Да можно производительность тестить и на PC, сравнивая аналогичные сцены например с axelynx.

Mhyhr 07.08.2012 18:22

Ответ: C3D Engine
 
FPS:39
Adreno 220,
1.6*2 ггц
960x540

pozitiffcat 07.08.2012 20:23

Ответ: C3D Engine
 
451 fps моя сцена выдала у меня на pc с nvidia gt240. думаю это офигенно, потому что на ксорсе помню, выдавало 90-120

pozitiffcat 07.08.2012 20:42

Ответ: C3D Engine
 
Устройство на 1ггц mali400 800x480 выдоло 35 fps
p.s. 600MHz Adreno 200 480x320 - 30 fps

HolyDel 07.08.2012 21:44

Ответ: C3D Engine
 
galaxy note (android 4.0.3) 32/33 фпс.

pozitiffcat 07.08.2012 22:04

Ответ: C3D Engine
 
короче примерно на всех одинаково, разница только в разрешении
хм. на Galaxy Note тоже mali400

HolyDel 07.08.2012 22:07

Ответ: C3D Engine
 
но зато разрешение 1280 х 800.

moka 08.08.2012 13:38

Ответ: C3D Engine
 
На HTC One X: 1280 x 720
По мне так такая сцена не может выдавать такой низкий FPS.
Хотя если сделать 3 теста, совсем чуток моделек, затем как сейчас, и ещё одну с огромным количеством, глянуть на результаты, и сравнить с другими движками - как падает там FPS по пути каждого теста. Может у тебя вес обработки объектов слишком тяжёлый..

pozitiffcat 08.08.2012 14:52

Ответ: C3D Engine
 
Дело в том, что fps особо то и не падает, он просто маленький на андроиде... может там какое ограничение? Я читал, что система специально fps режет в GUI до 30ти, может это как-то связано.

upd
Сделал автоматическое прописывание пути к карте памяти. Сделал фц-ию drop для основных объектов которые можно дропать. drawBloom из коробки. Все что касается рендера в текстуру, у меня лично на adreno работает с артефактами, пробовал и FBO и glCopyTexImage2D, результат - артефакты.
Пошел дописывать книгу (краткий мануал), выложу бету, кому не лень можете побаловаться поискать баги.

moka 08.08.2012 16:41

Ответ: C3D Engine
 
Артефакты текстуры, не связано ли это с размером буфера и текстуры?
Ограничений как бы нету, но там есть на самом деле свой прикол с тем как фпс может прыгать. В 4.1 они синхронизировали потоки инпута и рендера, таким образом улучшив и отклик и фпс.

Я делал демки, был фпс выше 60 в простых сценах, так что нету там ограничения.

pozitiffcat 08.08.2012 16:59

Ответ: C3D Engine
 
на PC у меня за 500-600 зашкаливает моя сцена со всякими там блумами и тенями. А на андроиде 30 любая сцена.
Насчет размера буфера текстуры.. я с ним игрался, эффекта не дало.
Демки ты на андроиде делал?

moka 08.08.2012 17:28

Ответ: C3D Engine
 
Демки делал на Java, под Android угу.
Насчёт размеров, они кратные 2ум?

pozitiffcat 08.08.2012 17:37

Ответ: C3D Engine
 
Кратны.
Сделал куб выдал 45 fps. Может из-за того что одно ядро?
Ведь на PC скорость хорошая. но я еще glFinish добавил, говорят дает прирост, типа устройство не простаивает зазря ждав вертикальную синхронизацию (ИМХО бред для андроида, но вдруг помагает)
А есть собраный apk потестировать?

moka 08.08.2012 18:14

Ответ: C3D Engine
 
Дома гляну..

HolyDel 08.08.2012 18:26

Ответ: C3D Engine
 
у тебя float или half-float?

pozitiffcat 08.08.2012 21:07

Ответ: C3D Engine
 
float, а как это регулируется?

HolyDel 08.08.2012 21:13

Ответ: C3D Engine
 
32-х битные считаются на скалярном процессоре
все, что ниже - на векторном.

забавно, что ты ето не знал :)
если все же надумаешь писать общий движок - говори :)

pozitiffcat 09.08.2012 16:09

Ответ: C3D Engine
 
Собрал дистриб
ЗЕРКАЛО
В комплекте:
  • дока в pdf ( в дальнейшем doxygen когда закончу комментировать код)
  • экспортер из макса
  • конвертер изображений тут: http://malcdevelop.ru/uploads/imageconv.zip
  • примеры для винды и андроида
  • медия для экспериментов
  • мастер проектов для eclipse indigo
Кто будет юзать и захочет что-то отписать, то писать либо сюда, либо в форум: http://forum.malcdevelop.ru/

pozitiffcat 14.08.2012 22:36

Ответ: C3D Engine
 
Готовлю демо проект к движку. Это будет маленькая игра на выживание, на обоих платформах Windows и Android

Mhyhr 15.08.2012 01:09

Ответ: C3D Engine
 
Поглядел.
Понравился pdf. Есть немного орфограф. ошибок но не суть. Callback везде удивил.
Проект под vs скомпилился с первого раза, всё сразу заработало. Это круто.

Можно ли рисовать в свои окна и виджеты. Например в Qt виджет, зная hwnd и его размеры?

pozitiffcat 15.08.2012 09:44

Ответ: C3D Engine
 
Пока нельзя. но это в самых ближайших планах. я сейчас зантмаюсь продвижением у буржуев и опьимизацией еще там в экспортере надо сделать автоматическую конвертацию изображений, а то вручную приходится материал править. на gamedev.net людям тоже понравилось. Всем спасибо кто пробует движок.

Жека 17.08.2012 11:36

Ответ: C3D Engine
 
Ура! Я смог скомпилить у себя для андроида версию (всего-то надо было сдк обновить).
Фпс не выводятся, ну да ладно.
Код лаконичный.
+1 :)

Жека 18.08.2012 22:14

Ответ: C3D Engine
 
Разобрался, нашёл отрывок из книжки про нативную разработку, надо было сконвертить проект в с++.
pozitiffcat, научи меня как в Eclipse прописать ndk-build или ссылкой на инфу поделись - чтобы при запуске эклипс сам компилил либу и джава-прогу.
Я сравнил свойства проектов примеров из ндк с твоим и заметил, что у тебя есть в списке билдеров CDT Builder, как ты его добавил, что там за параметры? И в твоём проекте есть разделы с настройками с++, видимо появились при добавлении CDT.
Помоги разобраться.

pozitiffcat 20.08.2012 11:21

Ответ: C3D Engine
 
Долго не садился за комп, круто что сам разобрался. Фпс не выводится, потому что встроеной функции нет. Создаешь шрифт, и считаешь фпс по дельта таймингу.
Вот функция которой пользуюсь я
Код:

void drawfps()
{
        static ocge::IFont* font = 0;
        if(!font)
        {
                font = engine->createFont();
                font->loadTexture("bigfont.oi", 384);
        }
        static int FPS = 0;
        static int calcedFPS = 0;
        static float time = 0;
        static int dips = 0;
        static int tris = 0;
        time += engine->getDeltaTime();
        calcedFPS++;
        if(time >= 1)
        {
                time = 0;
                FPS = calcedFPS/1.0;
                calcedFPS = 0;
                dips = engine->getDips();
                tris = engine->getTrisRendered();
        }
        font->drawText("FPS = " + ocge::String::fromInt(FPS) + "\nDips: " + ocge::String::fromInt(dips) + "\nTris: " + ocge::String::fromInt(tris), 300, 10, glm::vec3(1,1,0));
       
}

далее после рендера сцены ее вызываешь

Жека 20.08.2012 14:16

Ответ: C3D Engine
 
Ага, по фпс ясно.
У тебя можно грузить ttf шрифты? А то моноширинный некрасивый.
Ещё просьба заглянуть в раздел форума Android, я там проблему изложил, может ты знаешь ответ.

pozitiffcat 23.08.2012 17:12

Ответ: C3D Engine
 
Чо та не нравится мой экспортер из макса, и бесит, что информации нет никакой причем нигде... сделаю-ка я по аналогии с конвертером текстур, будет конвертер из популярных форматов в формат движка, новый *.om (изображения *.oi) начну-ка я с fbx, был вроде уже опыт с ним.

pax 23.08.2012 17:36

Ответ: C3D Engine
 
Эм... а пользователям делать два действия? сначала в FBX, потом в твой формат?

pozitiffcat 23.08.2012 17:45

Ответ: C3D Engine
 
пользоавтель независимо от версии макса да и вообще среды экспортит во что угодно (пока тока fbx) и получает на выходе готовый формат + SDK для написания своих загрузчиков прям в движок из вашего формата. (abstract class)

pax 23.08.2012 17:58

Ответ: C3D Engine
 
Мне показалось ты хотел файлы конвертить, а не тащить в движок много конвертеров...

pax 23.08.2012 18:01

Ответ: C3D Engine
 
Есть кстати вот такая либа: http://assimp.sourceforge.net/

pozitiffcat 23.08.2012 22:00

Ответ: C3D Engine
 
неее всего один конвертер, он автоматом понимает что ты конвертишь а на выход файл для движка. В юнити тоже конвертер работает, тока там визуальная среда разработки и все автоматизировано, но по сути происходит тоже самое.

upd.
Исправил систему координат на правую, работает для перемещений и так далее, для геометрии тоже будет работать.

pozitiffcat 28.08.2012 12:03

Ответ: C3D Engine
 
Добавил таймеры и сделал конвертер статики из fbx в *.om
Пример работы таймеров
Код:

class Mytimer : public ocge::ITimerCallback
{
        ocge::INode* _node;
public:
        Mytimer(ocge::INode* node)
        {
                _node = node;
        }
        virtual void onTimer(ocge::ITimer* timer)
        {
                _node->rotate(glm::vec3(0,10,0));
        }
};

ocge::ITimer* timer = eng->createTimer(new Mytimer(om), 100);
timer->setEnabled(true);

(C) все права защищены =)

pozitiffcat 28.08.2012 13:23

Ответ: C3D Engine
 
Решил собрать версию:
+ таймеры
/ улучшена скорость загрузки и быстродействие не андроиде на 30%
+ две версии библиотек, release и debug
/ String теперь динамический
/ мелкие фиксы
/ левая матрица по умолчанию
/ мастер к eclipse теперь требует net framework 2.0 а не 4.0

качать

Mhyhr 28.08.2012 16:46

Ответ: C3D Engine
 
1) А таймер тикает в отдельном потоке или по какому-нибудь Engine::Update() ?
2) Не увидел как изменить период для уже созданного таймера.

pozitiffcat 28.08.2012 16:51

Ответ: C3D Engine
 
период я не сделал менять.. (спасибо за подсказку)
таймер в этом же потоке считается исходя из tick() операционной системы.
Считается, что таймер работает, ТОЛЬКО в основном цикле приложения. Например во время загрузок уровня его использовать нельзя. Движок однопоточный.
никакого engine update делать не надо все автоматом (обновляются и проверяются таймеры в порядке очереди создания, в самом начале логики цикла, а точнее после endDraw)


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot