Xtreme3D 2.1

Вы просматриваете архив старого форума. Новый форум по ссылке


Автор Сообщение

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 02-09-2009 18:25
Разработка пока находится на ранней стадии, но уже есть, что показать. Исходники и список функций с описанием на английском прилагаются.
Пример показывает, как грузить и анимировать модель MD3. В комментах - несколько других нововведений, например, Z-тени.

xtreme3d-2.1a-dev.zip

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 02-09-2009 20:03
Архив поврежден Удалось восстановить только исходный код, но ведь демку тоже хочется глянуть. Кстати, а обновление по 06 год OpenGL не старовато ли? Или там свои нюансы?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 03-09-2009 11:56
Перезалил.
А причем тут обновление OpenGL?

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 03-09-2009 18:07
Перезалил.

Там вирус
А причем тут обновление OpenGL?

Ну мне всегда казалось, чем новее версия чего либо, тем это 'либо' лучшее...

мастер
Группа: Участники
Сообщений: 115
Добавлено: 03-09-2009 19:18
и у меня аваст в этом архиве вирус нашел.

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 03-09-2009 20:03
Да нет там никаких вирусов, ну что вы прям как дети!

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 04-09-2009 12:09
А, вон оно что: Win32.Induc.a
Без паники, товарищи, вирус не опасный. Вот что о нем пишут:

"В интернете появился специфичный для Delphi вирус. Суть его в том, что заражённая программа ищет на диске установленные версии Delphi и, если находит, изменяет файл SysConst.dcu (старая версия сохраняется под именем SysConst.bak), и после этого все программы на Delphi, скомпилированные на этом компьютере, начинают точно так же заражать Delphi на тех компьютерах, где они запускаются.
В настоящее время вирус не несет функциональной нагрузки помимо самого заражения, скорее он предназначен для демонстрации и тестирования нового вектора заражений."

Так что если у кого Delphi стоит - на всякий случай проверьте, нет ли в папке /Lib файла SysConst.bak. Если есть, удалите SysConst.dcu и переименуйте SysConst.bak в SysConst.dcu.
Во всяком случае, так советуют.

Однако быстро на Народе отреагировали! И сайт уже успели временно закрыть. Они что, каждый день все файлы проверяют?


Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 05-09-2009 23:20
Однако быстро на Народе отреагировали! И сайт уже успели временно закрыть. Они что, каждый день все файлы проверяют?

А может они форум прочитали?
Зачем каждый день? Проверяют, но через некоторое время после того, как вы залили файл.
А причем тут обновление OpenGL?
Ну мне всегда казалось, чем новее версия чего либо, тем это 'либо' лучшее...

Я так и не услышал ответа, я, разве, не прав? Или все же есть нюансы, которые я не понимаю?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 06-09-2009 20:02
Дело в том, что OpenGL 2.0 пока поддерживают не все видеокарты. Отсюда вывод: пока будет реализована только функциональность OpenGL 1.x. Да и то не полностью, так как там действительно есть свои нюансы.
Например, я до сих пор не уверен, получится ли добавить поддержку шейдеров. GLScene прекрасно поддерживает Cg - отличный во всех отношениях язык для написания шейдеров, но с этим связана одна проблема. Для передачи параметров в вершинную или фрагментную программу шейдера используются специальные свойства компонентов, берущие в качестве значения процедуру. Эту процедуру несложно "вшить" в тело библиотеки, но тогда пользователь не сможет ее менять. Ведь параметры могут быть разные и вообще их может быть разное количество.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 06-09-2009 20:13
Понятно, оказывается не все так просто. Лично у меня видеокарта GeForce 7600 GS, имеется полная поддержка OpenGL 2.0 (ксати во многом эта поддержка зависит от драйверов для этой самой видеокарты). Многие могут протестировать свою систему на функциональность OpenGL с помощью программы OpenGL Extensions Viewer 3.0, очень хорошая вещь.
Вопрос абсолютно, как многие выражаются, 'нубский'. Возможно ли сделать одновременную поддержку двух версий OpenGL 1.x и 2.0 ?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 14-09-2009 11:51
OpenGL Extensions Viewer 3.0

Да, прога полезная, сам тестировал.

Возможно ли сделать одновременную поддержку двух версий OpenGL 1.x и 2.0 ?

Думаю, да. Правда, мои познания OpenGL довольно поверхностные, я толком не знаю, чем второй отличается от первого. Знаю только, что в OpenGL 2.0 есть язык описания шейдеров GLSL, который не поддерживается в OpenGL 1.x.
Вот моя видеокарта не поддерживает OpenGL 2.0, поэтому я не могу работать над интеграцией GLSL. Поэтому, можно сказать, пока будем придерживаться OpenGL 1.x.

Кстати, насчет Cg: проблему я решил, но, по техническим причинам, придется ограничиться фиксированным максимально возможным количеством шейдеров. Вот только какое это должно быть количество? Я, признаться, никогда раньше не писал приложения, использующие шейдеры, и даже не знаю сколько их обычно используется. Шести, интересно, будет достаточно? В смысле, шести пар: 6 вершинных и 6 пиксельных шейдеров.


Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 20-09-2009 11:40
я толком не знаю, чем второй отличается от первого.

Ну как же не знаете, там же даже в исходниках, вроде, написаны изменения и исправления!
Вот моя видеокарта не поддерживает OpenGL 2.0, поэтому я не могу работать над интеграцией GLSL. Поэтому, можно сказать, пока будем придерживаться OpenGL 1.x.

Обидно прям хоть сам садись и пиши под новую версию...
Кстати, насчет Cg: проблему я решил, но, по техническим причинам, придется ограничиться фиксированным максимально возможным количеством шейдеров. Вот только какое это должно быть количество? Я, признаться, никогда раньше не писал приложения, использующие шейдеры, и даже не знаю сколько их обычно используется. Шести, интересно, будет достаточно? В смысле, шести пар: 6 вершинных и 6 пиксельных шейдеров.

Ну возьмем тот же U3D, какие там обычно используются шейдеры? Например в TexDemo? От этого и надо исходить, как мне кажется.

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 20-09-2009 12:11
Ну как же не знаете, там же даже в исходниках, вроде, написаны изменения и исправления!

Каких исходниках? GLScene?

Обидно прям хоть сам садись и пиши под новую версию...

Да не так уж и обидно. Собственно, что есть GLSL? Тот же Cg, только немного расширенный.

Ну возьмем тот же U3D, какие там обычно используются шейдеры? Например в TexDemo? От этого и надо исходить, как мне кажется.

Ну ладно, для начала - шесть, а там посмотрим.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 20-09-2009 12:33
Каких исходниках? GLScene?

Я посмешил немного, там оказывается изменения в классах, вроде. Я просто при первом взгляде думал что история версий, но оказывается немного другое...
GLScene.pas
Да не так уж и обидно. Собственно, что есть GLSL? Тот же Cg, только немного расширенный.

Не буду спорить, так как наверняка не знаю, сам полазаю))
Ну ладно, для начала - шесть, а там посмотрим.

Я наверное не то сказал, извините Я имел ввиду просто посмотреть наиболее используемые там шейдеры, так как там они видны...

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 23-09-2009 19:13
Мои последние наработки:



BumpShader, теперь с поддержкой бликов по Блинну и Фонгу.
Левое нижнее изображение - вариант без бликов (как в версии 2.0.2.0).

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 23-09-2009 19:17


Новинка: PhongShader, реализующий освещение по Фонгу. Обратите внимание на качество бликов на мелких деталях. Нижний чайник - с простым вертексным освещением (для сравнения).

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 23-09-2009 19:49
Супер! Жду не дождусь, когда выйдет новая версия))
А вот тени теперь не много жрут памяти, а?
P.S Странная у вас аватарка, я даже испугался сначала!

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 23-09-2009 19:57
А вот тени теперь не много жрут памяти, а?

Решать это не в моей компетенции. Это - к товарищам разработчикам GLScene. Я его компонеты серьезно модифицировать пока не готов.

А на аватаре у меня теперь - логотип сайта wincustomize.com, хамелеон по имени Winky. А то Волкодав как-то поднадоел уже.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 23-09-2009 19:59
Решать это не в моей компетенции. Это - к товарищам разработчикам GLScene. Я его компонеты серьезно модифицировать пока не готов.

Ну я имел ввиду, что тесты показывают?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 23-09-2009 20:02
А я пока не знаю, тенями еще не занимался.
А что, серьезно много памяти потребляют? И какие именно - ShadowVolume или ShadowPlane?

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 23-09-2009 20:05
Ды те которые в старой версии, тормознутые и памяти едят много, сами знаете, а в том примере z-тени я сделать не смог, ошибку неизвестную выдавал!Поэтому и спрашивал.

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 23-09-2009 20:10
Ну, я думаю, ShadowVolume как был тормознутый, так и останется.
А Z-тени еще более тормознутые. Я с ними еще повожусь, может удастся как-нибудь оптимизировать, но ничего не обещаю. Так что с тенями ситуация не очень.

Правда, скажу по секрету, есть там один компонентик... Позволяет проецировать текстуры на окружающие объекты. Работает довольно быстро. Я думаю, с помощью него можно будет сделать и тени.

мастер
Группа: Участники
Сообщений: 115
Добавлено: 23-09-2009 20:17
красотища.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 23-09-2009 20:39
А Z-тени еще более тормознутые. Я с ними еще повожусь, может удастся как-нибудь оптимизировать, но ничего не обещаю. Так что с тенями ситуация не очень.

Будем надеяться, что что-нибудь придумаете...
Правда, скажу по секрету, есть там один компонентик... Позволяет проецировать текстуры на окружающие объекты. Работает довольно быстро. Я думаю, с помощью него можно будет сделать и тени.

