что такое гп рендеринга opengl

Русские Блоги

Процесс рендеринга OpenGL

1. Что такое OpenGL?

OpenGL определяется как «интерфейс программного обеспечения для графического оборудования». По сути, это 3D-графическая и модельная библиотека с высокой степенью переносимости и имеет очень быструю скорость.

Второй. Трубопровод

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

Я считаю, что нет оснований OpenGL, я не понимаю, следующее представит этот процесс, а затем посмотреть на него первым.Серия коллекции Encyclopedia GPUЭто абсолютно полезно для понимания принципов работы OpenGL.

В-третьих. Подробная линия

Ниже этой картины «Руководство по программированию OpenGL ES 3.0«Этот процесс является программируемой строкой.

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

1.VBO/VAO(Объект буфера вершины или объект массива вершины):

2.VertexShader(Вершинский шейдер):

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

3.PrimitiveAssembly(Им Сборка):

Верхняя стадия вершинного шейдера является основной сборкой, примитив является геометрическим объектом, таким как треугольник, прямая или точка эльфа. Этот этап сочетает в себе вершины вывода из вершины шейдера в камеру.

4.rasterizationРастирация):

5.FragmentShader(Фрагмент шейда):

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

6.Per-Fragment Operations(Работа фрагмента

На этом этапе выполняются следующие функции на каждом сегменте:

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

(1) Pixelownersetest (принадлежность пикселей):

Этот пиксель используется для определения положения (x, y) в буфере кадра, не принадлежит токосовому контексту. Например, если окно буфера кадра дисплея маскируется другим окном, оконная система может определить, что затененный пиксель не принадлежит к контексту этой OpenGL, чтобы эти пиксели не отображались.

(2) Scissortest (поездка):

Если фрагмент расположен за пределами области обрезки, он заброшен.

(3) Stensilthest и Intebtest (шаблон и тест глубины):

Тест глубины лучше понят, что если глубина фрагментатора возвращается меньше глубины в буфере, она отбрасывается. Шаблонные тесты не использовались, неясно, в частности, функция угадания должна быть как имя, форма шаблона может быть передана.

(4) смешивание:

Значение цвета вновь сгенерированного фрагмента в сочетании со значением цвета, хранящимися в буфере кадра, чтобы генерировать новый RGBA.

(5) Дигерирование:

Я не знаю, является ли это Бог лошадь?

Наконец, поместите сгенерированный клип в буфер кадра (передний буфер или после буфера или FBO), если не FBO, экран рисует защелки в буфере, генерирует пиксели на экране.

7. Фиксированный трубопровод

Фиксированный трубопровод представляет собой линию рисования OpenGL без шейдера, и OpenGL3.0 отменил эту функцию. Поток фиксированного трубопровода выглядит следующим образом:

Источник

Как настроить видеокарту NVIDIA для игр

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

Технические гайды для геймеров на ПК

Купить и установить видеокарту — это только половина дела. Ее ведь еще необходимо и правильно настроить. В этой статье мы расскажем, что нужно делать и дадим рекомендации по настройкам панели управления NVIDIA.

Установка драйвера

Самое первое что нужно сделать после установки новой видеокарты — скачать и установить драйвера. Если до этого у вас стояла другая видеокарта, то старый драйвер желательно удалить. Проще всего воспользоваться утилитой Display Driver Uninstaller.

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

Скачать драйвер NVIDIA можно на официальном сайте. Заполните поля в соответствии с вашей видеокартой и операционной системой. Также выбирайте Game Ready, так как студийные драйвера предназначены для рабочего софта.

Динамический диапазон и формат цвета

После установки драйвера нужно зайти в «Панель управления NVIDIA». Попасть туда можно кликнув по значку NVIDIA в трее или кликнуть правой кнопкой мыши на рабочем столе и выбрать из появившегося меню нужный пункт.

Слева в разделе «Дисплей» выберите пункт «Изменение разрешения». Разрешение и частота обновления должны по умолчанию стоять оптимальные, но если это не так, то нужно поправить руками. Ставьте родное разрешение монитора и максимально доступную частоту обновления. В нашем случае это [email protected]Гц.

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

А вот пункт «Применить следующие настройки» уже интереснее. Для наилучшей картинки нужно установить формат цвета RGB и полный динамический диапазон. В случае подключения по DisplayPort это должно стоять по умолчанию, а если используется HDMI, то диапазон может быть ограниченным. В этом случае картинка может казаться бледной, выцветшей.

Форматы цвета YCbCr 422 и 444 использовать на мониторе не стоит. Но их можно ставить, если RGB недоступен, например, в силу старой версии HDMI, которой не хватает пропускной способности. Так, сигнал 4К@60Гц с HDR по HDMI версии 2.0 передать в RGB с полным диапазоном не получится. Страшного здесь ничего нет, главное — поставить ограниченный диапазон и в настройках телевизора/монитора.

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

Зайдите также в раздел «Видео» и «Регулировка параметров цвета для видео». Включите переключатель «С настройками NVIDIA» и перейдите на вкладку «Дополнительно». Активируйте полный динамический диапазон.

Управление параметрами 3D

По умолчанию все графические настройки задаются 3D-приложением (в нашем случае игрой). То есть, вы меняете графические настройки, например, качество сглаживания и анизотропной фильтрации, непосредственно в игре. Но драйвер NVIDIA также позволяет тонко настраивать графические параметры. Так, например, можно установить сглаживание для старых игр, где такой опции вообще нет.

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

После выбора настроек не забудьте применить их, нажав на соответствующую кнопку внизу экрана.

Настройки GeForce Experience

Также стоит кое-что сделать и в программе GeForce Experience, которая идет вместе с драйвером. Сначала вам будет нужно создать учетную запись, тогда можно будет пользоваться всеми функциями.

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

Здесь мы рекомендуем включить внутриигровой оверлей. С его помощью можно делать скриншоты и записывать геймплей. Учтите, что функция «Мгновенный повтор» записывает видео в фоне, поэтому влияет на производительность.

Разгон в MSI Afterburner

В разгоне нет ничего страшного, если не лезть в дебри. Нужно установить утилиту MSI Afterburner и сдвинуть пару ползунков. При этом ничего у вас не сгорит и не испортится, а прирост кадров получите гарантированно.

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

Источник

Рендеринг 3D графики с помощью OpenGL

Введение

Что такое OpenGL?

OpenGL — cпецификация, определяющая платформонезависимый программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику. OpenGL не является реализацией, а только описывает те наборы инструкций, которые должны быть реализованы, т.е. является API.

Каждая версия OpenGL имеет свою спецификацию, мы будем работать начиная с версии 3.3 и до версии 4.6, т.к. все нововведения с версии 3.3 затрагивают мало значимые для нас аспекты. Перед тем как начать писать своё первое OpenGL приложение, рекомендую узнать какие версии поддерживает ваш драйвер(сделать это можно на сайте вендора вашей видеокарты) и обновить драйвер до последней версии.

Устройство OpenGL

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

Например, если мы перед отрисовкой передадим OpenGL команду использовать линии вместо треугольников, то OpenGL все последующие отрисовки будет использовать линии, пока мы не изменим эту опцию, или не поменяем контекст.

Объекты в OpenGL

Библиотеки OpenGL написаны на C и имеют многочисленные API к ним для разных языков, но тем не менее это C библиотеки. Множество конструкций из языка С не транслируются в высокоуровневые языки, поэтому OpenGL был разработан с использованием большого количества абстракций, одной из этих абстракций являются объекты.

Объект в OpenGL — это набор опций, который определяет его состояние. Любой объект в OpenGL можно описать его (id) и набором опций, за который он отвечает. Само собой, у каждого типа объектов свои опции и попытка настроить несуществующие опции у объекта приведёт к ошибке. В этом кроется неудобство использования OpenGL: набор опций описывается C подобной структурой идентификатором которого, зачастую, является число, что не позволяет программисту найти ошибку на этапе компиляции, т.к. ошибочный и правильный код семантически неотличимы.

С таким кодом вы будете сталкиваться очень часто, поэтому когда вы привыкнете, что это похоже на настройку конечного автомата, вам станет намного проще. Данный код лишь показывает пример того, как работает OpenGL. В последствии будут представлены реальные примеры.

Но есть и плюсы. Основная фишка этих объектов состоит в том, что мы можем объявлять множество объектов в нашем приложении, задавать их опции и когда бы мы не запускали операции с использованием состояния OpenGL мы можем просто привязать объект с нашими предпочитаемыми настройками. К примеру этом могут быть объекты с данными 3D модели или нечто, что мы хотим на этой модели отрисовать. Владение несколькими объектами позволяет просто переключаться между ними в процессе отрисовки. С таким подходом мы можем сконфигурировать множество объектов нужных для отрисовки и использовать их состояния без потери драгоценного времени между кадрами.

Чтобы начать работать с OpenGL нужно познакомиться с несколькими базовыми объектами без которых мы ничего не сможем вывести на экран. На примере этих объектов мы поймём как связывать данные и исполняемые инструкции в OpenGL.

Базовые объекты: Шейдеры и шейдерные программы.=

Shader — это небольшая программа которая выполняется на графическом ускорителе(GPU) на определённом этапе графического конвейера. Если рассматривать шейдеры абстрактно, то можно сказать, что это этапы графического конвейера, которые:

Но как же выглядит графический конвейер? Очень просто, вот так:

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl
Пока в этой схеме нас интересует только главная вертикаль, которая начинается с Vertex Specification и заканчивается на Frame Buffer. Как уже говорилось ранее, каждый шейдер имеет свои входные и выходные параметры, которые отличаются по типу и количеству параметров.
Кратко опишем каждый этап конвейера, чтобы понимать, что он делает:

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга openglчто такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

Шейдеры OpenGL пишутся на специальном С-подобном языке GLSL из которого они компилируются и линкуются в шейдерную программу. Уже на данном этапе кажется, что написание шейдерной программы это крайне трудоёмкое занятие, т.к. нужно определить 5 ступеней графического конвейера и связать их воедино. К большому счастью это не так: в графическом конвейере по умолчанию определены шейдеры тесселяции и геометрии, что позволяет нам определить всего два шейдера — вершинный и фрагментный (иногда его назвают пиксельным шейдером). Лучше всего рассмотреть эти два шейдера на классическом примере:

Эти два простых шейдера ничего не вычисляют лишь передают данные дальше по конвейеру. Обратим внимение как связаны вершинный и фрагментный шейдеры: в вершинном шейдере объявлена out переменная Color в которую будет записан цвет после выполнения главной функции, в то время как в фрагментном шейдере объявлена точно такая же переменная с квалификатором in, т.е. как и описывалось раньше фрагментный шейдер получает данные из вершинного посредством нехитрого прокидывания данных дальше через конвейер (но на самом деле не всё так просто).

Замечание: Если в фрагментном шейдере не объявить и не проинициализировать out переменную типа vec4, то на экран ничего выводиться не будет.

Внимательные читатели уже заметили объявление входных переменных типа vec3 со странными квалификаторами layout в начале вершинного шейдера, логично предполагать что это входные данные, но откуда нам их взять?

Базовые объекты: Буферы и Вершинные массивы

Я думаю не стоит объяснять что такое буферные объекты, лучше рассмотрим как создать и заполнить буффер в OpenGL.

Ничего сложно в этом нет, привязываем сгенереный буффер к нужному таргету (позже узнаем к какому) и загружаем данные указывая их размер и тип использования.

GL_STATIC_DRAW — данные в буфере изменяться не будут.
GL_DYNAMIC_DRAW — данныe в буфере будут изменяться, но не часто.
GL_STREAM_DRAW — данные в буфере будут изменяться при каждом вызове отрисовки.

Отлчно, теперь в памяти GPU расположенные наши данные, скомпилирована и слинкована шейдерная программа, но остаётся один нюанс: как программа узнает откуда брать входные данные для вершинного шейдера? Данные мы загрузили, но никак не указали откуда шейдерной программе их брать. Эту задачу решает отдельный тип объектов OpenGL — вершинные массивы.

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

Как и с буферами вершинные массивы лучше рассмотреть на примере их конфигурации

Создание вершинных массивов ничем не отличается от создания других OpenGL объектов, самое интересное начинается после строчки: Вершинный массив (VAO) запоминает все привязки и конфигурации проводимые с ним, в том числе и привязывание буферных объектов для выгрузки данных. В данном примере такой объект всего один, но на практике их может быть несколько. После чего производится конфигурация вершинного атрибута с определённым номером:

Всё теперь мы готовы отрендерить наше первое изображение

Не забудьте привязать VAO и шейдерную программу перед вызовом отрисовки.

Если вы всё сделали правильно, то вы должны получить вот такой результат:

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

Результат впечатляет, но откуда в треугольнике градиентная заливка, ведь мы указали всего 3 цвета: красный, синий и зелёный для каждой отдельной вершины? Это магия шейдера растеризации: дело в том, что во фрагментный шейдер попадает не совсем то значение Color которое мы установили в вершинном. Вершин мы передаём всего 3, но фрагментов генерируется намного больше (фрагментов ровно столько же сколько закрашенных пикселей). Поэтому для каждого фрагмента берётся среднее из трёх значений Color в зависимости от того насколько близко он находится к каждой из вершин. Это очень хорошо прослеживается у углов треугольника, где фрагменты принимают то значение цвета, которое мы указали в вершинных данных.

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

Думаю на этом стоит закончить данную статью, самое сложное уже позади, но самое интересное только начинается. Если у вас есть вопросы или вы увидели ошибку в статье, напишите об этом в комментариях, я буду очень признателен.

В следующей статье мы рассмотрим трансформации, узнаем о unifrom переменных и научимся накладывать текстуры на примитивы.

Источник

Как настроить видеокарту NVidia для динамических игр

Мало кто задумывается о том, что программное обеспечение видеокарты необходимо настраивать под свои нужды. Многие начинающие пользователи даже не знают о том, что можно настроить видеокарту NVidia для игр и графики. Точнее настроить можно любую видеокарту, но мы будем говорить об NVidia.

Конечно, если ваш компьютер старенький и маломощный, или он вам необходим только, как печатная машинка, то тех настроек, которые установлены по умолчанию вам вполне достаточно.

что такое гп рендеринга opengl. Смотреть фото что такое гп рендеринга opengl. Смотреть картинку что такое гп рендеринга opengl. Картинка про что такое гп рендеринга opengl. Фото что такое гп рендеринга opengl

Все современные видеокарты изначально настроены на максимальное качество картинки и наложение всех поддерживаемых этим устройством эффектов. Это дает красивое и реалистичное изображение, но снижают общую производительность компьютера.

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

Вот поэтому мы и попробуем настроить видеокарту NVidia таким образом, чтобы выжать максимальный FPS.

Все «тормоза» в играх связаны с количеством FPS (Frames Per Second), то есть количеством кадров в секунду, выдаваемым видеокартой на экран монитора.

Как настроить видеокарту NVidia

Настройка видеокарты NVidia возможна двумя способами: вручную или автоматически. Ручная настройка более тонкая и требует некоторых навыков. Вот с неё мы и начнем.

Ручная настройка видеокарты NVidia

Ручную настройку видеокарты NVidia можно произвести в программном обеспечении, которое устанавливается вместе с драйвером. Это так называемая «Панель управления NVidia». Открыть её можно несколькими способами:

Если у вас нет панели управления NVidia, значит, либо не установлены драйвера NVidia, либо на вашем компьютере установлена другая видеокарта (Radeon).

После открытия панели управления NVidia выбираем задачу «Регулировка настроек изображения с просмотром».

Включаем настройку «Согласно 3D приложению» и жмем внизу кнопку «Применить».

В описании написано, что этот параметр позволяет быстро задать приоритет для видеоплаты: производительность, качество или баланс между этими двумя критериями. Панель управления NVIDIA установит все нужные настройки 3D-изображений в соответствии с вашим выбором.

Типичные ситуации применения.

Теперь переходим к глобальным настройкам параметров видеокарты NVidia.

Для этого в левой части окна находим задачу «Управление параметрами 3D» и открываем его.

В правой части окна «Управление параметрами 3D» на вкладке «Глобальные параметры» мы увидим список настроек видеокарты.

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

Видео: Как настроить видеокарту NVidia для игр

Как только наводите курсор на какую-нибудь функцию, так ниже в описании можно почитать для чего она предназначена. А ниже описания, имеется пункт «Типичные ситуации применения», где даются разъяснения для каждого параметра этой функции.

Необходимые настройки для сетевых динамических игр

ФункцияОписаниеПараметр
CUDA – графические процессорыПозволяет указать графические процессоры, которые могут использоваться приложениями CUDA, включая PhysX.Все
DSR — ПлавностьХорошо для старых игр с бедной графикой.Выкл.
DSR — СтеперьХорошо для старых игр с бедной графикой.Off
Анизотропная фильтрацияХорошо для старых игр с бедной графикой.Выкл.
Вертикальный синхроимпульсУстраняет разрывы и подергивания, но незначительноИспользовать настройку 3D-приложения. Можно позкспериментировать.
ГП рендеринга OpenGLВыбор графического процессора.Лучше выставить свою видеокарту.
Заранее подготовленные кадры виртуальной реальностиПовышение производительности за счет использования нескольких ЦП.Автовыбор или Выкл.
Затенение фонового освещенияСнижает яркость предметов за счет отброса теней. Необходимо для реалистичной графики.Выкл.
Кэширование шейдеровСнижает загрузку ЦП.Выкл.
Максимальное количество заранее подготовленных кадровЕсли во время игры «плавает» мышь, джойстик или клавиатуре, то необходимо уменьшить значение.При слабом процессоре выбрать 1. Если процессор мощный, то цифра 3.
Многокадровое сглаживание (MFAA)Устраняет ступеньчатые искажения в графике.Выкл.
Потоковая оптимизацияОпределяет количество графических процессоров, используемых в игреАвто
Режим управления электропитаниемУстанавливается предпочтительный режим во время работы с 3D-приложениями.Можно выбрать любой режим.
Сглаживание — FXAAсглаживаниеВыкл.
Сглаживание — гамма-коррекциясглаживаниеВыкл.
Сглаживание — параметрысглаживаниеВыкл.
Сглаживание — прозрачностьсглаживаниеВыкл.
Сглаживание — режимсглаживаниеВыкл.
Тройная буферизацияРаботает только при включенном вертикальном синхроимпульсе. Увеличивает нагрузку на чипы памяти.Если не используете вертикальный синхроимпульс, то лучше отключить.
Фильтрация текстур — анизотропная оптимизация образцовУлучшает качество картинки.Выкл.
Фильтрация текстур — качествоУлучшает качество картинки.Производительность
Фильтрация текстур – отрицательное отклонениеУлучшает качество картинки.Разрешить
Фильтрация текстур – трилинейная оптимизацияУлучшает производительность.Вкл.

После завершения всех настроек жмем кнопку «Применить».

Перенос настроек в игру или программу

Теперь эти параметры необходимо перенести программу или игру. Для этого переходим на вкладку «Программные настройки».

Открываем список программ в пункте «1.Выберите программу для настройки:» выбираем из списка нужное приложение.

Если игры или приложения нет в списке, то жмем рядом со списком кнопку «Добавить» и выбираем нужное приложение.

После этого в окне под пунктом «2.Укажите настройки для этой программы» убеждаемся, что напротив каждой функции установлен параметр «Использовать глобальный параметр». После этого необходимо нажать кнопку «Применить».

Если кнопка «Применить» не появилась, то выберите любое приложение из списка 1, и нажмите выше на ссылочку «Восстановить». После этого появится кнопка «Применить». Опять выберите необходимое приложение и только после этого нажмите появившуюся кнопку «Применить».

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

Автоматическая настройка видеокарты Nvidia для игр осуществляется при помощи софта под названием Nvidia GeForce Experience, который можно скачать с официального сайта.

Но есть одно «НО». Этот способ доступен только в том случае, если ваши игры лицензионные. В других случаях эта функция не работает.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *