Black Shark Graphics Engine

Модератор: Модераторы

Re: Black Shark Graphics Engine

Сообщение Дож » 28.05.2021 17:10:11

Но я наивно думал что в object`ах без виртуальных методов тип в рантайме не установить, т.к. соответствующий указатель появляется при появлении виртуальных методов в описании. сейчас глянул sizeof пустого обжекта не равен нулю. в делфи так стало в 2009. а в fpc давно так?

Я обнаружил это с 3.0.0. Тут ещё нужно учитывать, что в моём примере объекты в некотором смысле имеют виртуальные методы, потому что наличие в object'е конструктора автоматически приводит к генерации VMT, даже если нет явно объявленных виртуальных методов.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 878
Зарегистрирован: 12.10.2008 16:14:47

Re: Black Shark Graphics Engine

Сообщение zub » 28.05.2021 17:43:52

>>наличие в object'е конструктора автоматически приводит к генерации VMT
раньше не приводила. эх. портят обжект((
zub
долгожитель
 
Сообщения: 2809
Зарегистрирован: 14.11.2005 23:51:26

Re: Black Shark Graphics Engine

Сообщение runewalsh » 28.05.2021 18:24:42

zub писал(а):в object`ах без виртуальных методов тип в рантайме не установить

Без паники, просто конструкторы (constructor) тоже считаются, и вроде всегда считались, за реквест добавить VMT.
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 556
Зарегистрирован: 27.04.2010 00:15:25

Re: Black Shark Graphics Engine

Сообщение Дож » 28.05.2021 18:40:01

раньше не приводила. эх. портят обжект((

Я из-за этого у объектов, которым не нужны виртуальные методы, объявляю конструктор и деструктор как procedure Init(...) и procedure Done.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 878
Зарегистрирован: 12.10.2008 16:14:47

Re: Black Shark Graphics Engine

Сообщение zub » 28.05.2021 22:40:09

>>Без паники, просто конструкторы (constructor) тоже считаются, и вроде всегда считались, за реквест добавить VMT.
Спорить небуду, но емнип раньше такого небыло.
Ну ладно если VMT вызывается появлением конструктора, это переживем))
zub
долгожитель
 
Сообщения: 2809
Зарегистрирован: 14.11.2005 23:51:26

Re: Black Shark Graphics Engine

Сообщение Alex2013 » 30.05.2021 11:48:50

"Текст не тот и буквы не такие", а где собственно разговор про графику? Тема, между прочим, про графический OpenGL движок . Разумеется, автор не слишком много внимания уделил текстовой составляющей.

Что (ИМХО) желательно добавить в комплект движка ?

1 Про примеры я уже писал. (Вот довиду свою технодемку до "3-го уровня" развития возможно займусь их написанием - все равно на голом "Легаси OpenGl" далеко не уедешь, так что так или иначе нужен движок)

2 Уважающему себя 3д-движку нужен "конвертер моделей" или даже простой редактор .
Вроде этого.(Кстати для него есть исходник на ХайАсме и можно посмотреть, что и как там делается и сделать чуть лучше )
ИзображениеИзображение

3 Нужен свой скриптовый "суб-движок" для описание поведения элементов сцены и простая среда для их разработки.
(Это разумеется опционально но это очень полезная опция )
Когда-то я уже делал такую штуку .
ИзображениеИзображение

4 "Сборщик сены" это не редактор анимации и не редактор моделей .
Это примерно, то чем я занимаюсь прямо сейчас.
ИзображениеИзображение
Суть в возможности быстро и наглядно строить сцену "крупно панельным" способом из больших и сразу рабочих блоков .
Alex2013
долгожитель
 
Сообщения: 2403
Зарегистрирован: 03.04.2013 11:59:44

Re: Black Shark Graphics Engine

Сообщение BlackShark » 31.05.2021 12:34:44

