• Добро пожаловать на Quest3D - Русскоязычное сообщество.
 

Новости:

Форум Quest3D восстановлен!

Главное меню

[SDK] второе дыхание

Автор Sqwer, 09 января 2011, 17:13:32

« назад - далее »

Sqwer

Цитироватьони доведут это дело до ума и будут продавать как виик.

Смысла делать что-то для Квеста нет. ОН безбожно тупой и тормознутый.

Покапался в СДК, примерно понял структуру этого движка.

Как уже знаете, ядро определяет   каналы.

Каналы - объекты определённого класса.

Базовый класс подовляющего числа каналов  Aco_Chanel.

От него наследуется функция CallChanel()  или переопределяется в потомке   И  метод "вернуть указатель на потомка". 
Самое главное,  что  в каналах есть избыточная проверка  типов, значений.  (это сделано для художников, чтоб они  случайно не подключили то, что нельзя подключать;  идёт проверка на значения..  и тому подобное)
всё это по чуть-чуть сжирает FPS  :-\

Моглиб сделать  что-то типа разделения редакций каналов:

с проверками на исключительные ситуации , которые  активны в режиме КвестЭдитора

и без проверок  в режиме  ГотовыйСкомпилированныйПродукт

(до конца не уверен, что такого нет...  но  икакой документации нам не дают)...


И ещё однапроблема:
чёрт с ними с этими  стандартными каналами, всё можно свести  к  вызову 2ух каналов:  StartChanel  -> YouChanel  ;D

Я уже  так  и собирался сделать, НО!!!  тут меня сильно обломали

Кажется этот канал (StartChanel)   перехватывает  событие ДХ9  о потери устройства и автоматом  реситит Д9 девайс. И все  мои текстуры  нужно перезагружать.  Но как я пойму  "когда это сделать?", если   квест сам  ресетит девайс.

по сути   есть в  СДК  класс   "ПОЛЬЗОВАТЕЛЬ ДХ",  у которого есть  базовый метод "выполнить логику если  ДХ9 ресетнули", которая по логике вещей должна вызываться автоматом ядром движка.  Мои всевозможные опыты  доказывают, что не работает этот метод.  :'(
На оффе молчат , хотя  проблему адресовали  самому Ремке Якобсу.



Все уповают на появление Квеста 5,0 , но чуда не будет. Квест останется таким же бажным  медленным двигом.

И на этом ЖИРНАЯ точка.

Ruslan

Все знают, что редактор Квеста убогий!
Но это по сути мелочь. Мы написали свой экспортер из макса (то есть при построении сцены, полностью используем редактор макса)
В самом максе на модели накидывается собственный шейдер, при экспорте учитываются все параметры и текстуры этого шейдера, также учитываются instans материалов и объектов.
То есть объекты во вьюпорте макса выглядят так, как будут выгладить в движке (альбедо, нормал, спекуляр, отражения кубмапы) по нажатию кнопки экспорт, вся сцена сохраняется в собственном формате
Замучили SDK, что бы грузить все ресурсы собственного формата.. все отлично, все работает!
В планах было кроме канала загрузки ресурсов, написать канал собственного рендера, который работал бы очень быстро, в нем был бы зашит и фрустум..  можно было бы делать нормальный hardware instancing, на базе которого можно было бы делать свою траву, деревья, сетить много сотен источников света, и так далее..
НО столкнулись с проблемой, о которой выше написал Sqwer и эта неприятность, перечеркивает все благие начинания.

Alteste

Печально :-[
Какие будут пути отхода? Может быть XNA?

Sqwer

ЦитироватьКакие будут пути отхода?

У нас с Русланом свой двиг на DX10 , активно использующий:
1) возможности DX10 по максимуму (геометрические шейдеры, рендер в кубу за 1 проход, полноценный (асинхронный по отношению к CPU) оклюжен квери и куча всего вкусного   , что есть на 10 директе  8));
2) D3DX (не всёж руками писать  ;D) ;
3) STL (пусть нас будут ругать бородатые кодеры 90ых, но СТЛ не так и медленнен , если его  уметь применять  ;))

ЦитироватьМожет быть XNA?

Луч свой двиг на С++.
С++ учится быстро, а ХНА  требует .NET языка.
С# сложен в освоении, но лёгок в применении.
С++  обатно С#.

С хной  будут проблемы ресурсов, т.к.  он их прекомпилит.
Вторая проблема ХНЫ  -  как то вяло  продвигается, ДХ10 так и не выпустили .
Третья - изходит  от проблем с "чисткой мусора", присущей всем .NET   программам.

Но в любом случае,  заказчики определяют средство разработки.  Всё зависит от PR ,  И квест тому - яркий пример. Он уже прилично уступает  по всем параметрам другим движкам, но из-за  промо   всё ещё остаётся популярным.


Лично по моему мнению набор D3DX - и есть конструктор не хуже квестового.

Alteste

Не вижу никакой популярности квеста (если ввести "quest3d" в поисковик, то выдаст 1-офф сайт, 2 - наш форум, остальное - варз ресурсы и ГС на юкозе)
С чего посоветуешь начать одинокому любителю Real-Time технологий уходя от квеста? Направление деятельности - архвиз+интерактив.

Sqwer

ЦитироватьС чего посоветуешь начать одинокому любителю Real-Time технологий уходя от квеста?
вот это в закладки добавить http://www.gamedev.ru/

лучше формировать своё мнение , чем навязывать.

Sqwer

Таки удалось обмануть квест.  :D

Ниже скрин -  собственный рендер.

От квеста взято  только окно  и  ДХустройство.  8)

Таким образом, можно на квесте достичь   хорошей производительности, хотя и квестом это уже не назовёшь  ;D

Ruslan

#7
хе хе
Походу теперь открылись следующие перспективы:
- можно сетить столько источников света, пока не закончатся регистры на SM 3, т.е. до опы.
- hardware instancing (свои частицы, трава, деревья)
- отпала потребность в Квестовом ОО (можно в своем канале полноценно кодить используя ОО С++ )
- добротный экспорт из макса, при этом 3dMax это полноценный редактор.
- отпала необходимость в глобал шейде, так как можно теперь напрямую сетить шейдера, текстуры, и все пораметры для шейдера.
- STL
- максимально быстрый рендеринг, без каких либо ограничений
- библиотека  D3DX (одно из самых полезных в ней это математическая библиотека оптимальная, с поддержкой SSE, кстати и работа с квантерионами)
- сторонние библиотеки GUI, например можно попробовать заиспользовать вот эту:
Gallery
CeGUI
CeGUI youtube

и т.д.  :D

http://www.youtube.com/watch?v=sALiuWg_I1k
;D

Alteste

Ребята, поделитесь экспортером :) Либо сделайте ресурс на котором будете продавать свои разработки и плагины

Sqwer

#9
Alteste
ЦитироватьРебята, поделитесь экспортером. 
формат закрыт и зашифрован - по сути это и есть та защита, которую невозможно взломать. (.exe  ломануть  можно)
и по сути предназначается для другого движка NME. Этот формат -  не Коллада, и по сему   информация в нём  строго определённая , именно под рендер и  иерархию.


ЦитироватьЛибо сделайте ресурс на котором будете продавать свои разработки и плагины
Если найдуться желающие приобрести, - по чему бы и нет.

Но не стоит забывать, что ДХ9 всё же  технология 10тилетней давности  ,а кол-во обладателей   программно-аппаратных  средств с поддержкой ДХ10-11   уже   больше 75%. Квесту не долго осталось.
Политику  разработчиков я не совсем понимаю. И без того  малый штат , а распылились на 2 проекта  Квест и СлайХ(Люмион). Продвижение новых технологий: многопоток, переход на ДХ10, новые 64_бит либы  довольно болезнены,  боюсь  разрабы просто не потянут.  :-[

Alteste

Напрашивается вывод: нужно активно учить С++ и API DirectX

Ruslan

Ура!!!
на офе ответили на вопрос
проверили, все работает как нужно!

http://forum.quest3d.com/index.php?topic=69784.new

Alteste

Так работает это в самом квесте то со стандартными каналами?

Ruslan

#13
Да, работает со стандартными каналами, но главная идея в том, что бы сделать свои каналы для загрузки ресурсов и их рендеринга.
В итоге, в одном канале, напрямую можно сетить шейдера, вертексные буфера, текстуры, организовать внутри канала цикл для рендеринга геометрии, делать проверку на невидимость, и много, много всего, оооочень быстро!
+ добавить пару каналов, для того что бы обмениватся ресурсами со стандартными каналами, тогда возможно использовать как свои ресурсы, так и стандартные!
То есть, можно использовать на прямую DX9 без каких либо ограничений!

Хорошо, что не повелись на Unity, там такое и не снилось..

DimiS

почитал ваши темы на офф форуме... это ужос
ребята, начните с изучения английского
"the team should be called" даже меня заставило задуматься на пару минут, что же это может значить
но уж они то там никак не могут знать что team(команда/группа людей, напр. футбольная команда) на русский переводиться так же как и command(команда/приказ к исполнению)
а в этом случае подошло бы и банальное function/method
да и вообще англоязычных источников информации гораздо больше, и среди них практически всегда можно найти более качественные чем русскоязычные

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