Irrlicht (произносится как [ˈɪʁlɪçt] на немецком языке) — игровой движок с открытым исходным кодом, написанный на языке C++ . Он кроссплатформенный , официально работает на Windows , macOS , Linux и Windows CE , и благодаря своей открытой природе доступны порты на другие системы, включая FreeBSD , Xbox (до версии Irrlicht 1.8.1), PlayStation Portable , [1] Symbian , [2] iPhone , [3] AmigaOS 4 , [4] Sailfish OS через оболочку Qt/QML, [5] и Google Native Client . [6]
Irrlicht известен своим небольшим размером и совместимостью как с новым, так и со старым оборудованием, простотой обучения и большим дружелюбным сообществом. [7] [ ненадежный источник? ] Существуют неофициальные привязки для многих языков, включая AutoIt , [8] C++Builder , [9] FreeBASIC , [10] GameMaker Language , [11] Java , [12] Lua , [13] .NET , [14] [15] [16] Object Pascal ( Delphi ), [17] [18] Perl , [19] Python , [20] [21] и Ruby , [22] хотя большинство из них не поддерживаются уже пять лет или более.
Разработка Irrlicht началась в 2003 году одним разработчиком, Николаусом Гебхардтом. [23] Только после выпуска Irrlicht версии 1.0 в 2006 году команда выросла до десяти человек по состоянию на 2011 год, большинство из которых были разработчиками. [24]
Irrlicht — это распространённое немецкое слово, обозначающее блуждающий огонёк .
Irrlicht поддерживает 3D-рендеринг через OpenGL , DirectX 8, 9 и внутренние программные растеризаторы. DirectX 8 не поддерживается после 1.8.1, [25] фактически прекращая поддержку Xbox. Внешние рендереры и системы управления окнами подключаются через простые интерфейсы, что приводит к созданию видеодрайвера Simple DirectMedia Layer (SDL), созданного сообществом, и поддержке устройств iPhone и Symbian . Движок поставляется с библиотекой стандартных рендереров материалов, что позволяет использовать резервные материалы, когда пользовательское оборудование не может обрабатывать расширенные методы. Новые материалы могут быть добавлены в движок во время выполнения, что позволяет пользователям писать свои собственные по мере необходимости. В дополнение к устаревшим материалам конвейера с фиксированными функциями поддерживаются программируемые пиксельные и вершинные шейдеры (1.1 до 3.0 и 4.0 с использованием GLSL), фрагментные и вершинные программы ARB, материалы HLSL , Cg и GLSL .
Irrlicht поддерживает множество форматов файлов. Он загружает и отображает файлы 3ds Max, модели Quake 2 MD2, объекты Wavefront .obj, карты Quake 3 .bsp, объекты Milkshape3D и файлы DirectX .x. [26] Дополнительные загрузчики форматов были написаны как внешние плагины. Освещение, камеры и 3D-объекты управляются как дерево узлов сцены , произвольных группируемых сущностей, связанных вместе в графе сцены . Эти узлы отвечают за свое собственное поведение, но также могут управляться аниматорами, друг другом или вручную пользователями.
Существует множество встроенных типов узлов, которые можно использовать вместе для создания сложных внутренних и внешних сцен. Новые узлы легко создавать, и их можно добавлять во время выполнения; многие дополнительные типы узлов доступны в сообществе. Типы узлов, упакованные с Irrlicht, включают в себя рендерер ландшафта и купола-ящики неба для внешнего рендеринга, двоичное разделение пространства (BSP) для внутреннего рендеринга, анимированные сетки на основе костей, трафаретные тени, рекламные щиты и системы частиц, водные поверхности и примитивы.
Доступен 2D графический пользовательский интерфейс (GUI) с возможностью изменения скинов, поддерживающий множество элементов управления и возможность для пользователей подключать собственные (или созданные сообществом) пользовательские виджеты во время выполнения. Внутренняя система событий Irrlicht обеспечивает события мыши, клавиатуры, джойстика и GUI без необходимости полагаться на дополнительные библиотеки. [27]
Доступ к файловой системе абстрагирован, что обеспечивает независимый от платформы доступ к файлам и папкам, а также прозрачный доступ к файлам в архивах ZIP . Другие функции ввода-вывода включают в себя считыватель и пишущий XML, возможность делать снимки экрана, манипулировать изображениями и сетками, а затем сохранять их в нескольких различных форматах файлов.
Irrlicht обеспечивает поддержку простого обнаружения столкновений, включая выбор мыши, но пользователям следует помнить, что это не предназначено для замены полнофункционального физического движка .
Irrlicht был разработан с возможностью загрузки и сохранения текущей сцены в XML-файл; это в сочетании с моделью лицензирования движка с открытым исходным кодом привлекло различных программистов и разработчиков к созданию редакторов мира для Irrlicht, чтобы упростить процесс создания мира. Одним из таких примеров является редактор мира irrEdit , разработанный Николаусом Гебхардтом и другими членами компании Ambiera. [28] IrrEdit содержит генератор карты освещения radiosity и интерфейс сценариев с использованием скриптов Squirrel .
Поскольку Irrlicht сам по себе не поддерживает звук, Ambiera также разработала irrKlang, несвободную, проприетарную аудиобиблиотеку с API, похожим на Irrlicht. [29] Будучи разработанной той же группой, irrEdit поддерживает использование звуков в уровнях, созданных irrEdit для использования с скомпилированными DLL с поддержкой irrKlang. Также среди творений Ambiera есть irrXML, XML-парсер Irrlicht.
Для многих физических библиотек были написаны плагины и оболочки для Irrlicht, включая Nvidia PhysX , Bullet и Open Dynamics Engine .
Дополнительные расширения можно найти на форумах Irrlicht и в проекте irrExt, побочном проекте Irrlicht для специальных дополнений.
На форумах также есть несколько новых технологий, таких как Deferred shading или Shadow mapping . Многие пользователи вносят расширения, такие как Compute Shaders ( OpenGL 4.3) и Tessellation Shaders (Shader Model 5.0).