Alex2013 писал(а):Уважающему себя 3д-движку нужен "конвертер моделей" или даже простой редактор .

Последняя версия Blender просто волшебна, изобретать подобный велосипед не вижу смысла, да и откуда время взять. Blender ваяет целая команда...
Alex2013 писал(а):Нужен свой скриптовый "суб-движок" для описание поведения элементов сцены и простая среда для их разработки.

Возможно, но я пока не осознал)
Alex2013 писал(а):"Сборщик сцены" это не редактор анимации и не редактор моделей .

А тот же Blender опять такое не перекроет? Какой то мало-мальский просмоторщик-редактор сцены в принципе навоять не сложно.. на первый взгляд.

По всем пунктам хочу отметить что все надстройки/прикладные штуки над движком в будущем буду стараться делать отдельными репозиториями, а движок в них включать как third party сабмодуль. Цели очевидны - не захламить сам движок, разделение компетенций, удобство сопровождения...
Аватара пользователя
BlackShark
новенький
 
Сообщения: 31
Зарегистрирован: 20.05.2019 12:52:15

Re: Black Shark Graphics Engine

Сообщение Alex2013 » 31.05.2021 16:43:00

BlackShark писал(а):Последняя версия Blender просто волшебна...

Для редактирования текста есть простейший notepad++ и есть например тоже весьма "волшебный" LibreOffice .

Но и то и другое бывает крейне полезно ( notepad++ лучше стандартного блокнота ( там например есть подсветка кода и проверка орфографии ) но столь же легок и прост, а LibreOffice как и Blender предоставляет более чем достойный функционал "на халяву").

А кроме того нельзя забывать, что "гипотетическая тулза для Аукулы" будет заточена именно под ее возможности, как кстати и 3D_konstruktor.( который, по сути, заточен на работу совместно, со средой программирования Hiasm и генерирует код моделей и сцен для их прямой вставки в схемы Hiasm.)

А это уже совсем другое дело. Это еще не редактор карт и окружений, для конкретной игры или программы, но нечто способное наглядно выжать из движка "200% его возможностей" (счет возможности конструирования сцен или моделей сразу "на движке" ) и легко доводимый до уровня специальной части прикладного пакета при наличии продуманной системы пользовательских плагинов.

Это все таже идея визуального программирования что и в библиотеке классов VCL ( притом что без визуального программирования вполне можно обойтись в случае создания простых интерфейсов оно способно ускорять разработку многократно ) То есть я предлагаю превратить Акулу в бюджетный вариант "Unity 3D" :idea:
Изображение

Добавлено спустя 31 минуту 49 секунд:
BlackShark писал(а):А тот же Blender опять такое не перекроет? Какой то мало-мальский просмоторщик-редактор сцены в принципе навоять не сложно.. на первый взгляд.


Совершенно не перекрывает ... это видно уже по моей недоделке.... Все то что я могу делать в разделе "Коллекция объектов" я могу делать ( и по сути и делаю) без ее ...

Но что я получу "на выходе" если пойду этим путем ? Очередную достаточно бессмысленно сериию абстрактных демок "для демосцены" красивых но "ни о чем" !

Но прикол в том что я изначально не планировал заниматься демосценой. Я пишу техно-демку которая по стути уже сейчас представляет из себя немного немало Редактор демосцен . Улавливаешь в чем суть ? В место кучи бессмысленных программ я пишу одну единственную (правда тоже не прикладную, а "экспериментальную" но с понятными целями), но это не "мега-демка" просто включающая в себя все варианты готовых сцен, а пусть пока еще детский , но самого начла "конструктор и проводник", в котором можно из "кучи кубиков" строить хоть кривой шалаш хоть целые замки и даже не много бродить по ним " в режиме ручного управления ".

В результате у меня уже сейчас есть возможность снимать по сути бесконечное количество весама впечатляющих роликов и скринов прикладывая к их созданию абсолютный минимум усилий или вообще использовать еще только разрабатываемую программу как весьма полезную утилиту для ВиАр.
ИзображениеИзображение
ИзображениеИзображение

