Об этом проекте

G3N (произносится «ген») — это открытый 3D-движок на OpenGL, написанный на языке программирования Go, предназначенный для создания кроссплатформенных приложений с богатыми и динамичными 3D-представлениями. ### Основные возможности - **Кроссплатформенность:** Работает на Windows, Linux и macOS, поддержка WebAssembly завершена на 90%. - **Встроенный GUI:** Включает базовый фреймворк с различными виджетами. - **Иерархический граф сцены:** Узлы могут содержать другие узлы для организации 3D-сцен. - **Пространственный звук:** Поддержка 3D-звука через OpenAL, включая форматы .wav и .ogg. - **Освещение и рендеринг:** Реализованы ambient, направленные, точечные и прожекторные источники света в реальном времени, а также физически корректный рендеринг (отражение Френеля, геометрическое затенение, распределение микрограней). - **Поддержка моделей и геометрии:** Загрузчики для glTF (.gltf, .glb), Wavefront OBJ (.obj) и COLLADA (.dae). Включает генераторы геометрии для кубов, сфер, цилиндров и торов, поддерживает morph targets и мультиматериалы. - **Анимация и шейдеры:** Фреймворк анимации для позиции, вращения и масштаба, поддержка пользовательских GLSL-шейдеров (вершинных, фрагментных и геометрических). - **Другие функции:** Поддержка HiDPI-дисплеев, перспективных и ортографических камер, TrueType-шрифтов, текстур изображений (GIF, PNG, JPEG), а также экспериментальный базовый физический движок. ### Зависимости и установка Для работы требуются Go 1.8+, драйвер OpenGL и C-компилятор, совместимый с GCC. На Unix-системах необходимы определенные C-библиотеки (например, xorg-dev, libgl1-mesa-dev, libopenal-dev и libvorbis-dev). Для сборки на Windows используется инструментарий mingw-w64, а на macOS требуются пакеты Homebrew для OpenAL и Vorbis. Установка выполняется стандартными командами Go: клонирование репозитория и запуск `go install ./...`. ### Примеры и сообщество В репозитории есть базовый пример «Hello G3N», показывающий синий тор и кнопку, меняющую его цвет, что демонстрирует работу камер, освещения и GUI. Проект предоставляет документацию API через GoDoc, вики-руководства и канал сообщества в Discord для поддержки и обсуждений.