Я себе не представляю конечно как это можно сделать, но надеюсь вы покажите как)

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 23-09-2009 21:11
А это вот примерно так:


Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 04-10-2009 10:13
Вынужден сообщить неприятное известие.
К сожалению, разработку X3D 2.1 придется отложить до лучших времен... Многие компоненты просто-напросто отказываются работать через DLL. Например, Blur. Мне также остается неизвестным принцип работы некоторых важных функций, связанных с лайтмэппингом. Я, конечно, могу просто отказаться от их внедрения, но кому нужен движок без блура и лайтмэппинга? Особенно если все это уже есть и прекрасно работает в старой версии X3D.
Иными словами, как оказалось, я пока чисто технически не в состоянии реализовать стандартный функционал X3D. Поэтому разработку придется приостановить. Я лучше буду заниматься портированием X3D под C++.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 04-10-2009 10:35
Многие компоненты просто-напросто отказываются работать через DLL. Например, Blur.

Я надеюсь, что вы на многих компьютерах пробовали как оно работает?
Мне также остается неизвестным принцип работы некоторых важных функций, связанных с лайтмэппингом

А спросить на форумах по Glscene не представляется возможным?
Я, конечно, могу просто отказаться от их внедрения, но кому нужен движок без блура и лайтмэппинга? Особенно если все это уже есть и прекрасно работает в старой версии X3D.

Ну, тогда хоть исходники выложите, люди пороются...
Иными словами, как оказалось, я пока чисто технически не в состоянии реализовать стандартный функционал X3D. Поэтому разработку придется приостановить. Я лучше буду заниматься портированием X3D под C++.

Знаете, а я бы на вашем месте сделал иначе, я бы дописал движок как он есть, а потом нашел бы человека, который был бы в состоянии мне же помочь(из того же сообщества Glsсene, пускай даже англоязычного), конечно встает вопрос, где такого человека найти, но как говорится : 'кто ищет, тот всегда найдет'...а вообще жаль конечно

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 04-10-2009 12:51
Я надеюсь, что вы на многих компьютерах пробовали как оно работает?

Пробовал на двух. Проблема в том, что Blur работает сам по себе, если сделать с ним приложение на GLScene, но через DLL - отказывается.

А спросить на форумах по Glscene не представляется возможным?

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

Ну, тогда хоть исходники выложите, люди пороются...

Выложу конечно. Да только кто захочет в них рыться, ума не приложу.

Знаете, а я бы на вашем месте сделал иначе, я бы дописал движок как он есть, а потом нашел бы человека, который был бы в состоянии мне же помочь(из того же сообщества Glsсene, пускай даже англоязычного)

В принципе, так сделать можно. Но я никогда еще не видел такого программиста, который просто так взялся бы разбирать чужой код, не обругав при этом всю задумку целиком. А я точно уверен, там найдется что обругать. Думаете этот программист закроет глаза на все эти недочеты и будет решать конкретную проблему? Нет, он скажет что-нибудь типа "А зачем вообще делать ХХХ, когда можно YYY?", или вовсе "А зачем вообще писать порт GLScene под GM?". И что я ему отвечу? Вот поэтому-то я и не рассчитываю на помощь ни со стороны сообщества GLScene, ни с какой-либо другой.

Но я на днях еще попробую пару способов (с блуром), может прокатит. Насчет лайтмэпов не знаю. В принципе, я внедрил загрузчик формата LOD, он прекрасно грузится с лайтмэпами, но вот с другими форматами беда, потому что они все не поддерживают второй набор UV-координат.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 04-10-2009 13:45
Пробовал на двух. Проблема в том, что Blur работает сам по себе, если сделать с ним приложение на GLScene, но через DLL - отказывается.

