forum.boolean.name

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

Lost 29.01.2009 01:09

Atlantis Engine
 
Всем привет, просьба потестить небольшую демку моего недо-движка :)
Для работы необходима видеокарта с поддержкой шейдеров 2.0 версии и драйвера на Physx не ниже 2.8.1 версии :)

http://lostgamestudio.ucoz.ru/load/0-0-0-7-20

Управление:
Камера - WASD, мышь
Q - Создать ящик
E - Создать гнума
Z - Создать сферу
X - Включить/Выключить туман
Y - H, G - J, B - N - Двигает источник света

P.S. Замеченный баг, при создании большой кучи состоящей из 250 обьектов и более и если в нее бросить физ обьект, то начинается жуткий тормоз иначе(когда куча неактивна) фпс в районе 190, надо в саппорт физиксу отписать.

Про баги с камерой просьба не писать, камера кренится по roll оси, никак не могу пофиксить пока..

HolyDel 29.01.2009 01:11

Ответ: Atlantis Engine
 
первый.

короче - все круто. мягкие тени, освещение, гном.
при старте фпс от 180 до 280. Если накидать 300 объектов - опускается до 24х.

ABTOMAT 29.01.2009 01:59

Ответ: Atlantis Engine
 
Второй.
При старте ФПС 300
При 300 Кубиках - 40 ФПС

Ленин, шейдеры - всё работает.
Только вот тень у кубиков на асфальте какая-то страннта... такое чувство будто кубик в воздухе парит. Короче повнимательнее посмотри на них.

jimon 29.01.2009 02:00

Ответ: Atlantis Engine
 
не плохо, при старте 600 фпс
идинственое что frustum culling не учитывает тень - обьект не виден, а тень еще видна но обьект уже выбрасывают из рендера и тень тоже не рендерится

moka 29.01.2009 02:20

Ответ: Atlantis Engine
 
А можно скринчиков, и побольше?

HolyDel 29.01.2009 02:41

Ответ: Atlantis Engine
 
Вложений: 3
я взял на себя смелость записать видео-ролик:
http://www.youtube.com/watch?v=4BAs3GxYMGA

а вот скрины:

jimon 29.01.2009 02:47

Ответ: Atlantis Engine
 
HolyDel

последний скриншот жжот

moka 29.01.2009 03:15

Ответ: Atlantis Engine
 
А чего не полетал теньки в близи как смотрится не показал? А так весьма ничего так!

Lost 29.01.2009 09:06

Ответ: Atlantis Engine
 
Большое спасибо за посты, да тень куллингом не учитывается, тени вообще не интегрированы в двиг, я их ма уровне юзера сделал для красоты, у теней немного смещены границы решается это не сложным финтом ушами с буффером - сегодня постараюсь сделать )

Abiron 29.01.2009 12:00

Ответ: Atlantis Engine
 
Фпс 600, и запускалось через раз(буквально). А теперь норм. Только темновато(лицо гнома увидеть так и не смог.)

Lost 29.01.2009 12:45

Ответ: Atlantis Engine
 
Странные проблемы с запуском, седня все проверю, на гнума не наложена карта нормалей и освещение расчитывается неправильно, ибо гнум уникален и наложить на него карту нормалей грех :-)

Mr_F_ 29.01.2009 15:11

Ответ: Atlantis Engine
 
каким методом сделаны тени и особенно их блюренье?

HolyDel 29.01.2009 15:28

Ответ: Atlantis Engine
 
PCF 3x3

Lost 29.01.2009 17:24

Ответ: Atlantis Engine
 
Обычный perspective shadow mapping с pcf 3x3, но кушает довольно много ресов, я буду переписывать под скрин спейс блур чего и тебе советую )

Mr_F_ 29.01.2009 20:50

Ответ: Atlantis Engine
 
я и делал скрин спейс блюр, но мне наоборот показалось что он медленее чем псф)
ну и косячок есть - если у тебя тень ровно обрезается полигоном, то после блюра она выедет за границу.
если найдёшь способ это решить, подскажи)

Lost 30.01.2009 01:10

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

Сообщение от Abiron (Сообщение 96260)
Фпс 600, и запускалось через раз(буквально)

Проблема была найдена и успешно пофиксена :) Небольшой фикс добавлен в 1й пост

Lost 30.01.2009 01:12

Ответ: Atlantis Engine
 
Блин не позволяет отредактировать 1й пост, тогда размешю сдесь
Фикс: http://lostgamestudio.ucoz.ru/load/0-0-0-8-20

Lost 31.01.2009 20:55

Ответ: Atlantis Engine
 
Сейчас активно занимаюсь внедрением скриптов в движок (Lua)
Может через пару деньков будет небольшая демка со скриптами)

Abiron 07.02.2009 19:13

Ответ: Atlantis Engine
 
Двиг ничего такой. Я так понял, ты его после создания продавать будишь?

Lost 02.03.2009 21:30

Ответ: Atlantis Engine
 
А вот и снова я =)
Извините за долгое отсутствие, показывать было нечего, движок переписывался на корню и архитектура несомненно изменилась в лучшую сторону.

Нововведения:
* Гуй менеджер, пока только панели и кнопки (слайдеры и чек-боксы чуть позже), прозрачность элементов, закрашивание указанным цветом и еще парочка флагов.
* Отделение Енити от Физ актора, физикс максимально юзабелен и я его совсем не обворачиваю в свой физ меш, максимум что я делаю это строю его и все манипуляции уже = ваши руки + физикс
* Лайтмапы :crazy:
* Различные вспомогательные функции для удобного отображения всей информации о нужном обьекте (оси, ббокс, линиия джоинта и др.)

В процессе:
* Проективные тени (шадовмапы пока боюсь ибо системка старенькая...а они ресов много кушать =))

Планы на будущее:
* Октри и статическая геометрия (без коментариев)
* Шейдеры
* Тулсет (модел вьювер, левел едитор, шейдер едитор, гуй едитор) (это не скоро :-D )

Ну вот так вот...2 дня играюсь с физиксом, швыряюсь ящичками в лампочки на джоинтах, они так забавно раскачиваются =)

Abiron 02.03.2009 23:12

Ответ: Atlantis Engine
 
Демки пока нет. Жаль с удовольствием бы посмотрел.

HolyDel 02.03.2009 23:16

Ответ: Atlantis Engine
 
почему нет? на первой странице есть.

Lost 03.03.2009 00:26

Ответ: Atlantis Engine
 
Сегодня не успел, завтра может выложу под вечер небольшую демку с джоинтами и худом:ok:

FDsagizi 03.03.2009 09:31

Ответ: Atlantis Engine
 
Зачет!

ЗЫ\ Не чего личного, но вообще для общей статистики( чтобы себя пинать =) )

16 лет - и уже с++, свой двиг ? -> если да, и если это не секрет, то откуда такие знания в такие годы ?

Abiron 03.03.2009 13:56

Ответ: Atlantis Engine
 
я имел ввиду обновленного.

Lost 03.03.2009 18:22

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

Сообщение от FDsagizi (Сообщение 99431)
Зачет!

ЗЫ\ Не чего личного, но вообще для общей статистики( чтобы себя пинать =) )

16 лет - и уже с++, свой двиг ? -> если да, и если это не секрет, то откуда такие знания в такие годы ?

Ну возраст не помеха, главное желание =)
А вообще за плечами просто 2.5 года работы на скриптовом движке...я учел все его недостатки и плюсы и пытаюсь сделать что-то среднее, удобное мне =):)

NitE 03.03.2009 18:48

Ответ: Atlantis Engine
 
FDsagizi, а просто не все люди идиоты ))

SBJoker 03.03.2009 19:28

Ответ: Atlantis Engine
 
NitE, если это сказано в том смысле как мне показалось то это оскорбление пользователя.

NitE 03.03.2009 19:31

Ответ: Atlantis Engine
 
нет, это сказано в том смысле что в мире много идиотов, но не все. ы

ABTOMAT 03.03.2009 22:55

Ответ: Atlantis Engine
 
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 1100 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

FDsagizi 04.03.2009 07:45

Ответ: Atlantis Engine
 
NitE Быть не идеотом - этого мало!

Lost 05.03.2009 01:27

Ответ: Atlantis Engine
 
Скромное обновление:
* Создание текстур
* Рендеринг в текстуру (будет доделано завтра)
* Добавлен класс для рендеринга aRenderTexture (тонюсенькая обвертка сюрфейса в дх, тем не менее создает впечатление целостности сего процесса:) )

З.Ы. Пофиксены мелкие баги и ошибки.

-Алеллуйа-
А теперь настало время для 2х мини демок

1. Стресс тест
Нету множества оптимизаций но тем не менее очень интересно сколько выжмет фпс и запуститься ли вообще:rolleyes: . В сцене 4096 кубов + текстура 515х512х24 с сжатием ДХТ1.

http://lostgamestudio.ucoz.ru/load/0-0-0-9-20

1. Небольшой тест гуя и физикса
Сцена - статический физ обьект, лампочки - джоинты, кубики - боксы, меню - панельки и кнопочки. Аналогично первому ждем замечаний окромя камеры с ней много проблем...ее вращает по ролл оси постоянно, пока не могу починить никак...уж извините.

http://lostgamestudio.ucoz.ru/load/0-0-0-10-20

Управление:
Mouse Right + move mouse - вращать камеру (она будет так некрасиво кренится =()
W S - двигать перса - инвалида
Mouse Left - пуляет ящичек

HolyDel 05.03.2009 01:48

Ответ: Atlantis Engine
 
1. стресс-тест
когда пусто - 320-327 фпс
когда примерно половина - 80 фпс
когда все - 27-28 фпс
когда выходишь - выдает ошибку
вот логи:
Цитата:

'Atlantis Engine' build 1154, Mar 5 2009

* Инициализация...

[ INFO 00:46:44 ]: * Инициализация рендера
[ INFO 00:46:44 ]: Инициализация Direct3D
[ INFO 00:46:44 ]: Создание окна
[ INFO 00:46:44 ]: NVIDIA GeForce 9600M GS nvd3dum.dll 7. 15. 11. 7948
[ INFO 00:46:45 ]: Direct3D успешно инициализирован
[ INFO 00:46:46 ]: * Инициализация менеджера физики
[ INFO 00:46:46 ]: * Инициализация менеджера файлов
[ INFO 00:46:46 ]: * Инициализация менеджера ресурсов
[ INFO 00:46:46 ]: * Инициализация менеджера интерфейса
[ INFO 00:46:46 ]: * Инициализация менеджера сцены
[ INFO 00:46:46 ]: * Инициализация менеджера рендеринга
[ INFO 00:46:46 ]: * Инициализация таймера
[ INFO 00:47:28 ]: * Деинициализация менеджера рендеринга
2. Небольшой тест гуя и физикса
1. Впринципе не особо заметно, но на курсоре чучуть кривовато натянута текстура (сверху показана часть низа). юзай ClampToEdge в настройках фильтра.
2. кнопки работают отлично!
3. фпс окола 1200, но картинка кажется почему то дерганой (физика обновляется не каждый кадр?)
4. такая-же ошибка при выходе.

Lost 05.03.2009 11:38

Ответ: Atlantis Engine
 
Большое спасибо за тест! С обновлением физики нужно немного поиграться, очень странно откуда взялась ошибка, у меня все ровно, приду домой - буду искать причину.

FDsagizi 05.03.2009 12:39

Ответ: Atlantis Engine
 
Смотрел второй тест

вобщем.

Вруструм режит кубики жестко, бывает что видно как они исчезают.
Лампы есть, но должны ли они испускать свет- хм, не испускают =)
так же падает при выходе. Интересно, по чему не юзать (exit(1) ? )

Lost 05.03.2009 12:54

Ответ: Atlantis Engine
 
Фрустум самый нбычный, лампочка светит только 1 и то плохо видно из-за высокого амбиента, с вылетом разберусь дома, у меня всегда норм работало, вчера поздно было, торопился, может чего забыл.

-=Jack=- 05.03.2009 17:23

Ответ: Atlantis Engine
 
НИОДНА из дэмок не запускается. Не первая не эти 2.

Lost 05.03.2009 18:36

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

Сообщение от -=Jack=- (Сообщение 99621)
НИОДНА из дэмок не запускается. Не первая не эти 2.

А лог нельзя? Предполагаю,что проблема в том, что вы не установили драйвера на физикс (не ниже версии 2.8.1.).

Lost 05.03.2009 19:02

Ответ: Atlantis Engine
 
Патчик для второй демки (где лампочки)
По идее должны быть исправлены баги с дерганьем физики (но возможны и другие баги), а вот вылет уже попробуйте..должно все работать....у меня и без патча не вылетало а коректно завершалась программа

http://slil.ru/27025249

-=Jack=- 06.03.2009 14:07

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

Сообщение от Lost (Сообщение 99636)
А лог нельзя? Предполагаю,что проблема в том, что вы не установили драйвера на физикс (не ниже версии 2.8.1.).

'Atlantis Engine' build 2215, Jan 28 2009

* Initializing Engine...

[ INFO 12:06:23 ]: * Timer is successfull initialized
[ INFO 12:06:23 ]: Сreate window...OK
[ INFO 12:06:23 ]: Initialize Direct3D...OK
[ INFO 12:06:23 ]: * Render Manager is successfull initialized
[ INFO 12:06:23 ]: * File Manager is successfull initialized
[ INFO 12:06:23 ]: * Resource Manager is successfull initialized
[ INFO 12:06:24 ]: * Physics is successfull initialized
[ INFO 12:06:24 ]: * Scene Manager is successfull initialized
[ INFO 12:06:24 ]: Create font "Arial" "arial"
[ INFO 12:06:24 ]: Create camera "default"
[ INFO 12:06:24 ]: Load texture "media/tiles_bump.jpg" "tiles_bump"
[ INFO 12:06:24 ]: Load texture "media/lenin/act_lenin_bump.jpg" "act_lenin_bump"
[ INFO 12:06:24 ]: Load texture "media/lenin/crete_beton_3_bump.jpg" "crete_beton_3_bump"
[ INFO 12:06:24 ]: Load texture "media/lenin/grnd_shlak_02_bump.jpg" "grnd_shlak_02_bump"
[ INFO 12:06:24 ]: Load texture "media/lenin/mtl_colored_alum_bump.jpg" "mtl_colored_alum_bump"
[ INFO 12:06:24 ]: Load texture "media/lenin/priboi_crap_greydust_bump.jpg" "priboi_crap_greydust_bump"
[ INFO 12:06:24 ]: Load texture "media/lenin/ston_beton_ch_09_bump.jpg" "ston_beton_ch_09_bump"
[ INFO 12:06:24 ]: Load texture "media/lenin/ston_bordur_bump.jpg" "ston_bordur_bump"
[ INFO 12:06:24 ]: Load texture "media/lenin/ston_oblicovka_gr05_bump.jpg" "ston_oblicovka_gr05_bump"
[ INFO 12:06:24 ]: Load texture "media/ae_256x256.jpg" "ae_256x256"
[ INFO 12:06:24 ]: Load effect "media/shadowmapping.fx" "shadowmapping"
[ INFO 12:06:24 ]: Create texture "shadow_tex"
[ INFO 12:06:24 ]: Create render texture "shadow_rt"
[ INFO 12:06:24 ]: Create depth stencil texture "shadow_rt"
[ INFO 12:06:25 ]: Load mesh "media/lenin/lenin.x"
[ INFO 12:06:25 ]: Create material "grnd_shlak_02"
[ INFO 12:06:26 ]: Load texture "media\lenin\grnd_shlak_02.jpg" "grnd_shlak_02"
[ INFO 12:06:26 ]: Create material "crete_beton_3"
[ INFO 12:06:26 ]: Load texture "media\lenin\crete_beton_3.jpg" "crete_beton_3"
[ INFO 12:06:26 ]: Create material "ston_beton_ch_09"
[ INFO 12:06:26 ]: Load texture "media\lenin\ston_beton_ch_09.jpg" "ston_beton_ch_09"
[ INFO 12:06:26 ]: Create material "ston_oblicovka_gr05"
[ INFO 12:06:26 ]: Load texture "media\lenin\ston_oblicovka_gr05.jpg" "ston_oblicovka_gr05"
[ INFO 12:06:26 ]: Create material "mtl_colored_alum"
[ INFO 12:06:26 ]: Load texture "media\lenin\mtl_colored_alum.jpg" "mtl_colored_alum"
[ INFO 12:06:26 ]: Create material "act_lenin"
[ INFO 12:06:26 ]: Load texture "media\lenin\act_lenin.jpg" "act_lenin"
[ INFO 12:06:26 ]: Create material "priboi_crap_greydust"
[ INFO 12:06:26 ]: Load texture "media\lenin\priboi_crap_greydust.jpg" "priboi_crap_greydust"
[ INFO 12:06:26 ]: Create material "priboi_crap_greydust"
[ INFO 12:06:26 ]: Create material "ston_bordur"
[ INFO 12:06:26 ]: Load texture "media\lenin\ston_bordur.jpg" "ston_bordur"
[ INFO 12:06:26 ]: Create entity "media/lenin/lenin.x" "lenin"
[ INFO 12:06:27 ]: Create light "light1"
[ INFO 12:06:27 ]: Load mesh "media/sphere.x"
[ INFO 12:06:27 ]: Create material "ae_256x256"
[ INFO 12:06:27 ]: Load texture "media\ae_256x256.jpg" "ae_256x256"
[ INFO 12:06:27 ]: Create entity "media/sphere.x" "sphere"



Физикс стоит. Кстать, последние 2 демки заработали :)

Lost 06.03.2009 15:05

Ответ: Atlantis Engine
 
-=Jack=-
Поставь патч должно помочь, ссылка на второй странице

-=Jack=- 06.03.2009 16:34

Ответ: Atlantis Engine
 
Да всё норм :)
Выглядит отлично = )
Но нашел пару глюков:
1. Глюки с феструмом (когда объект не виден пропалают тени, а иногда даже объект пропадает, когда он виден о_О)
2. http://i007.radikal.ru/0903/39/8c87f9f71ae1.jpg

Кстать, не мог бы показать исходник(самого примера)? Хотелось бы увидеть код и оценить его удобство понятность ;)

Lost 06.03.2009 17:04

Ответ: Atlantis Engine
 
Сейчас движок переработал с нуля, но вот сорец с второй демки (с лампочками)

Код:

//=========================================================================
// Atlantis Engine
// All Rights Reserved 2008
//
//
// Email: [email protected]
// ICQ: 284-298-113
//=========================================================================
#include<windowsx.h>
#include"resource.h"
#include"Atlantis.h"
 
// Обьекты
aFont* fontTahoma;
aFont* fontFPS;
// Уровень 1
aEntity* entLevel01;
aTexture2D* texLevel01_lm;
NxActor* actLevel01;
aEntity* entLight;
aLight* light;
aEntity* entLamp1;
aEntity* entLamp2;
// Игрок
aCamera* camPlayer;
aEntity* entPlayer;
NxActor* actPlayer;
float fPlayerMoveSpeed = 4.0f;// 1 - default
bool isMouseRight = false;
aEntity* entWeapon_vintorez;
// Интерфейс
aPanel* panCursor;
aPanel* panBackground;
aButton* butStart;
aButton* butExit;
 
 
// Устанавливает параметры джоинта
void setJointParameters(NxJointDesc &desc, NxActor* _pActor1, NxActor* _pActor2, aVector3 _vecPos)
{
desc.setToDefault();
desc.actor[0] = _pActor1;
desc.actor[1] = _pActor2;
desc.setGlobalAnchor(Vec3ToNxVec3(_vecPos));
}
// Создает подвесную лампочку и возвращает указатель на енити лампы
aEntity* createJointLamp(aString _strModel, aVector3 _vecPosJoint, aVector3 _vecPosActor)
{
aEntity* entity = SceneManager.createEntity(_strModel);
NxActor* actor = PhysicManager.createActor(PHYSIC_CONVEX, entity);
actor->wakeUp(true);
actor->setGlobalPosition(Vec3ToNxVec3(_vecPosActor));
actor->setLinearDamping(0.3f);
actor->setAngularDamping(0.3f);
 
NxSphericalJointDesc desc;
desc.setToDefault();
desc.actor[0] = actor;
desc.actor[1] = NULL;
NxJoint* joint = PhysicManager.createJoint(desc);
joint->setGlobalAnchor(Vec3ToNxVec3(_vecPosJoint));
return entity;
}
// Рендерит линии джоинтов
void renderJointLines()
{
Render.renderLine(aVector3(-4.5f, 3.1f, 0), entLamp1->getPos(), aColor(0, 0, 255));
Render.renderLine(aVector3(-3.5f, 3.1f, 0), entLamp2->getPos(), aColor(0, 0, 255));
Render.renderLine(aVector3(-2.5f, 3.1f, 0), entLight->getPos(), aColor(0, 0, 255));
}
// Создает сцену
void createScene()
{
// заргужаем 1й уровень
entLevel01 = SceneManager.createEntity("media/meshes/l01_test.x");
entLevel01->setScale(aVector3(0.05f, 0.05f, 0.05f));
actLevel01 = PhysicManager.createActor(PHYSIC_STATIC, entLevel01);
// заргужаем и назначаем ему лайтмапу
texLevel01_lm = ResourceManager.loadTexture("media/textures/l01_test_lm.tga");
entLevel01->setTexture(TEXTURE_LIGHTMAP, 0, texLevel01_lm);
 
// подвесим пару лампочек на джоинтах
entLamp1 = createJointLamp("media/meshes/lamp.x", aVector3(-4.5f, 3.1f, 0), aVector3(-4.5f, 2.3f, 0));
entLamp2 = createJointLamp("media/meshes/lamp.x", aVector3(-3.5f, 3.1f, 0), aVector3(-3.5f, 2.3f, 0));
// реальный источник освещения :)
entLight = createJointLamp("media/meshes/lamp.x", aVector3(-2.5f, 3.1f, 0), aVector3(-2.5f, 2.3f, 0));
light = SceneManager.createLight(LIGHT_POINT);
light->setColor(aColor(255, 255, 255));
light->setRange(15.0f);
// создаем камеру
camPlayer = SceneManager.createCamera();
camPlayer->setFOV(0.80f);
camPlayer->setNearPlane(0.1f);
SceneManager.setCamera(camPlayer);
// создаем игрока
entPlayer = SceneManager.createEntity("media/meshes/box.x");
entPlayer->setScale(aVector3(0.1f, 0.1f, 0.1f));
entPlayer->resetFlag(ENTITY_VISIBLE);
actPlayer = PhysicManager.createActor(PHYSIC_BOX, entPlayer);
actPlayer->setGlobalPosition(NxVec3(10, 1, 0));
// разрешаем поворачивать меш только по оси X и Y
// чтобы не переворачивался
actPlayer->raiseBodyFlag(NX_BF_FROZEN_ROT_X);
actPlayer->raiseBodyFlag(NX_BF_FROZEN_ROT_Y);
actPlayer->raiseBodyFlag(NX_BF_FROZEN_ROT_Z);
// прикрепляем оружие к игроку
//entWeapon_vintorez = SceneManager.createEntity("media/meshes/wpn_vss.x");
//entWeapon_vintorez->setScale(aVector3(0.1f, 0.1f, 0.1f));
//entWeapon_vintorez->setPos(aVector3(10, 1, 0));
/*
aEntity* boxes[1024];
int j = 0;
for (int i = 0; i < 32; i++)
{
for (j = 0; j < 32; j++)
{
boxes[i] = SceneManager.createEntity("media/meshes/box.x");
boxes[i]->setScale(aVector3(0.3f, 0.3f, 0.3f));
boxes[i]->setPos(aVector3(2.0f * i, 0.0f, 2.0f * j));
}
}
*/
}
// Обновляет игрока
void updatePlayer()
{
aVector2 force = DX9Render.getMouseForce();
if (DX9Render.mouseLeft())
{
camPlayer->rotateYaw(force.x / 5);
camPlayer->rotatePitch(force.y / 5);
}
// двигаем игрока за камерой
aVector3 vecCamPos = NxVec3ToVec3(actPlayer->getGlobalPosition());
vecCamPos.y += 0.5f;
camPlayer->setPos(vecCamPos);
// направление камеры
aVector3 vecMove = camPlayer->getDir();
// двигает игрока вперед
if (DX9Render.keyDown(KEY_W))
{
actPlayer->setLinearVelocity(NxVec3(vecMove.x * fPlayerMoveSpeed, vecMove.y, vecMove.z * fPlayerMoveSpeed));
}
// назад
if (DX9Render.keyDown(KEY_S))
{
actPlayer->setLinearVelocity(NxVec3(-vecMove.x * fPlayerMoveSpeed, vecMove.y, -vecMove.z * fPlayerMoveSpeed));
}
// на правую кнопку мыши бросаем кубик
if (DX9Render.mouseRight() == true && isMouseRight == false)
{
aEntity* ent = SceneManager.createEntity("media/meshes/box.x");
ent->setScale(aVector3(0.3f, 0.3f, 0.3f));
//ent->setFlag(ENTITY_TRANSLUCENT);// use alpha channel
aVector3 dir = camPlayer->getDir();
aVector3 force = dir * 1500;
NxActor* act = PhysicManager.createActor(PHYSIC_CONVEX, ent);
act->setGlobalPosition(Vec3ToNxVec3(camPlayer->getPos()));
act->addForce(Vec3ToNxVec3(force), NX_FORCE, false);
isMouseRight = true;
}
if (!DX9Render.mouseRight() && isMouseRight)
{
isMouseRight = false;
}
//entWeapon_vintorez->setPos(camPlayer->getPos());
//entWeapon_vintorez->setDir(camPlayer->getDir());
}
// Показывает меню
void showMenu()
{
panBackground->setFlag(GUI_VISIBLE);
butStart->setFlag(GUI_VISIBLE);
butExit->setFlag(GUI_VISIBLE);
}
// Прячет меню
void hideMenu()
{
panBackground->resetFlag(GUI_VISIBLE);
butStart->resetFlag(GUI_VISIBLE);
butExit->resetFlag(GUI_VISIBLE);
}
// Закрывает игру
void exitGame()
{
exit(0);
}
// Вызывается при наведении на кнопочку
void onTouch_start() {butStart->setFlag(GUI_COLORED);}
void onTouch_exit() {butExit->setFlag(GUI_COLORED);}
// Вызывается при снятии курсора с кнопки
void onLeave_start() {butStart->resetFlag(GUI_COLORED);}
void onLeave_exit() {butExit->resetFlag(GUI_COLORED);}
 
// Создает интерфейс
void createInterface()
{
// информация
fontTahoma = GUIManager.createFont("Tahoma", 14);
fontTahoma->setText("Everybody lies... (c) House MD");
// курсор
panCursor = GUIManager.createPanel("media/ui/cursor.dds");
panCursor->setFlag(GUI_TRANSLUCENT);
panCursor->setLayer(999);
// фон меню
panBackground = GUIManager.createPanel("media/ui/lost_bg.jpg");
panBackground->setLayer(1);
panBackground->setWidth(1024);
panBackground->setHeight(768);
// кнопка "Enter The Island"
butStart = GUIManager.createButton("media/ui/button_01.bmp");
butStart->setLayer(2);
butStart->setWidth(128);
butStart->setHeight(32);
butStart->setPos(aVector2((DX9Render.getWidth() - butStart->getWidth()) / 2, (DX9Render.getHeight() - butStart->getHeight()) / 2));
butStart->setOnEvent(GUI_EVENT_CLICK_LEFT, hideMenu);
butStart->setOnEvent(GUI_EVENT_TOUCH, onTouch_start);
butStart->setOnEvent(GUI_EVENT_LEAVE, onLeave_start);
butStart->addDigit(12, 8, fontTahoma, aColor(255, 255, 255), "Enter The Island");
butStart->setColor(aColor(255, 128, 128));
// кнопка "Exit"
butExit = GUIManager.createButton("media/ui/button_01.bmp");
butExit->setLayer(2);
butExit->setWidth(128);
butExit->setHeight(32);
butExit->setPos(aVector2(butStart->getPos().x, butStart->getPos().y + 64));
butExit->setOnEvent(GUI_EVENT_CLICK_LEFT, exitGame);
butExit->setOnEvent(GUI_EVENT_TOUCH, onTouch_exit);
butExit->setOnEvent(GUI_EVENT_LEAVE, onLeave_exit);
butExit->addDigit(52, 8, fontTahoma, aColor(255, 255, 255), "Exit");
butExit->setColor(aColor(128, 128, 255));
// TEST0: создание текстуры
//aTexture2D* texCreated = ResourceManager.createTexture(256, 256, D3DFMT_A8B8G8R8);
//butExit->setOnEventTexture(GUI_EVENT_LEAVE, texCreated);
}
// Обновляет интерфейс
void updateInterface()
{
panCursor->setPos(DX9Render.getMousePos());
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// инициализация
Render.init(1024, 768, 32, false, false);
DX9Render.setTitle("Everybody lies... (c) House MD");
ShowCursor(false);
// выключаем дебаг режим
Log.setEnableDebug(false);
// параметры рендера
Render.setTextureFiltering(TEXTURE_FILTERING_LINEAR);
Render.setLightingEnable(true);
Render.setAmbientLight(aColor(200, 190, 170));
Render.setClearColor(aColor(200, 190, 170));
 
// сцена
SceneManager.setDebugMode(false);
// шрифт выводящий значение FPS
fontFPS = GUIManager.createFont("Tahoma", 18);
fontFPS->setLayer(2);
fontFPS->setPos(aVector2(0.0f, 30.0f));
// создаем интерфейс
createInterface();
// создаем сцену
createScene();
// for 4096 boxes test
/*
camPlayer = SceneManager.createCamera();
camPlayer->setFOV(0.80f);
camPlayer->setNearPlane(0.1f);
SceneManager.setCamera(camPlayer);
 
aEntity* boxes[4096];
int j = 0;
for (int i = 0; i < 64; i++)
{
for (j = 0; j < 64; j++)
{
boxes[i] = SceneManager.createEntity("media/meshes/box.x");
boxes[i]->setScale(aVector3(0.3f, 0.3f, 0.3f));
boxes[i]->setPos(aVector3(2.0f * i, 0.0f, 2.0f * j));
}
}
*/
// главный цикл
while (DX9Render.getWindowActive())
{
/*
// если нажали кнопку выход
if (DX9Render.keyDown(KEY_ESCAPE)) {break;}
 
// управление камерой
if (DX9Render.keyDown(KEY_W)) {camPlayer->moveX( 0.12f);}
if (DX9Render.keyDown(KEY_S)) {camPlayer->moveX(-0.12f);}
if (DX9Render.keyDown(KEY_A)) {camPlayer->moveZ(-0.12f);}
if (DX9Render.keyDown(KEY_D)) {camPlayer->moveZ( 0.12f);}
if (DX9Render.keyDown(KEY_Z)) {camPlayer->moveY( 0.12f);}
if (DX9Render.keyDown(KEY_X)) {camPlayer->moveY(-0.12f);}
aVector2 force = DX9Render.getMouseForce();
if (DX9Render.mouseLeft())
{
camPlayer->rotateYaw(force.x / 5);
camPlayer->rotatePitch(force.y / 5);
}
*/
 
// UPDATE LIGHT ENTITY
light->setPos(entLight->getPos());
// выводим фпс
fontFPS->setText(aMakeString("FPS: %.f", Timer.getFPS()));
// обновляем интерфейс
updateInterface();
// обновляем игрока
updatePlayer();
// ! update scene !
PhysicManager.updateScene();
SceneManager.updateScene();
// ! rendering here !
Render.clearScreen();
Render.beginRender();
// ! rendering scene !
RenderManager.renderScene();
// ! user rendering !
renderJointLines();
// ! flip backbuffer !
Render.flip();
}
exit(0);
return0;
}


-=Jack=- 06.03.2009 17:39

Ответ: Atlantis Engine
 
Прикольно :) Вроде удобный синтаксис :)
А давно движок делаешь? сам? Какие возможности есть, кроме показанных в демках?

Lost 06.03.2009 17:54

Ответ: Atlantis Engine
 
Движок делаю с августа месяца, уже 3й раз переписываю, первый ну там все понятно, проба пера), второй раз - зашел в архитектурный тупик...опыта не особо много в проектировании...ну вот 3й раз стараюсь уже избегать подобных ошибок, пишу где-то месяц

Из возможностей - почитай на 2й странице, если есть еще вопросы - задавай, отвечу =)

Lost 06.03.2009 18:01

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

Сообщение от -=Jack=- (Сообщение 99763)

Это нелепейший баг =)
Забыл убрать плоскость физическую, которая не видима, а модель сцены находится чуть ниже ноля, и все модельки грохались на плоскость не долетая до земли =)

Lost 06.03.2009 21:17

Ответ: Atlantis Engine
 
Доделал рендер в текстуру, если интересно синтаксис получился такой

Код:

// RENDET TO TEXTURE
aRenderTexture* rtSample;
aTexture* texSample;
 
rtSample = ResourceManager.createRenderTexture(512, 512);
texSample = ResourceManager.createTexture(
512, 512, D3DFMT_A8B8G8R8, TEXTURE_RENDER_TARGET);
 
entLevel01->setTexture(TEXTURE_SKIN1,
0, texSample);

//---------------------------------------------------
// BEGIN RENDER TO TEXTURE
//---------------------------------------------------
// set render texture
Render.setRenderTexture(0, rtSample, false);
Render.clearScreen();
 
// rendering scene
RenderManager.renderScene();
// restore back buffer
Render.setLastRenderTexture(0, rtSample, false);
//---------------------------------------------------
// END RENDER TO TEXTURE
//---------------------------------------------------
// set new surface for texture
rtSample->updateTexture(0, texSample, false);


Lost 06.03.2009 23:47

Ответ: Atlantis Engine
 
Небольшая демка с рендером в текстуру, потестируйте пожалуйста
http://slil.ru/27029369

HolyDel 07.03.2009 00:50

Ответ: Atlantis Engine
 
работает. окола 800 фпс.
на кубе текстура отображается с миром. на отражение не похоже.

Lost 07.03.2009 02:11

Ответ: Atlantis Engine
 
Да не, это ни разу не отржаение)) это просто рендеринг текстуры из координат камеры и наложение на куб =))

Lost 08.03.2009 02:06

Ответ: Atlantis Engine
 
Блин полный косяк с этим стресс тестом енитей, весь день пытаюсь оптимизировать, сумел поднять фпс с 55 до примерно 110 когда ни один обьект попадает во фрустум...когда все обьекты в кадре (напомню 4096 кубиков) у меня примерно 20 фпс, что имхо очень мало...у меня просто нет больше никаких мыслей по этому поводу, что может столько кушать, если у кого нибудь есть какие нибуль мысли на этот счет - поделитесь пожалуйста...

Из нового:
* Небольшая система материалов, основанная на D3DMATERIAL9, работает довольно неплохо на FFP, когда найду проблему (см. выше), допишу класс шейдера и сделаю разделение на подачу параметров материала (ффп/шейдер)

Lost 09.03.2009 13:55

Ответ: Atlantis Engine
 
Доделал систему материалов, шейдеры и отсечение источников света не попадающих в кадр (грубовато конечно по сфере выходит, но пока сойдет)

Lost 09.03.2009 20:45

Ответ: Atlantis Engine
 
А вот и я, прежде всего хочу порадовать новостью о том, что удалось повысить ФПС с стресс тесте енитей когда ничего нет в кадре в 3 раза, когда все 4к кубиков в кадре фпс остался почти прежним, увы но боюсь это никак не исправить пока я не перестану юзать D3DXMESH, замерьте пожалуйста фпс (все результаты плз скиньте в топик с тестами движков)

Обновленная демка(нужна регистраиця):
http://lostgamestudio.ucoz.ru/load/1-1-0-11

А вот другая демка, материалы + шейдеры + источники света (в виде техже лампочек на джоинтах),
Там иногда странно себя ведет яркость освещения (и-за отсечения невидимого источника, это я там в шейдере напутал, не особо в ХЛСЛ разбираюсь пока, так что ... как есть в общем). Хотелось бы поглядеть на фпс на различных конфигурациях и услышать пожелания\замечания.

http://lostgamestudio.ucoz.ru/load/1-1-0-12

HolyDel 09.03.2009 20:55

Ответ: Atlantis Engine
 
с самого начала 440 фпс.
если смотреть на стену со спекуляром - то 340-380
если накидать 100 кубов - то фпс падает до 120.

картинка очень приятная! зачет

NitE 09.03.2009 21:38

Ответ: Atlantis Engine
 
мне регистрация что-то не понадобилась ))
в первой демке фпс хаотично скачет 500-990
во второй в среднем 450, картинка и вправду красивая ))

moka 09.03.2009 22:10

Ответ: Atlantis Engine
 
Накормите скринами.. :@

Lost 09.03.2009 22:22

Ответ: Atlantis Engine
 
MoKa
Наслаждайся :)


Кстати в папке media/materials можно поиграться с материалами, если закоменитть effect (; - comment) будет FFP

-=Jack=- 10.03.2009 00:30

Ответ: Atlantis Engine
 
Поигрался, отключил эффект - появились глюки с освещением. Видно твоё "отсечение источников света" работает весьма плохо.

Lost 10.03.2009 09:29

Ответ: Atlantis Engine
 
Согласен, нужно доводить до ума

SBJoker 10.03.2009 10:29

Ответ: Atlantis Engine
 
485фсп когда видна пустота, 49фпс когда все кубики в кадре.

Abiron 19.03.2009 00:20

Ответ: Atlantis Engine
 
Вложений: 3
Вложение 5607
Вложение 5608
Это все при стандартных настройках при одниковых условиях, просто небольшой поворот камеры.

Вложение 5609
Это рендеринг в текстуру.

Это все так должно быть? У меня видюха ati 3870x2.

Lost 22.03.2009 04:39

Ответ: Atlantis Engine
 
Да все так и должно быть, про баги камеры я упоминал...

Сейчас ничего нового не пишется т.к. движок переписывается почти с нуля, полностью переделана сцена, теперь она полностью на узлах как в огре, ирлихте т.к. это дает очень большой плюс к реализации октри интересных алгоритмов, без этого просто никуда, так же получается более модульная структура в связи с переработкой архитектуры в целом...=)

Lost 18.06.2009 05:00

Ответ: Atlantis Engine
 
Уже и не ждали? =)
Движок потихоньку пишется, потихоньку потому, что сейчас работаю над казуалкой и на двиг времени совсем нет =(
Возможно вскоре выложу чего нибудь на тест =)


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

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