Просьба протестить демки и написать отзыв о движке.
Если кого-то заинтересует движок для проекта, то могу помочь.
SDK, source, демки - на сайте.
Сайт - http://xsengine.com/
Скриншоты:
Краткий feature-list:
x Bump & Specular
x Parallax mapping
x Shadow mapping
x VSM
x HDR blooming
x Вода с рефракцией, отражениями и коэффициентами Френеля
x FP16, FP32, RGB16 текстуры
x FBO/PBO
x 2D/3D/Cube текстуры
x Физика на Newton
x 3D звук (OpenAL)
x GUI
x Plugin-ы к 3ds max
x Поддержка анимации
x Гибкая система материалов
x Террэин из карты высот с LOD и отсечением
x Удобный APi
<-x-> Будет редактор и документация
Интересует работа на разных видеокартах.
Жду отзывов и предложений.
С уважением, AST.
Спасибо:) Приятно, что разработка была полезна.
Tutorial-ы есть, но только для AST старого Engine. Многое просто изменилось, хотя бы то, что движок стал lib + dll.
Radeon 96xx, 98xx - прекрасно работают. FX раньше тоже работал. Сейчас - не тестил.
Пока основное "узкое место" - скорость. Хотя octree уже в процессе.
Нужно ли делать сайт на русском?
resurected_timofei
Мандельброт и не должен был запуститься. Он требует PS3.0.
Тормоза в спонзе - странно. Раньше не было.
Мне нужно знать, что за ошибки.
Явно всё это связано с переходом на GLSL.
Кинь пожалуйста лог.
это явно стоунхэндж глючит
кинь Log
Дай feature list на scene graph плиз, интересно очень, как у тебя хранятся иерархии объектов, как они обновляются, линкуются друг к другу и тд.
Для всех не надо.
Надо только для Terrain
Frankinshtein
Вся обьекты наследуются от класса SceneNode.
В нём же хранится трансформация, родитель и дети.
При прикреплении обьекта указывается матрица смещения обьекта относительно родителя.
Если у обьекта включается физика, то родительская трансформация не используется.
Вот код:
/* Parent/children */ void SceneNode::attach(SceneNode *node, const Mat4 &offset) { node->parent = this; node->offset = offset; children.push_back(node); }; void SceneNode::deattach(SceneNode *node) { for(int i = 0; i < children.size(); i++) { if(node == children[i]) { children[i]->parent = NULL; children[i] = NULL; }; }; }; void SceneNode::attachTo(SceneNode *node, const Mat4 &offset) { this->offset = offset; this->parent = node; node->children.push_back(this); }; void SceneNode::deattachFrom(SceneNode *node) { for(int i = 0; i < node->children.size(); i++) { if(this == node->children[i]) { node->children[i]->parent = NULL; node->children[i] = NULL; }; }; }; /* Transforms */ void SceneNode::setTransform(const Mat4 &transform) { this->transform = transform; }; const Mat4 &SceneNode::getTransform() { if(parent) { transform = parent->transform * offset; }; return transform; };
resurected_timofei
Так, в terrain demo нашёл ошибку.
Уже исправил. Насчёт Stonehenge пока не знаю.
У меня на 7600GT похожих глюков не наблюдается. Надо доставать вторую видяху:)
Выглядит хорошо!
Надо попробовать...
AST
Как я понимаю, от ноды можно отнаследоваться, используя там уже свой метод разбиения пространства и тд?
Node наследует Object
А вот от Object - уже можно отнаследоваться
Смотри файл
Object.cpp/Object.h
например класс ObjectMesh.
Ничто не мешает сделать например SceneNodeOctreeMesh
AST
Radeon9600pro
демка Terrain вываливается с ошибкой:
"GLShader::create() error: shader file 'data/shaders/terrain_omni.xsshd' fs compiling error: ERROR: 0:37: 'x' : field selection requires structure, vector, or matrix on left hand side
ERROR: 1 compilation errors. No code generated."
в демке Stonehenge тоько появляется картинка (водичка вроде ) ) т все замирает
демка Mandelbrot тоже не пашет... симптомы такие же как и у Stonehenge (подазреваю что шейдеры просто напросто работают в software)
зато демка Sponza работает ))) 10-15 FPS при max настройках
позже после просмотра шейдеров...
нашел и исправил ошибки в шейдерах: terrain_omni.xsshd , terrain_spot.xsshd
terrain_omni.xsshd
uniform float u_material_param_0; // здесь AST описал float , а ниже пытаеться с ним работать как с vec4 я полагаю.. ... vec4 detColor = texture2D(u_texture_1, v_tex_coord * u_material_param_0.x); // надо заменить u_material_param_0.x на u_material_param_0 иначе несоответствие типов
тоже самое и в terrain_spot.xsshd
после этих не хитрых операций демка Terrain заработала ))) в демке когда смотришь в вниз - 30 фпс, а когда в даль 0.5 ФПС..
ps
почему GUI такое тормознутое?
r2k3
true ... тож нашёл эти ошибки когда тестил на работе =) (radeon x550) результаты очень похожи на твои ...
дома на 6600GT и на x300 потестирую
AST
рад видеть рост твоего двига =)...
говориш он Lib и Dll ориентирован ? ... хорошо ...
при беглом анализе кода ... (реально беглый т.к. на работе смотрел) мне показалось что у двига наружу торчат классы ...
что приведёт к проблематичным переносам на другие компиляторы/языки. я ошибаюсь или нет? или этот момент будет проработан?
глянув систему материалов ... есть предложение (я его уже озвучивал когда то) ...
у тебя очень гибко настраивается материал ... для каждого типа пасса ... шейдеры параметры тексутры ... это ++
-- этого .. много повторяющейся а следовательно избыточной информации для разных материалов одного и того же типа ...
например у нас есть стена кирпичная, каменная, асфалт, и тд ... материалы схожи всем кроме текстур ... тоесть одинаковые шейдеры и параметры ...
может стоит ввести понятие ФХ с настройками всего кроме текстур и материал это только текстуры? (облегчит наполнение контента)
к сожалению нет редактора, что поставило бы движёк на следующую ступень.
так же меш формат текстовый .. былоб неплохо поддерживать и скомпиленные меши (бинарные)
+ круто былоб Virtual FS ко всему этому =)
вообще очучения положительные =)
p.s. прака длинных строчек
Я, к сожалению, не имею доступа к Radeon-ам, поэтому просьба к тем, у кого Terrain и Stonehenge не работает:
скомпилируйте демку (XSystemSDK/Demos/) закоментировав создание ист. света типа солнце:
dirl = LightDirect::Create();
dirl->setColor(Vec3(0.6, 0.6, 0.6));
dirl->setTransform(Mat4::rotate(45, Vec3(1, 1, 1)));
Scene::Get()->addLight(dirl);
т.е. вот этот кусочек кода.
Заранее спасибо.
Перезалил версию с исправлением шейдера Terrain.
Я вот чё хотел спросить, правильно ли, что в движке присутствуют такие понятия как вода, ландшафт, по сути это графические и физические элементы и навреное в движке их представлено не должно, если это конечно не движок к конкретному продукту.
Тема в архиве.