На двух? Выложите пример с blur'ом.
Тогда напрашивается вопрос, а как же автор нынешней Xtreme умудрился сделать его?
Кстати, ведь этот шейдер работает в программном режиме, да? А нельзя ли его реализовать через шедеры? Те, что *.gl по-моему...
Мне почему-то кажется, что надо брать версию 2.x, жаль, что видеокарта не поддерживает ваша её(
Спрашивал, не помогли толком. Я уж где только не искал, хоть какую-нибудь захудалую демку, хоть какое-либо упоминание - все тщетно.

Понятно(
Выложу конечно. Да только кто захочет в них рыться, ума не приложу.

Я, например, захочу! Как раз выложите с blur'ом...
В принципе, так сделать можно. Но я никогда еще не видел такого программиста, который просто так взялся бы разбирать чужой код, не обругав при этом всю задумку целиком. А я точно уверен, там найдется что обругать. Думаете этот программист закроет глаза на все эти недочеты и будет решать конкретную проблему? Нет, он скажет что-нибудь типа "А зачем вообще делать ХХХ, когда можно YYY?", или вовсе "А зачем вообще писать порт GLScene под GM?". И что я ему отвечу? Вот поэтому-то я и не рассчитываю на помощь ни со стороны сообщества GLScene, ни с какой-либо другой.

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

Но я на днях еще попробую пару способов (с блуром), может прокатит

Будем ждать вестей!

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 04-10-2009 14:18
Кстати, ведь этот шейдер работает в программном режиме, да? А нельзя ли его реализовать через шедеры? Те, что *.gl по-моему...

Это вообще не шейдер. Стандартный блур GLScene просто берет отрендеренную картнику из буфера кадра, копирует ее в текстуру и рисует поверх экрана, многократно повторив. Простейший метод, не использующий никаких шейдеров, и потому работающий на любых видеокартах. Оно, конечно, понятно, что через шейдеры блур будет более качественный и быстрый, но все же хотелось бы, чтобы и такой вариант поддерживался.

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

Такие добрые люди может и есть, но к ним, как правило, нужно становиться в очередь .

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 04-10-2009 14:36
Это вообще не шейдер. Стандартный блур GLScene просто берет отрендеренную картнику из буфера кадра, копирует ее в текстуру и рисует поверх экрана, многократно повторив

Ах вон оно что. Ясно теперь.
Я кстати установил себе GLscene, теперь вот в примерах роюсь, да изучаю потихоньку
Оно, конечно, понятно, что через шейдеры блур будет более качественный и быстрый, но все же хотелось бы, чтобы и такой вариант поддерживался.

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

а вы уже записались на прием?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 04-10-2009 14:54
И только поэтому вы бросаете разработку? Это по меньшей мере странно...

Да не только поэтому. Это так, частный случай. На самом деле, таких ситуаций у меня множество.

а вы уже записались на прием?

Предпочитаю самолечение Сам себе не поможешь - никто не поможет.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 04-10-2009 15:16
Вот вопрос нагрянул, а как можно использовать OpenGL 2.0 в вашем проекте? Что для этого нужно сделать? Просто хочется посмотреть на рендер. Я конечно могу и сам разобраться, но на это уйдет время, поэтому спрашиваю у вас.

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 04-10-2009 15:32
А я сам пока не знаю. У меня ведь OpenGL 2.0 не поддерживается, так что я лишен возможности что-либо тестировать.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 04-10-2009 16:00
Жаль, ладно я сам разберусь. Кстати поставил себе версию такую же как у вас по началу, а потом обновил до августа сего года и уже нормально ваш проект компилится не хочет. Придется основу с нуля писать, чтобы лучше разобраться...

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 05-10-2009 21:05
Кстати, поставте себе новее версию, может проблем меньше будет. Если что, вот ссылка Скачать
Версия от 27.08.09г
Я все-таки надеюсь, что вы допишите новую версию...

частый гость
Группа: Участники
Сообщений: 12
Добавлено: 06-10-2009 12:57
Я все-таки надеюсь, что вы допишите новую версию...
Да, да! Были планы перевести игру с УЗД на ХЗД, хотелось, чтоб в ХЗД стало больше возможностей по работе с ланшафтом и т.д.
Надеюсь, что Вы Gecko, сможете преодолеть трудности и подарите народу действительно хороший движок для ГМ, а мы в свою очередь будем создавать свои шедевры.

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 06-10-2009 17:16
Хочу лишний раз оговориться:

1. Даже если я решу все технические проблемы, и 2.1 все-таки выйдет, ничего принципиально нового он из себя не будет представлять. Все тот же Xtreme3D.

2. С внедрением некоторых возможностей (например, шейдеров) связаны колоссальные трудности. Причина - в примитивности GML, ограниченных возможностях DLL, запутанности и чрезвычайно сильной "завязанности" этих возможностей на некоторых специфических чертах Pascal и объектной ориентированности Delphi. Так что шейдеров, возможно, и вовсе не будет.

3. Текущая версия Xtreme3D является наиболее стабильной. Я вряд ли смогу довести свою версию до такого уровня стабильности за ближайшее время.

4. Новых возможностей по работе с ландшафтом не будет, потому что их нет в самой GLScene. Из воздуха я ничего достать не могу.

5. Помните, что от меня мало что зависит. Я не профессиональный программист, я только начинаю изучать Delphi, я слабо разбираюсь в OpenGL. Не надо ждать от меня чудес.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 29-10-2009 15:22
Даже если я решу все технические проблемы, и 2.1 все-таки выйдет, ничего принципиально нового он из себя не будет представлять. Все тот же Xtreme3D.

Нового-то ничего, но мелкие доработки, в виде поддержки кириллицы и т.д делают разработку игры более удобной.
С внедрением некоторых возможностей (например, шейдеров) связаны колоссальные трудности. Причина - в примитивности GML, ограниченных возможностях DLL, запутанности и чрезвычайно сильной "завязанности" этих возможностей на некоторых специфических чертах Pascal и объектной ориентированности Delphi. Так что шейдеров, возможно, и вовсе не будет.

А те шейдеры, что в нынешней версии, что они из себя представляют или они явл. аналогами blur'а в плане построения, то есть реализованы внутренними функциями или как?
. Помните, что от меня мало что зависит. Я не профессиональный программист, я только начинаю изучать Delphi, я слабо разбираюсь в OpenGL. Не надо ждать от меня чудес.

Мы все хотим уповать на чудо, но, ведать, пока вы не готовы сделать это чудо, что ж будем ждать...

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 30-10-2009 18:50
А те шейдеры, что в нынешней версии, что они из себя представляют или они явл. аналогами blur'а в плане построения, то есть реализованы внутренними функциями или как?


Все эти шейдеры используют аппаратное ускорение и расширения OpenGL 1.3, но не все являются шейдерами в изначальном понимании этого слова.
Некоторые из них (CelShader, BumpShader) основаны на "вшитых" в компонент вершинных и фрагментных программах на ассемблере GPU (реализованы через расширения GL_ARB_Vertex_Program и GL_ARB_Fragment_Program). А, например, MultiMaterialShader не использует программируемый конвейер, и потому работает даже на старых видеокартах. То же самое касается HiddenLineShader и OutlineShader.
То есть, если написать на шейдерах какой-нибудь готовый эффект и внедрить его в DLL, то с этим проблем, я думаю, не будет.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 01-11-2009 12:54
Некоторые из них (CelShader, BumpShader) основаны на "вшитых" в компонент вершинных и фрагментных программах на ассемблере GPU (реализованы через расширения GL_ARB_Vertex_Program и GL_ARB_Fragment_Program). А, например, MultiMaterialShader не использует программируемый конвейер, и потому работает даже на старых видеокартах. То же самое касается HiddenLineShader и OutlineShader.

Интересно, а разве на первых порах нельзя ли ограничится таким же набором шейдеров в версии 2.1?
То есть, если написать на шейдерах какой-нибудь готовый эффект и внедрить его в DLL, то с этим проблем, я думаю, не будет.

А вообще, что можете сказать о разработке? Вы сейчас просто думаете или пытаетесь реализовать что-то?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 01-11-2009 16:47
Интересно, а разве на первых порах нельзя ли ограничится таким же набором шейдеров в версии 2.1?

Можно, конечно. Теперь, наверно, так и придется сделать.

А вообще, что можете сказать о разработке? Вы сейчас просто думаете или пытаетесь реализовать что-то?

Я решил несколько месяцев отдохнуть от X3D. Работаю над созданием собственного небольшого движка для С++. Это будет полезно для понимания того, как работает OpenGL. Сейчас как раз дошел до шейдеров - думаю, эти знания мне пригодятся, когда потом снова вернусь к разработке X3D 2.1.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 01-11-2009 17:14
Я решил несколько месяцев отдохнуть от X3D. Работаю над созданием собственного небольшого движка для С++. Это будет полезно для понимания того, как работает OpenGL. Сейчас как раз дошел до шейдеров - думаю, эти знания мне пригодятся, когда потом снова вернусь к разработке X3D 2.1.

Ну что сказать? Успехов Вам, будем ждать новостей

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 10-11-2009 10:15
Как и обещал, выкладываю X3D 2.1 в его текущем состоянии (без шейдеров, без блура, без половины остальных функций и с многочисленными багами :)

xtreme3d-2.1a-dev.zip

Зато прилагаются примеры bump mapping'а, освещения по Фонгу, материала Perlin noise, загрузки MD3, создания ландшафта.
Исходники, естественно, included.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 10-11-2009 11:00
Чего-то у меня неизвестная ошибка выскакивает во всех примерах, может дело в Win7, но тогда непонятно, ведь старое все работает, правда в более ранней версии 2.1 (там где модель md3 загружается), там вообще другая ошибка. Шрифт создать не может или что-то в этом духе. Вообще блин((

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 10-11-2009 11:08
О багах я предупреждал :)
Насчет шрифта - это да, в висте и семерке почему-то ошибку выдает. Я этим вопросом еще не занимался. Лучше пока просто убрать код создания шрифта и текста.
Вечером попробую примеры на висте протестить, может, выясню в чем дело.

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 10-11-2009 11:19
А, я понял, в чем дело. Надо просто убрать из Create эту строку:

MaterialCreate('mFont','data/font.bmp');

Ну, и текст тоже, чтобы на висте заработало:

//Create
font=WindowsBitmapfontCreate('Arial',10,0,128);
text=HUDTextCreate(font,'Xtreme3D'+chr(13)+'FPS: ',global.front);
HUDTextSetColor(text,c_white,0.5);
ObjectSetPosition(text,16,16,0);

//Step
HUDTextSetText(text,'Xtreme3D'+chr(13)+'FPS: '+string(framerate));

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 11-11-2009 10:11
Опять этот вирус проклятый! Ну ничего, подожду, пока сайт восстановят, потом перезалью архив. И SysConst.dcu чистый включу прямо в проект, чтобы вирусу кислород перекрыть.

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 12-11-2009 10:50
Перезалил, ссылка та же.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 13-11-2009 10:29
Этот вирус уже порядком достал
И SysConst.dcu чистый включу прямо в проект, чтобы вирусу кислород перекрыть.

Надеюсь больше мы его не увидим.
Вот у меня тут мысль появилась, возможно бредовая и бессмысленная, но все же. А нельзя ли написать к нынешней версии библиотеки как бы дополнение в виде библиотеки функции которой можно было использовать в Xtreme 2.0.2.0? Например, написать библиотеку, которая отвечала за создание ZShadow и эти функции попытаться использовать в версии 2.0.2.0... ведь может получится, с фантастической точки зрения
Ну или что-нибудь по-проще, например, таким образом добавить поддержку кириллицы в игры. Это только предположения, поэтому и вопрос, а возможно ли?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 13-11-2009 11:19
Мне это тоже приходило в голову, и я попробовал. Не срабатывает, unexpected error... Поразмыслив, я нашел этому следующую причину: id объектов из одной dll не действительны для другой. Следовательно, вьювер, созданный из одной dll, не будет рендерить объекты, созданные из другой. Это будут два совершенно разных контекста OpenGL.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 13-11-2009 21:50
Ну я так и думал, почти так
Кстати, я тут порылся по-лучше в GMI и понял, что там тени очень даже хорошие, не глючат и не едять много ресурсов, честно я бы не отказался от порта нынешнего иррлихта для GM, уж больно хорош он... да простит меня админ за мои слова))

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 14-11-2009 09:58
А что, я не против. GMI тоже отличный движок. Там и физика, и шейдеры, и все дела... И исходник имеется, можно попробовать скомпилировать.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 14-11-2009 11:03
Просто мне кажется, что GMI (если сделать его исходя из нынешней версии ирллихта) будет перспективней Xtreme3d и производительней в несколько раз, плюс имеется поддержка DX8, DX9 и OpenGL, шейдеры нового поколения и т.д т.д т.д...
Правда я не представляю какая каша получится если прикрутить его к GM, да и получится ли...
Что мне очень нравится в GMI - это поддержка GUI, там легко и вьюверы всякие писать и меню проще делается...есть преимущества, хотя и минусы наверное тоже имеются...

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 14-11-2009 11:39
Прикрутить-то можно, но для этого как минимум нужно потратить два года на изучение GMI (примерно столько я потратил на X3D), а потом еще полгода на изучение самого Irrlicht (столько у меня ушло на GLScene)... Хотя, может, и меньше времени уйдет (Irrlicht все же более популярен, чем GLScene, и к тому же поддерживается разработчиком).
Насчет производительности - не знаю, я серьезные тесты еще не делал, но на глаз особой разницы между ними нет. Во всяком случае, на моей системе. А перспективность - это да. И GUI там действительно отличный (правда, в GLScene есть почти такой же).


бывалый
Группа: Участники
Сообщений: 49
Добавлено: 14-11-2009 15:34
Можно ли сделать, чтобы в будущих версиях Xtreme3D показывались сообщения об ошибках? Слишком часто появляется Unexpected error и непонятно, как это исправить. Например, когда я загружаю модель, которая не может найти какую-то текстуру, возникает эта ошибка, и непонятно, какой текстуры не хватает. Пусть Xtreme3D сообщает, ЧТО он не может найти, и где он это ищет.

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 14-11-2009 16:11
Попробую, хотя и не обещаю.

бывалый
Группа: Участники
Сообщений: 49
Добавлено: 29-11-2009 11:13
Скоро выйдет новая версия X3D? Я про это уже давно ничего не слышал.

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 29-11-2009 16:19
С этим сейчас проблемы. Выход новой версии отложен на неопределенный срок. Почитай предыдущие посты - станет понятно, почему.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 26-08-2011 22:29
Gecko, приветствую вас. Собственно, не появляюсь здесь, только потому, что форум, цитирую "Запрошеный Вами информационный материал признан решением суда как экстремистский. Федеральный список экстремистских материалов - http://www.minjust.ru/ru/activity/nko/fedspisok/."

Вот, а через прокси-сайты сидеть не удобно. Я хотел спросить... пытаясь писать свою версию xtreme, я наткнулся на проблему, при построении GLSLShader'ов... я могу вполне загрузить простой шейдер, который будет окрашивать, например, объект, но передать параметры я не могу, так как не знаю, как сделать иначе, чем это делаю через процедуру TForm.GLSLShader1Apply(Shader TGLCustomShader). Вы говорили, что её можно 'вшить', но я не понимаю как, можете помочь чем или если разработки не секретные были, выложить свои наработки по cg шейдерам?

P.S Писал порт Irrlicht с Delphi версии. Очень понравилось работать с его архитектурой, жаль, что нормально он в GM не работал, так как окно самого движка делает неактивным окно GM, а как следствие, не все события работают :( Ко всему прочему, писать надо на C++, так как исходники открыты, а это значит не будет двух dll.

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 29-08-2011 18:13
Собственно, не появляюсь здесь, только потому, что форум, цитирую "Запрошеный Вами информационный материал признан решением суда как экстремистский. Федеральный список экстремистских материалов - http://www.minjust.ru/ru/activity/nko/fedspisok/."

Хмм... Нашел в этом списке только ныне несуществующий www.offtop.ru/????????/ (CENSORED BY ADMIN). Наверняка домен offtop.ru тупо блокируется провайдером, советую пожаловаться.

Насчет GLSL: процедуру можно встроить в саму DLL, и в ней передавать параметры для шейдера, текст которого тоже встроен в DLL (такой подход у стандартных шейдеров GLScene). Таким образом, теоретически, можно просто насоздавать в движке много встроенных эффектов на все случаи жизни, но тогда теряется основная суть шейдеров - программируемость.
Другой выход - вообще запретить uniform-параметры. По своему опыту знаю: можно реализовать очень много разных эффектов и моделей освещения, ограничившись стандартными атрибутами OpenGL (gl_Normal, gl_LightSource, gl_FrontMaterial и и т.д.) Единственное, для чего реально нужны параметры - это текстуры. Но их как раз-таки можно передавать во встроенной процедуре - я лично так и делаю. Можно, скажем, ограничиться восемью текстурными слоями, и просто передавать их во все фрагментные шейдеры как gl_Texture0, gl_Texture1, gl_Texture2 и т.д.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 05-09-2011 21:13
Нашел в этом списке только ныне несуществующий www.offtop.ru/????????/ (CENSORED BY ADMIN). Наверняка домен offtop.ru тупо блокируется провайдером, советую пожаловаться.

Да, наверное так и сделаем.

такой подход у стандартных шейдеров GLScene

Да, я глядел как реализовано, например, размытие в GLSLPostBlurShader, но пока не брался за разбор и переделку, а занялся более простыми вещами, которые решить куда важнее. Но потом вернусь к шейдерам естественно.

суть шейдеров - программируемость

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

Другой выход - вообще запретить uniform-параметры

Хорошая идея, спасибо. Возьму на заметку

P.S А можете вспомнить, с какими неразрешимыми проблемами вы столкнулись, при написании Xtreme? Хотелось бы узнать на будущее.
И кстати, какими проектами сейчас заняты или чем интересным?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 05-09-2011 22:32
А можете вспомнить, с какими неразрешимыми проблемами вы столкнулись, при написании Xtreme?

В основном, с проблемами при реализации тех или иных возможностей GLScene в виде интерфейса, понятного для GM. Исходников оригинального Xtreme нет, и как Xception реализовал, например, тот же блюр (равно как и множество других специфических вещей: ODE, DCE и т.д.), для меня оставалось загадкой. Сказалось отсутствие опыта работы с Delphi.

какими проектами сейчас заняты или чем интересным?

Понемногу пишу игровой движок на D. Собираюсь на днях сделать небольшой сайт по теме (fpsmag.zymichost.com/d), выложить свои наработки.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 03-12-2011 23:46
Исходников оригинального Xtreme нет, и как Xception реализовал, например, тот же блюр (равно как и множество других специфических вещей: ODE, DCE и т.д.), для меня оставалось загадкой

Скорее всего, практического применения нижеприведенного кода для вас нет, но, думаю, интересно все же, как реализуется Blur.

function BlurCreate: real; stdcall;
var
GLBlur1: TGLBlur;
begin
try
GLBlur1 := TGLBlur.CreateAsChild(SceneDummycube);
//В этой строчке все дело
GLBlur1.TargetObject := Scene.Objects;
GLBlur1.Width := 256;
GLBlur1.Height := 256;
GLBlur1.Preset := pBeastView;
Result := Integer(GLBlur1);
except
on E: Exception do
begin
MessageBox(0, PAnsiChar(E.Message), 'Xtreme3D Error...', MB_OK + MB_ICONWARNING + MB_TASKMODAL);
Result := 0;
Exit;
end;
end;
end;

Я не уверен, что все работает так, как надо. Там еще с контекстом веселье какое-то, но то, что эффект есть - факт.

А DCE я как-то писал, там все просто:

//Manager
function DceManagerCreate: real; stdcall;
var
DCEManager : TGLDCEManager;
begin
DCEManager := TGLDCEManager.Create(SceneNode);
Result := Integer(DCEManager);
end;

//Dynamic
function DceDynamicSetManager(const obj, man: real): real; stdcall;
begin
GetOrCreateDCEDynamic(TGLBaseSceneObject(Trunc(obj))).Manager := TGLDCEManager(Trunc(man));
Result := 1;
end;

Единственное, что в DCE я не реализовал, так это информация о столкновении: получение нормали и т.п А известная проблема с автогравитацией решается установкой значения этой самой гравитации в коде.

Все, как всегда, просто
Что-то вы затихли совсем, хочется посмотреть на ваши работы какие-нибудь, кроме журнала естественно!

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 04-12-2011 21:07
хочется посмотреть на ваши работы какие-нибудь, кроме журнала естественно!

Скоро все выложу, как и обещал. Правда, ничего сенсационного там нет - просто эдакая кодовая база, которая скапливается у любого программиста-любителя. Есть, например, программа-просмотровщик шейдеров на GLSL (использую ее для "обкатки" различных BRDF), прототип графического редактора на основе узлов-фильтров, игровой движок на ранней стадии разработки и еще разные мелочи.
Еще у меня была попытка написать ядро ОС на D - правда, пока только на уровне "Hello World"


бывалый
Группа: Участники
Сообщений: 49
Добавлено: 05-12-2011 19:26
Еще у меня была попытка написать ядро ОС на D - правда, пока только на уровне "Hello World"

Что значит была попытка? Получилось? А то я сомневаюсь, что на языке с такой громоздкой библиотекой, от которой нельзя избавиться, можно написать ядро ОС. В этой библиотеке наверняка полно вызовов взаимодействия с ОС. Хотя слышал, что есть ещё Kosmos - операционная система на C#.

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 06-12-2011 15:51
На D можно написать ядро, но не с DMD - придется использовать GDC. Я взял GDC под Linux, скомпилировал объектные файлы в ELF (разумеется, без обращений к рантайму и Phobos), написал загрузочный код на ассемблере и слинковал при помощи LD. Все получилось, мое "ядро" запускается и работает на эмуляторе (VirtualBox). Правда, оно пока умеет только выводить текст на экран.
В принципе, все то же самое можно сделать на обычном C - на который D и становится похож, если не использовать рантайм. Но ведь ничто не мешает постепенно написать свой рантайм, без системных вызовов. А там, глядишь, и Phobos можно адаптировать.
Кстати, по системному программированию есть отличный ресурс wiki.osdev.org. Собственно, там как раз есть статья по написанию ядра на D.

бывалый
Группа: Участники
Сообщений: 49
Добавлено: 06-12-2011 16:41
Кстати, по поводу GCC мне не ответили на вопрос из этой темы: http://offtop.ru/xtreme3d/view.php?part=16&t=678301. Он выдаёт Hello, World'ы по мегабайту и тестовая программа ещё медленнее, чем в DMD. Может, там всё-таки как-нибудь оптимизацию можно включить? А то не верится, что такой распространённый компилятор такой плохой.

Интересно, как под него рантайм написать. Это наверное посложнее, чем для C++, потому что куча функциональности в языке отваливается и он не так распространён. Хотя и для C++ я так и не смог написать полноценный рантайм. Не смог сделать поддержку исключений и чисел с плавающей запятой. Исключений нет ни в одном исходнике CRT. Вторую проблему я бы решил, если бы из-за первой не передумал писать свою CRT.

написал загрузочный код на ассемблере

Встраиваемом или отдельном?

запускается и работает на эмуляторе

А без эмулятора запускал?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 06-12-2011 18:40
Кстати, по поводу GCC

Он выдаёт Hello, World'ы по мегабайту

Судя по этому треду на stackoverflow.com, под Windows это вроде бы считается нормальным. MinGW статически линкует с программой стандартную библиотеку C++, поскольку по умолчанию не использует майкрософтовский рантайм. Под Linux нет такой проблемы, там libstdc++ - динамический.
Но я особо не вникал в проблему, на C++ давно уже не пишу.

Встраиваемом или отдельном?

На отдельном. NASM.

А без эмулятора запускал?

Нет, но должно работать: ядро пока предельно простое, в нем даже нет поддержки IRQ.

бывалый
Группа: Участники
Сообщений: 49
Добавлено: 06-12-2011 21:43
MinGW статически линкует с программой стандартную библиотеку C++, поскольку по умолчанию не использует майкрософтовский рантайм. Под Linux нет такой проблемы, там libstdc++ - динамический.

Он линкует только C-Runtime или ещё и STL? STL ведь вся inline и на шаблонах, в ней нечего линковать. В Visual C++ CRT можно тоже статически линковать, и там исполняемые файлы во много раз меньше.

Если вдруг у меня будет куча свободного времени, я протестирую GCC на производительность (ведь GDC основан на нём?) и, если она меня устроит, буду переписывать рантайм языка D. Стандартная библиотека мне не нужна, свою напишу, у меня уже есть опыт этого в C++. Я не использую STL. Написал свой класс строки, очень быстрый - быстрее, чем в STL. И возможностей у него побольше. Ещё написал свой класс массивов. Они поддерживают добавление в начало с той же скоростью, что и в конец. В свои классы я перенёс некоторые фишки языка D. Самая интересная - это оператор $:

String file="image.jpg";
String ext=file($-4, $);

ext=".jpg" причём нет никакого копирования и выделения памяти, так как используется счётчик ссылок
То же самое работает и с массивами.

D мне не подошёл по размерам exe и производительности, поэтому буду ностальгировать по нему на C++.

А что такое IRQ?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 06-12-2011 23:09
В Visual C++ CRT можно тоже статически линковать, и там исполняемые файлы во много раз меньше.

Я думаю, это проблема реализации библиотеки, а не компилятора/линкера - вызов одной функциии тянет за собой слишком много внутренних связей и зависимостей, и их в результате накапливается на несколько сот килобайт...

IRQ (Interrupt Request) - это прерывание, специальный сигнал процессору от оборудования, сообщающий о каком-либо событии. Например, о нажатии клавиши. Ядро должно на него реагировать - приостановить (прервать) текущий код и должным образом обработать сигнал.

Ответственный за CHM
Группа: Модераторы
Сообщений: 346
Добавлено: 12-12-2011 19:53
Что-то вы уже далеко от темы ушли, господа...
Хочется посмотреть работы, в особенности заинтересовал просмотрщик шейдеров на GLSL.
И все-таки, есть какой-то проект, реализация которого задумана дойти до финала? Пробовали ли вы, Gecko, работает ли Blur или этот этап уже пройден давно?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 14-12-2011 20:31
Пробовали ли вы, Gecko, работает ли Blur или этот этап уже пройден давно?

У меня сейчас нет установленного Delphi, поэтому не могу попробовать. А ставить только ради этого - как-то не хочется.