====== 3D-движок ====== Компонент приложения, отвечающий за рендеринг и вывод на экран трехмерных моделей. Как правило, подразумевается вывод в реальном времени, синхронизированный с моделируемыми процессами и пользовательским вводом. 3D-движок - ключевой компонент трехмерных игр, приложений виртуальной реальности, пакетов 3D-моделирования, CAD-программ, различных симуляторов и пр. Синонимы: рендер, визуализатор, графический движок. Чаще всего игровые 3D-движки используют аппаратное ускорение графики и основаны на системном графическом API, таком как [[DirectX]], [[OpenGL]] или [[Vulkan]]. До появления видеоускорителей в играх использовались полностью программные визуализаторы - например, на основе [[рейкастинг|рейкастинга]] или программной растеризации. Понятие "3D-движок" часто употребляют в значении "игровой движок", но это некорректно. Игровой движок - это комплекс технологий, включающий визуализатор, звуковую подсистему, систему ввода, обмен данными по сети, функции управления сценами и игровыми объектами. 3D-движок - лишь часть игрового движка, хотя и наиболее важная. К тому же 3D-движки используются не только в играх. Также некорректно называть 3D-движками графические API - они предоставляют базовые прямые функции рендеринга, но не включают средств управления ресурсами и не содержат эвристических оптимизаций, необходимых для отрисовки сложных сцен. При помощи графического API нельзя вывести на экран модель без написания [[бойлерплейт_код|бойлерплейт-кода]] и [[модели данных]], а это во многих случаях нетривиальная задача. Функциями 3D-движка как раз и являются сокрытие сложности графического API (абстракция) и предоставление готовой модели данных, а также реализация тех или иных [[графические_техники|графических техник]] и распространенных оптимизаций. 3D-движок служит высокоуровневым слоем абстракции между графическим API и логикой приложения. ===== Примеры ===== * [[OGRE]] - популярный свободный 3D-движок для игр * [[GLScene]] - 3D-движок для Delphi * [[Eevee]] и [[Cycles]] - визуализаторы, входящие в состав [[Blender]]. Cycles примечателен тем, что это один из немногих свободных [[трассировка_лучей|трассировщиков лучей]], способных работать почти в реальном времени (при наличии мощной видеокарты) и при этом генерировать фотореалистичное изображение.