Красиво? B и это при том что я сейчас пишу совсем не движок и не редактор . Но если такой подход применить и в Акуле то там можно добиться куда более впечатляющих результатов . (Особенно если совместить его со скриптовым "суб-движком" )

Добавлено спустя 18 часов 9 минут 2 секунды:
BlackShark писал(а):По всем пунктам хочу отметить что все надстройки/прикладные штуки над движком в будущем буду стараться делать отдельными репозиториями, а движок в них включать как third party сабмодуль. Цели очевидны - не захламить сам движок, разделение компетенций, удобство сопровождения...


Возможно в этом есть смысл . Но (ИМХО) только если разрабатывать "расширения и удобства" паралельно движку . Потому, что именно в них можно реально показать и задействовать все "изюминки" Акулы и просто белее качественно отладить движок . К тому же движков есть огромное множество, но только малая часть имеет "расширения и удобства".

(И тут очень важно не переборщить с уровнем навороченности этих самых "удобств" особенно "на начальном уровне использования" (возможно даже разделив "расширенный" и "простой" режимы явно ) + можно оделить часть функционала в отдельные утилиты ( отдельно редактор моделей,отдельно конструктор сцен, отдельно среду разработки скриптов, отдельно разные "2д-помошнки" и т.д. модули могут запускать друг друга или иметь программу интегратор но перебарщивать с этим точно не стоит. )
Alex2013
долгожитель
 
Сообщения: 2403
Зарегистрирован: 03.04.2013 11:59:44

Re: Black Shark Graphics Engine

Сообщение BlackShark » 05.11.2021 19:45:31

Обновил дистрибутив до версии 2.02 со следующими изменениями:

    + добавлен загрузчик 3d-сцен и 3d-объектов в формате спецификации COLLADA (см. пример TBSTestCollada);
    + скелетная анимация;
    + инстансинг 2d примитивов реализован классом TBlackSharkInstancing2d (см. пример TBSTestInstancing2d);
    + в инстансинге добавлена поддержка индивидуального цвета для каждого экземпляра;
    + bs.canvas.TArc:
      + добавлено позиционирование от центра через новое свойство bs.canvas.TArc.Position2dCenter;
      + добавлен коэффициент сглаживания: property TArc.InterpolateFactor;
    + bs.canvas.TPath:
      + добавлена возможность построения путем добавления арки в конец кривой (см. пример TBSTestCanvasPathArc);
      + добавлен коэффициент сглаживания: propery InterpolateFactor;
    + новый класс мультицветного пути: TPathMultiColored;
    + доработан базовый класс TBSTest:
      + добавлена возможность перемещать камеру с помощью горячих клавиш AWSD и поворачивать курсорными;
      + добавлены виртуальные методы для мышки и клавиатуры;
      + поворот камеры вокруг своей оси через среднюю кнопку мышки;
      + перемещение камеры через левую кнопку мышки;
      + свойство включения манипуляции камеры с помощью мышки property Allow3dManipulationByMouse; по умолчанию выключено;
    + платформенно-зависимые ресурсы разделены по поддиректориям и теперь подгружаются автоматически в зависимости от типа платформы;
    + новый подход применения шейдеров в графических объектах - в момент назначения шейдера у него запрашиваются необходимые юниформы, вместо явного приведения к необходимому типу шейдера;
    + новый виртуальный метод bs.shader.TBlackSharkShader.DefaultName позволяющий загружать файл шейдера по умолчанию;
    + TheXmlWriter - исправлено ряд багов;

Промо-ролик презентации поддержки спецификации COLLADA:
https://youtu.be/Q7aOci3Pj1s
Последний раз редактировалось BlackShark 08.11.2021 21:37:11, всего редактировалось 1 раз.
Аватара пользователя
BlackShark
новенький
 
Сообщения: 31
Зарегистрирован: 20.05.2019 12:52:15

Re: Black Shark Graphics Engine

Сообщение Alex2013 » 07.11.2021 23:41:16

Спасибо за труды, попробую ! ( Возможно в этой итерации все-же получится подключить к Акуле VR менее варварским способом чем в прошлый раз . )
Alex2013
долгожитель
 
Сообщения: 2403
Зарегистрирован: 03.04.2013 11:59:44

Re: Black Shark Graphics Engine

Сообщение BlackShark » 08.11.2021 22:16:46

Alex2013 писал(а):Спасибо за труды, попробую ! ( Возможно в этой итерации все-же получится подключить к Акуле VR менее варварским способом чем в прошлый раз . )

На здоровье.
Сделал меньше чем хотелось, но больше чем ожидал)) Про "меньше" имею ввиду хотелки/пожелания. Про "больше" - поддержка спецификации COLLADA. С ней конечно намаялся - ещё тот зоопарк, и ряд свойств всё ещё не поддерживается в движке (освещение, материалы, эффекты, может и ещё что).
Аватара пользователя
BlackShark
новенький
 
Сообщения: 31
Зарегистрирован: 20.05.2019 12:52:15

Re: Black Shark Graphics Engine

Сообщение Alek_Aaz » 23.11.2021 07:23:47

BlackShark писал(а):Про "больше" - поддержка спецификации COLLADA.

А зачем COLLADA? Чем gltf плох?
Alek_Aaz
новенький
 
Сообщения: 36
Зарегистрирован: 26.11.2007 04:13:06

Re: Black Shark Graphics Engine

Сообщение BlackShark » 23.11.2021 19:28:20

Alek_Aaz писал(а):А зачем COLLADA? Чем gltf плох?

Collada прилично постарше, соотв-но значительно распространённее, и вроде как пока ещё вполне себе актуальна.
Чем плох gltf не скажу, наоборот, наверняка какие то есть преимущества в сравнении с Collada, авторы то вроде те же. Может хотели сократить объём хранимых данных, а может ориентация на веб
Аватара пользователя
BlackShark
новенький
 
Сообщения: 31
Зарегистрирован: 20.05.2019 12:52:15

Re: Black Shark Graphics Engine

Сообщение BlackShark » 17.01.2022 14:08:42

Доброго дня!
Опубликовал версию 3.0 со следующими изменениями:
    + удалены зависимости от LCL/VCL/FMX во всех юнитах, за исключением "bs.viewport";
    + собственный тип приложения Black Shark (см. примеры: "/tests/delphi/BSApplication" и "/tests/lazarus/BSApplication"); поддерживается так же компилятор из поставки Delphi под Linux;
    + новая система окон (см. пример "bs.test.windows.TBSTestWindows", запуск из проекта "BSApplicatoin" через параметр в командной строке);
    + улучшена производительность для приложений базирующихся на вьюпорте TBlackSharkViewPort (LCL/VCL);
    + добавлен свой декодер PNG ресурсов;
    + добавлена автоматическая поддержка 32-битных индексов требуемых для высокополигональных моделей; перевод с 16-битного на 32-битный выполняется в случае превышения колличества индексов значения 65536;
    + добавлен счётчик числа кадров в секунду: "bs.renderer.TBlackSharkRenderer.FPS";
    + улучшена производительность для TPath и его наследников для линии толщиной в 1 пиксель;
    + bs.align - фикс для правого/нижнего якоря;
    + телеграм канал: https://t.me/BSharkGE
    + тема на форуме Lazarus: https://forum.lazarus.freepascal.org/index.php/topic,45454.30.html
Аватара пользователя
BlackShark
новенький
 
Сообщения: 31
Зарегистрирован: 20.05.2019 12:52:15

Пред.

Вернуться в Графика

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru