что такое рендер таргет

Рисование с помощью Render Targets в Unreal Engine

что такое рендер таргет. image loader. что такое рендер таргет фото. что такое рендер таргет-image loader. картинка что такое рендер таргет. картинка image loader. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

С точки зрения пользователя render target в основном используются в качестве своего рода дополнительной камеры. Можно задать захват сцены (scene capture) в какой-то точке и сохранять изображение в render target. Затем можно отобразить render target на меше, например, для симуляции камеры наблюдения.

После выпуска версии движка 4.13 компания Epic добавила возможность отрисовки материалов непосредственно на render target с помощью блюпринтов. Эта функция позволяет создавать сложные эффекты, например, симуляцию жидкости и деформацию снега. Звучит потрясающе, правда? Но прежде чем переходить к таким сложным эффектам, лучше всего освоиться с чем-то простым. Что может быть проще, чем рисование на render target?

В этом туториале вы научитесь следующему:

Примечание: в этом туториале подразумевается, что вы уже знакомы с основами работы в Unreal Engine. Если вы новичок в Unreal Engine, то изучите нашу серию туториалов из десяти частей Unreal Engine для начинающих.

Приступаем к работе

Начнём с загрузки материалов для этого туториала (взять их можно здесь). Распакуйте их, перейдите к CanvasPainterStarter и откройте CanvasPainter.uproject. Если вы нажмёте Play, то увидите следующее:

что такое рендер таргет. 9b9e6d01f6955d5a93f737588f4bb730. что такое рендер таргет фото. что такое рендер таргет-9b9e6d01f6955d5a93f737588f4bb730. картинка что такое рендер таргет. картинка 9b9e6d01f6955d5a93f737588f4bb730. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Квадрат посередине (canvas) — это то, на чём мы будем рисовать. Элементы UI слева будут текстурой, которой мы будем рисовать, и её размером.

Для начала давайте разберёмся со способом, который используется для рисования.

Способ рисования

Первое, что нам нужно — это render target, используемый в качестве холста (canvas). Для определения того, где выполнять рисование на render target, мы оттрассируем прямую, выходящую из камеры вперёд. Если прямая пересекает холст, то мы можем получить место пересечения в UV-пространстве.

Например, если холст имеет идеальную привязку UV-координат, то пересечение в центре вернёт значение (0.5, 0.5). Если прямая пересекает холст в правом нижнем углу, то мы получим значение (1, 1). Затем можно использовать простые вычисления для расчёта места рисования.

что такое рендер таргет. image loader. что такое рендер таргет фото. что такое рендер таргет-image loader. картинка что такое рендер таргет. картинка image loader. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Но зачем получать координаты в UV-пространстве? Почему бы не использовать координаты настоящего пространства мира? При использовании пространства мира нам сначала придётся вычислять место пересечения относительно плоскости. Также придётся учитывать поворот и масштаб плоскости.

При использовании UV-пространства все эти вычисления не требуются. На плоскости с идеальной привязкой UV-координат пересечение с серединой всегда возвращает (0.5, 0.5), вне зависимости от расположения и поворота плоскости.

Примечание: рассматриваемый в этом туториале метод в общем случае работает только с плоскостями или похожими на плоскости поверхностями. Для других типов геометрии требуется более сложный метод, который я рассмотрю в другом туториале.

Сначала мы создадим материал, который будет отображать render target.

Создание материала холста

Перейдите в папку Materials и откройте M_Canvas.

В этом туториале мы будем создавать render target динамически, с помощью блюпринтов. Это значит, что нам придётся настроить текстуру как параметр, чтобы можно было передавать его render target. Для этого создадим TextureSampleParameter2D и назовём его RenderTarget. Затем соединим его с BaseColor.

что такое рендер таргет. 43974168a064c39f35acc53ab09f1c65. что такое рендер таргет фото. что такое рендер таргет-43974168a064c39f35acc53ab09f1c65. картинка что такое рендер таргет. картинка 43974168a064c39f35acc53ab09f1c65. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Пока не беспокойтесь о выборе текстуры — мы займёмся этим дальше в блюпринтах. Нажмите Apply, а затем закройте M_Canvas.

Следующим этапом будет создание render target, после чего мы используем его в качестве материала холста.

Создание Render Target

Существует два способа создания render target. Первый: создание в редакторе нажатием на Add New\Materials & Textures\Render Target. Этот способ позволяет удобно ссылаться на один и тот же render target нескольким акторам. Однако если нам понадобятся несколько холстов, то придётся создавать render target вручную для каждого холста.

Поэтому лучше создавать render target с помощью блюпринтов. Преимущество такого подхода в том, что мы создаём render targets только при необходимости и они не раздувают объём файлов проекта.

Для начала нам нужно создать render target и сохранить его как переменную для дальнейшего использования. Перейдите в папку Blueprints и откройте BP_Canvas. Найдите Event BeginPlay и добавьте выделенные узлы.

что такое рендер таргет. 7ed91ae8543ccf5875dad7828c308ed1. что такое рендер таргет фото. что такое рендер таргет-7ed91ae8543ccf5875dad7828c308ed1. картинка что такое рендер таргет. картинка 7ed91ae8543ccf5875dad7828c308ed1. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Присвойте параметрам Width и Height значение 1024. Так мы изменим разрешение render target на 1024×1024. Чем больше значения, тем выше качество изображения, но и больше затраты видеопамяти.

что такое рендер таргет. aeb56f96c38d3ae2606d4f3b2d3abeaf. что такое рендер таргет фото. что такое рендер таргет-aeb56f96c38d3ae2606d4f3b2d3abeaf. картинка что такое рендер таргет. картинка aeb56f96c38d3ae2606d4f3b2d3abeaf. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Далее идёт нод Clear Render Target 2D. Мы можем использовать этот нод для задания цвета render target. Задайте Clear Color значение (0.07, 0.13, 0.06). При этом весь render target заполнится зеленоватым цветом.

что такое рендер таргет. 94bd30eedc1f590ffd157c8091d7898e. что такое рендер таргет фото. что такое рендер таргет-94bd30eedc1f590ffd157c8091d7898e. картинка что такое рендер таргет. картинка 94bd30eedc1f590ffd157c8091d7898e. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Теперь нам нужно отобразить render target на меше холста.

Отображение Render Target

На данном этапе меш холста использует материал по умолчанию. Для отображения render target нужно создать динамический экземпляр M_Canvas и передать ему render target. Затем нужно применить динамический экземпляр материала к мешу холста. Для этого мы добавим выделенные ноды:

что такое рендер таргет. c9a7d81aa770c63cc6cf75f52746c4c3. что такое рендер таргет фото. что такое рендер таргет-c9a7d81aa770c63cc6cf75f52746c4c3. картинка что такое рендер таргет. картинка c9a7d81aa770c63cc6cf75f52746c4c3. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Сначала перейдём к ноду Create Dynamic Material Instance и зададим в качестве Parent значение M_Canvas. Так мы создадим динамический экземпляр M_Canvas.

что такое рендер таргет. da7f262bfda0215098287d3a2286085b. что такое рендер таргет фото. что такое рендер таргет-da7f262bfda0215098287d3a2286085b. картинка что такое рендер таргет. картинка da7f262bfda0215098287d3a2286085b. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Далее перейдём к ноду Set Texture Parameter Value и зададим для Parameter Name значение RenderTarget. Так мы передадим render target созданному ранее параметру текстуры.

что такое рендер таргет. 7c78d0377ef6a592c05f5cd54d08a89e. что такое рендер таргет фото. что такое рендер таргет-7c78d0377ef6a592c05f5cd54d08a89e. картинка что такое рендер таргет. картинка 7c78d0377ef6a592c05f5cd54d08a89e. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Теперь на меше холста будет отображаться render target. Нажмите на Compile и вернитесь в основной редактор. Нажмите на Play, чтобы увидеть, как холст изменит цвет.

что такое рендер таргет. 53f949fd6ad350b4a016545af0eca47c. что такое рендер таргет фото. что такое рендер таргет-53f949fd6ad350b4a016545af0eca47c. картинка что такое рендер таргет. картинка 53f949fd6ad350b4a016545af0eca47c. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

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

Создание материала кисти

Перейдите в папку Materials. Создайте материал M_Brush и откройте его. Сначала задайте для Blend Mode значение Translucent. Это позволит нам использовать текстуры с прозрачностью.

что такое рендер таргет. cf218a4b7b0e2c57f307cd06d8a92860. что такое рендер таргет фото. что такое рендер таргет-cf218a4b7b0e2c57f307cd06d8a92860. картинка что такое рендер таргет. картинка cf218a4b7b0e2c57f307cd06d8a92860. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Как и в случае с материалом холста, мы задаём текстуру для кисти в блюпринтах. Создайте TextureSampleParameter2D и назовите его BrushTexture. Соедините его следующим образом:

что такое рендер таргет. 097c497d1e50af95c004f9bdfe849897. что такое рендер таргет фото. что такое рендер таргет-097c497d1e50af95c004f9bdfe849897. картинка что такое рендер таргет. картинка 097c497d1e50af95c004f9bdfe849897. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Нажмите на Apply, а затем закройте M_Brush.

Следующее, что нужно сделать — создать динамический экземпляр материала кисти, чтобы можно было менять текстуру кисти. Откройте BP_Canvas и добавьте выделенные узлы.

что такое рендер таргет. 49d62886060349fc146ce04c150d539c. что такое рендер таргет фото. что такое рендер таргет-49d62886060349fc146ce04c150d539c. картинка что такое рендер таргет. картинка 49d62886060349fc146ce04c150d539c. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Далее перейдите в нод Create Dynamic Material Instance и задайте для Parent значение M_Canvas.

что такое рендер таргет. 8e00094aa61fbd27c527f207b360856b. что такое рендер таргет фото. что такое рендер таргет-8e00094aa61fbd27c527f207b360856b. картинка что такое рендер таргет. картинка 8e00094aa61fbd27c527f207b360856b. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Мы создали материал кисти, и теперь нам нужна функция для рисования кистью на render target.

Рисование кистью на Render Target

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

что такое рендер таргет. e6e2cbd2f9e69222d7bcbe616d30f8b2. что такое рендер таргет фото. что такое рендер таргет-e6e2cbd2f9e69222d7bcbe616d30f8b2. картинка что такое рендер таргет. картинка e6e2cbd2f9e69222d7bcbe616d30f8b2. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Прежде чем рисовать кисть, нам нужно задать её текстуру. Для этого создадим схему, показанную ниже. Убедитесь, что в качестве Parameter Name выбрано значение BrushTexture.

что такое рендер таргет. 0ff645efc2374126884a93b9b3a8c25b. что такое рендер таргет фото. что такое рендер таргет-0ff645efc2374126884a93b9b3a8c25b. картинка что такое рендер таргет. картинка 0ff645efc2374126884a93b9b3a8c25b. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Теперь нам нужно выполнять отрисовку в render target. Для этого создадим выделенные ноды:

что такое рендер таргет. c69b73c027dc7280673644d512498492. что такое рендер таргет фото. что такое рендер таргет-c69b73c027dc7280673644d512498492. картинка что такое рендер таргет. картинка c69b73c027dc7280673644d512498492. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Begin Draw Canvas to Render Target позволит движку узнать, что мы хотим начать отрисовку в определённый render target. Draw Material позволит отрисовывать материал по указанному местоположению с выбранным размером и поворотом.

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

что такое рендер таргет. cbb5134d2311305c42095e53939cc130. что такое рендер таргет фото. что такое рендер таргет-cbb5134d2311305c42095e53939cc130. картинка что такое рендер таргет. картинка cbb5134d2311305c42095e53939cc130. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

По умолчанию движок будет отрисовывать материалы, используя в качестве исходной точки верхний левый угол. Поэтому текстура кисти не будет центрирована нам, где мы хотим выполнить отрисовку. Чтобы исправить это, нам нужно поделить BrushSize на 2, а затем вычесть результат из предыдущего этапа.

что такое рендер таргет. 50158fe822073487d12a3099f86c7737. что такое рендер таргет фото. что такое рендер таргет-50158fe822073487d12a3099f86c7737. картинка что такое рендер таргет. картинка 50158fe822073487d12a3099f86c7737. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Затем соединим всё следующим образом:

что такое рендер таргет. d5820a1117491a78e4e020c4fd13e6ca. что такое рендер таргет фото. что такое рендер таргет-d5820a1117491a78e4e020c4fd13e6ca. картинка что такое рендер таргет. картинка d5820a1117491a78e4e020c4fd13e6ca. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Наконец нам нужно сообщить движку, что мы хотим остановить отрисовку в render target. Добавим нод End Draw Canvas to Render Target и соединим его следующим образом:

что такое рендер таргет. 86f8ffa3ecad0a4b3b47fe21f4044eb0. что такое рендер таргет фото. что такое рендер таргет-86f8ffa3ecad0a4b3b47fe21f4044eb0. картинка что такое рендер таргет. картинка 86f8ffa3ecad0a4b3b47fe21f4044eb0. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Теперь при каждом выполнении DrawBrush она будет сначала устанавливать в качестве текстуры для BrushMaterial передаваемую текстуру. Затем она будет отрисовывать BrushMaterial в RenderTarget, пользуясь переданными позицией и размером.

И на этом функция отрисовки готова. Нажмите на Compile и закройте BP_Canvas. Следующим шагом будет трассировка прямой из камеры и рисование в том месте холста, где произошло пересечение.

Трассировка прямой из камеры

Прежде чем рисовать на холсте, нам нужно указать текстуру кисти и размер. Перейдём в папку Blueprints и откроем BP_Player. Затем присвоим переменной BrushTexture значение T_Brush_01, а переменной BrushSize значение 500. Так мы назначим кисти изображение обезьяны размером 500×500 пикселей.

что такое рендер таргет. a76ab2b267bd2f0ea514b319528eeb26. что такое рендер таргет фото. что такое рендер таргет-a76ab2b267bd2f0ea514b319528eeb26. картинка что такое рендер таргет. картинка a76ab2b267bd2f0ea514b319528eeb26. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Далее необходимо выполнить трассировку прямой. Найдите InputAxis Paint и создайте следующую схему:

что такое рендер таргет. 775cf068e5c0820fa2d4539ca6ae3960. что такое рендер таргет фото. что такое рендер таргет-775cf068e5c0820fa2d4539ca6ae3960. картинка что такое рендер таргет. картинка 775cf068e5c0820fa2d4539ca6ae3960. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

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

Теперь нам необходимо проверить, пересекла ли прямая холст. Добавим выделенные ноды:

что такое рендер таргет. da5f5397b6a59eebdb9fce09541a35d8. что такое рендер таргет фото. что такое рендер таргет-da5f5397b6a59eebdb9fce09541a35d8. картинка что такое рендер таргет. картинка da5f5397b6a59eebdb9fce09541a35d8. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

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

Чтобы нод Find Collision UV заработал, нам нужно изменить два параметра. Во-первых, перейдём в нод LineTraceByChannel и включим Trace Complex.

что такое рендер таргет. 759207f4a22689a21f91f6c244648f75. что такое рендер таргет фото. что такое рендер таргет-759207f4a22689a21f91f6c244648f75. картинка что такое рендер таргет. картинка 759207f4a22689a21f91f6c244648f75. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Во-вторых, перейдём в Edit\Project Settings, а затем в Engine\Physics. Включим Support UV From Hit Results и перезапустим проект.

что такое рендер таргет. c8f42d56bac2b1ec4ad15884efa7f51d. что такое рендер таргет фото. что такое рендер таргет-c8f42d56bac2b1ec4ad15884efa7f51d. картинка что такое рендер таргет. картинка c8f42d56bac2b1ec4ad15884efa7f51d. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

После перезапуска для рисования на холсте нажмите Play и левую клавишу мыши.

что такое рендер таргет. image loader. что такое рендер таргет фото. что такое рендер таргет-image loader. картинка что такое рендер таргет. картинка image loader. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Можно даже создать несколько холстов и рисовать на каждом из них отдельно. Это возможно, потому что каждый холст динамически создаёт собственный render target.

что такое рендер таргет. image loader. что такое рендер таргет фото. что такое рендер таргет-image loader. картинка что такое рендер таргет. картинка image loader. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

В следующем разделе мы реализуем функционал изменения игроком размера кисти.

Изменение размера кисти

Откройте BP_Player и найдите нод InputAxis ChangeBrushSize. Эта привязка оси настроена на использование колеса мыши. Для изменения размера кисти нам достаточно менять значение BrushSize в зависимости от Axis Value. Для этого создадим следующую схему:

что такое рендер таргет. 554da62c836912958e8588e582862a69. что такое рендер таргет фото. что такое рендер таргет-554da62c836912958e8588e582862a69. картинка что такое рендер таргет. картинка 554da62c836912958e8588e582862a69. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Она будет выполнять прибавление или вычитание из BrushSize при использовании игроком колеса мыши. Первое умножение определяет скорость прибавления или вычитания. В качестве меры безопасности добавлено Clamp (float). Он гарантирует, что размер кисти не станет меньше 0 или больше 1000.

Нажмите на Compile и вернитесь в основной редактор. Покрутите колесо мыши, чтобы изменить размер кисти при рисовании.

что такое рендер таргет. image loader. что такое рендер таргет фото. что такое рендер таргет-image loader. картинка что такое рендер таргет. картинка image loader. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

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

Изменение текстуры кисти

Для начала нам нужен массив для хранения текстур, которые может использовать игрок. Откройте BP_Player и создайте переменную array. Выберите для неё тип Texture 2D и назовите её Textures.

что такое рендер таргет. 42545fdb9060f05e84a1e251be28bc3e. что такое рендер таргет фото. что такое рендер таргет-42545fdb9060f05e84a1e251be28bc3e. картинка что такое рендер таргет. картинка 42545fdb9060f05e84a1e251be28bc3e. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Затем создайте три элемента в Textures. Присвойте им следующие значения:

что такое рендер таргет. 93ea5a9fb103654bac3448131c9b6d11. что такое рендер таргет фото. что такое рендер таргет-93ea5a9fb103654bac3448131c9b6d11. картинка что такое рендер таргет. картинка 93ea5a9fb103654bac3448131c9b6d11. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Это будут текстуры, которыми сможет рисовать игрок. Для добавления новых текстур достаточно добавить их в этот массив.

Далее нам необходима переменная для хранения текущего индекса массива. Создайте переменную integer и назовите её CurrentTextureIndex.

что такое рендер таргет. c0fb87b8243042c1ce3a6d441490b63e. что такое рендер таргет фото. что такое рендер таргет-c0fb87b8243042c1ce3a6d441490b63e. картинка что такое рендер таргет. картинка c0fb87b8243042c1ce3a6d441490b63e. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Далее нам необходим способ обхода в цикле всех текстур. Для этого туториала я настроил привязку действия (action mapping) под названием NextTexture и привязал её к правой клавише мыши. Когда игрок нажимает эту клавишу, должен выполняться переход к следующей текстуре. Для этого найдите нод InputAction NextTexture и создайте следующую схему:

что такое рендер таргет. 3f23d19ad803a74af5a11892dc7e3579. что такое рендер таргет фото. что такое рендер таргет-3f23d19ad803a74af5a11892dc7e3579. картинка что такое рендер таргет. картинка 3f23d19ad803a74af5a11892dc7e3579. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Эта схема будет увеличивать CurrentTextureIndex при каждом нажатии на правую клавишу мыши. Если индекс достигает конца массива, то он снова сбрасывается на 0. Наконец, BrushTexture задаётся соответствующая текстура.

Нажмите на Compile и закройте BP_Player. Нажмите Play и щёлкайте правой клавишей мыши для переключения между текстурами.

что такое рендер таргет. image loader. что такое рендер таргет фото. что такое рендер таргет-image loader. картинка что такое рендер таргет. картинка image loader. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Куда двигаться дальше?

Готовый проект можно скачать отсюда.

Render target — это чрезвычайно мощный инструмент и в этом туториале мы затронули только самые основы. Если вы хотите узнать, на что способны render targets, посмотрите Content-Driven Multipass Rendering in UE4. В этом видео есть примеры рисования карт потоков, объёмного рисования, симуляции жидкостей и многого другого.

Также посмотрите наше обучающее видео Blueprint Drawing to Render Targets, чтобы узнать, как создать с помощью render target рисовалку карты высот.

Источник

Render Target в DX 9, 10, 11, GL.

Advanced: Тема повышенной сложности или важная.

Использование Render Target-ов предполагается для реализации Теней и рендеринга сцены в текстуру (собственно других способов использования наверное нет 🙂 ).

У каждого из вышеперечисленных ресурсов есть методы:
1. Surface* Texture::GetRTSurface(uint mip_id = 0)
2. Surface* CubeTexture::GetRTSurface(uint subresource_id = 0, uint mip_id = 0)

Логика которых полностью зависит от конкретного ГАПИ.

Например для DX9 это будет что-то вроде такого:

void RenderDriver::BeginScene()
<
if(pRenderTarget)
<
IDirect3DSurface9* psurface = pRenderTarget->GetImplementation()->GetSurface();
ID3DDevice->SetRenderTarget(psurface);
>
ID3DDevice->BeginScene();
//..

Буду благодарен за любую помощь в столь щепетильном для меня вопросе.

Вообще то темка довольно интересная (напоминает «подгонку под ключ»). Ну другого способа я не вижу. Т.к. еще зеленый в архитектуре GAPI. ))

Liberty Prime
Можешь например глянуть как это у меня сделано: SVN URL: https://phengine.svn.sourceforge.net/svnroot/phengine
В частности по твоему вопросу тебе надо там глянуть библиотеку RenderSystemInterface.lib где описаны интерфейсы
к объектам GAPI. Оно проектировалось для d3d9-d3d10, и на этих GAPI будет легко реализовать эти интерфейсы,
в часности реализацию для d3d9 можно глянуть в либе D3D9Render.lib, на огле я до этого пару лет писал и когда
проектировал так же прикидывал как эти интерфейсы будут релизованы в огле, так что должно нормально лечь и под огл.

Как сделано у меня (нас).
Имеется основной рендер который имеет в своем наборе что-то вроде
render->AddRenderTarget
render->AddRenderDepthStencil
render->AddRenderCubeTarget

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

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

graphics_device инициализируется в момент создания контекста графического устройства под нужный гапи.

Блин, как приятно такое слышать 🙂 Чуть не прослезился :)))

Источник

render target

Смотреть что такое «render target» в других словарях:

Multiple Render Targets — In the field of 3D computer graphics, Multiple Render Targets, or MRT, is a feature of modern graphics processing units (GPUs) that allows the programmable rendering pipeline to render images to multiple render target textures at once. These… … Wikipedia

Smiles arbitrary target specification — (SMARTS) is a language for specifying substructural patterns in molecules. The SMARTS line notation is expressive and allows extremely precise and transparent substructural specification and atom typing.SMARTS is related to the SMILES line… … Wikipedia

Direct3D — is part of Microsoft s DirectX API. Direct3D is only available for Microsoft s various Windows operating systems (Windows 95 and above) and is the base for the graphics API on the Xbox and Xbox 360 console systems. Direct3D is used to render… … Wikipedia

Direct3D 10 — Для улучшения этой статьи желательно?: Викифицировать статью. Переработать оформление в соответствии с правилами написания статей. Исправить статью согласно стилистическим правилам Википедии … Википедия

Microsoft Direct3D — Direct3D is part of Microsoft s DirectX application programming interface (API). Direct3D is available for Microsoft Windows operating systems (Windows 95 and above), and for other platforms through the open source software Wine. It is the base… … Wikipedia

Comparison of OpenGL and Direct3D — Direct3D and OpenGL are competing application programming interfaces (APIs) which can be used in applications to render 2D and 3D computer graphics, taking advantage of hardware acceleration when available. Modern graphics processing unit (GPUs)… … Wikipedia

Radeon — AMD Radeon Graphics The Radeon Graphics logo Manufacturer AMD Radeon … Wikipedia

PCSX — PCSX2 Bildschirmfoto von PCSX2 Basisdaten Entwickler: Linuzappz, Zerofrog, Refraction, Saqib, GiGaHeRz, Gabest Aktuelle Version … Deutsch Wikipedia

PCSX2 — Bildschirmfoto Basisdaten Entwickler Linuzappz, Zerofrog, Refraction, Saqib, GiGaHeRz, Gabest Aktuelle Version … Deutsch Wikipedia

Pcsx2 — Bildschirmfoto von PCSX2 Basisdaten Entwickler: Linuzappz, Zerofrog, Refraction, Saqib, GiGaHeRz, Gabest Aktuelle Version … Deutsch Wikipedia

Источник

Рисование с помощью Render Targets в Unreal Engine

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

С точки зрения пользователя render target в основном используются в качестве своего рода дополнительной камеры. Можно задать захват сцены (scene capture) в какой-то точке и сохранять изображение в render target. Затем можно отобразить render target на меше, например, для симуляции камеры наблюдения.

После выпуска версии движка 4.13 компания Epic добавила возможность отрисовки материалов непосредственно на render target с помощью блюпринтов. Эта функция позволяет создавать сложные эффекты, например, симуляцию жидкости и деформацию снега. Звучит потрясающе, правда? Но прежде чем переходить к таким сложным эффектам, лучше всего освоиться с чем-то простым. Что может быть проще, чем рисование на render target?

В этом туториале вы научитесь следующему:

Примечание: в этом туториале подразумевается, что вы уже знакомы с основами работы в Unreal Engine. Если вы новичок в Unreal Engine, то изучите нашу серию туториалов из десяти частей Unreal Engine для начинающих.

Приступаем к работе

Начнём с загрузки материалов для этого туториала (взять их можно здесь). Распакуйте их, перейдите к CanvasPainterStarter и откройте CanvasPainter.uproject. Если вы нажмёте Play, то увидите следующее:

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 2. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 2. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 2. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Квадрат посередине (canvas) — это то, на чём мы будем рисовать. Элементы UI слева будут текстурой, которой мы будем рисовать, и её размером.

Для начала давайте разберёмся со способом, который используется для рисования.

Способ рисования

Первое, что нам нужно — это render target, используемый в качестве холста (canvas). Для определения того, где выполнять рисование на render target, мы оттрассируем прямую, выходящую из камеры вперёд. Если прямая пересекает холст, то мы можем получить место пересечения в UV-пространстве.

Например, если холст имеет идеальную привязку UV-координат, то пересечение в центре вернёт значение (0.5, 0.5). Если прямая пересекает холст в правом нижнем углу, то мы получим значение (1, 1). Затем можно использовать простые вычисления для расчёта места рисования.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 3. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 3. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 3. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Но зачем получать координаты в UV-пространстве? Почему бы не использовать координаты настоящего пространства мира? При использовании пространства мира нам сначала придётся вычислять место пересечения относительно плоскости. Также придётся учитывать поворот и масштаб плоскости.

При использовании UV-пространства все эти вычисления не требуются. На плоскости с идеальной привязкой UV-координат пересечение с серединой всегда возвращает (0.5, 0.5), вне зависимости от расположения и поворота плоскости.

Примечание: рассматриваемый в этом туториале метод в общем случае работает только с плоскостями или похожими на плоскости поверхностями. Для других типов геометрии требуется более сложный метод, который я рассмотрю в другом туториале.

Сначала мы создадим материал, который будет отображать render target.

Создание материала холста

Перейдите в папку Materials и откройте M_Canvas.

В этом туториале мы будем создавать render target динамически, с помощью блюпринтов. Это значит, что нам придётся настроить текстуру как параметр, чтобы можно было передавать его render target. Для этого создадим TextureSampleParameter2D и назовём его RenderTarget. Затем соединим его с BaseColor.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 4. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 4. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 4. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Пока не беспокойтесь о выборе текстуры — мы займёмся этим дальше в блюпринтах. Нажмите Apply, а затем закройте M_Canvas.

Следующим этапом будет создание render target, после чего мы используем его в качестве материала холста.

Создание Render Target

Существует два способа создания render target. Первый: создание в редакторе нажатием на Add NewMaterials & TexturesRender Target. Этот способ позволяет удобно ссылаться на один и тот же render target нескольким акторам. Однако если нам понадобятся несколько холстов, то придётся создавать render target вручную для каждого холста.

Поэтому лучше создавать render target с помощью блюпринтов. Преимущество такого подхода в том, что мы создаём render targets только при необходимости и они не раздувают объём файлов проекта.

Для начала нам нужно создать render target и сохранить его как переменную для дальнейшего использования. Перейдите в папку Blueprints и откройте BP_Canvas. Найдите Event BeginPlay и добавьте выделенные узлы.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 5. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 5. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 5. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Присвойте параметрам Width и Height значение 1024. Так мы изменим разрешение render target на 1024×1024. Чем больше значения, тем выше качество изображения, но и больше затраты видеопамяти.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 6. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 6. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 6. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Далее идёт нод Clear Render Target 2D. Мы можем использовать этот нод для задания цвета render target. Задайте Clear Color значение (0.07, 0.13, 0.06). При этом весь render target заполнится зеленоватым цветом.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 7. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 7. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 7. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Теперь нам нужно отобразить render target на меше холста.

Отображение Render Target

На данном этапе меш холста использует материал по умолчанию. Для отображения render target нужно создать динамический экземпляр M_Canvas и передать ему render target. Затем нужно применить динамический экземпляр материала к мешу холста. Для этого мы добавим выделенные ноды:

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 8. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 8. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 8. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Сначала перейдём к ноду Create Dynamic Material Instance и зададим в качестве Parent значение M_Canvas. Так мы создадим динамический экземпляр M_Canvas.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 9. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 9. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 9. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Далее перейдём к ноду Set Texture Parameter Value и зададим для Parameter Name значение RenderTarget. Так мы передадим render target созданному ранее параметру текстуры.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 10. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 10. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 10. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Теперь на меше холста будет отображаться render target. Нажмите на Compile и вернитесь в основной редактор. Нажмите на Play, чтобы увидеть, как холст изменит цвет.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 11. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 11. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 11. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

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

Создание материала кисти

Перейдите в папку Materials. Создайте материал M_Brush и откройте его. Сначала задайте для Blend Mode значение Translucent. Это позволит нам использовать текстуры с прозрачностью.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 12. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 12. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 12. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Как и в случае с материалом холста, мы задаём текстуру для кисти в блюпринтах. Создайте TextureSampleParameter2D и назовите его BrushTexture. Соедините его следующим образом:

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 13. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 13. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 13. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Нажмите на Apply, а затем закройте M_Brush.

Следующее, что нужно сделать — создать динамический экземпляр материала кисти, чтобы можно было менять текстуру кисти. Откройте BP_Canvas и добавьте выделенные узлы.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 14. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 14. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 14. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Далее перейдите в нод Create Dynamic Material Instance и задайте для Parent значение M_Canvas.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 15. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 15. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 15. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Мы создали материал кисти, и теперь нам нужна функция для рисования кистью на render target.

Рисование кистью на Render Target

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

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 16. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 16. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 16. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Прежде чем рисовать кисть, нам нужно задать её текстуру. Для этого создадим схему, показанную ниже. Убедитесь, что в качестве Parameter Name выбрано значение BrushTexture.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 17. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 17. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 17. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Теперь нам нужно выполнять отрисовку в render target. Для этого создадим выделенные ноды:

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 18. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 18. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 18. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Begin Draw Canvas to Render Target позволит движку узнать, что мы хотим начать отрисовку в определённый render target. Draw Material позволит отрисовывать материал по указанному местоположению с выбранным размером и поворотом.

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

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 19. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 19. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 19. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

По умолчанию движок будет отрисовывать материалы, используя в качестве исходной точки верхний левый угол. Поэтому текстура кисти не будет центрирована нам, где мы хотим выполнить отрисовку. Чтобы исправить это, нам нужно поделить BrushSize на 2, а затем вычесть результат из предыдущего этапа.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 20. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 20. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 20. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Затем соединим всё следующим образом:

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 21. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 21. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 21. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Наконец нам нужно сообщить движку, что мы хотим остановить отрисовку в render target. Добавим нод End Draw Canvas to Render Target и соединим его следующим образом:

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 22. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 22. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 22. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Теперь при каждом выполнении DrawBrush она будет сначала устанавливать в качестве текстуры для BrushMaterial передаваемую текстуру. Затем она будет отрисовывать BrushMaterial в RenderTarget, пользуясь переданными позицией и размером.

И на этом функция отрисовки готова. Нажмите на Compile и закройте BP_Canvas. Следующим шагом будет трассировка прямой из камеры и рисование в том месте холста, где произошло пересечение.

Трассировка прямой из камеры

Прежде чем рисовать на холсте, нам нужно указать текстуру кисти и размер. Перейдём в папку Blueprints и откроем BP_Player. Затем присвоим переменной BrushTexture значение T_Brush_01, а переменной BrushSize значение 500. Так мы назначим кисти изображение обезьяны размером 500×500 пикселей.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 23. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 23. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 23. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Далее необходимо выполнить трассировку прямой. Найдите InputAxis Paint и создайте следующую схему:

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 24. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 24. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 24. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

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

Теперь нам необходимо проверить, пересекла ли прямая холст. Добавим выделенные ноды:

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 25. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 25. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 25. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

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

Чтобы нод Find Collision UV заработал, нам нужно изменить два параметра. Во-первых, перейдём в нод LineTraceByChannel и включим Trace Complex.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 26. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 26. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 26. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Во-вторых, перейдём в EditProject Settings, а затем в EnginePhysics. Включим Support UV From Hit Results и перезапустим проект.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 27. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 27. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 27. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

После перезапуска для рисования на холсте нажмите Play и левую клавишу мыши.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 28. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 28. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 28. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Можно даже создать несколько холстов и рисовать на каждом из них отдельно. Это возможно, потому что каждый холст динамически создаёт собственный render target.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 29. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 29. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 29. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

В следующем разделе мы реализуем функционал изменения игроком размера кисти.

Изменение размера кисти

Откройте BP_Player и найдите нод InputAxis ChangeBrushSize. Эта привязка оси настроена на использование колеса мыши. Для изменения размера кисти нам достаточно менять значение BrushSize в зависимости от Axis Value. Для этого создадим следующую схему:

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 30. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 30. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 30. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Она будет выполнять прибавление или вычитание из BrushSize при использовании игроком колеса мыши. Первое умножение определяет скорость прибавления или вычитания. В качестве меры безопасности добавлено Clamp (float). Он гарантирует, что размер кисти не станет меньше 0 или больше 1000.

Нажмите на Compile и вернитесь в основной редактор. Покрутите колесо мыши, чтобы изменить размер кисти при рисовании.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 31. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 31. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 31. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

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

Изменение текстуры кисти

Для начала нам нужен массив для хранения текстур, которые может использовать игрок. Откройте BP_Player и создайте переменную array. Выберите для неё тип Texture 2D и назовите её Textures.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 32. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 32. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 32. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Затем создайте три элемента в Textures. Присвойте им следующие значения:

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 33. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 33. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 33. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Это будут текстуры, которыми сможет рисовать игрок. Для добавления новых текстур достаточно добавить их в этот массив.

Далее нам необходима переменная для хранения текущего индекса массива. Создайте переменную integer и назовите её CurrentTextureIndex.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 34. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 34. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 34. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Далее нам необходим способ обхода в цикле всех текстур. Для этого туториала я настроил привязку действия (action mapping) под названием NextTexture и привязал её к правой клавише мыши. Когда игрок нажимает эту клавишу, должен выполняться переход к следующей текстуре. Для этого найдите нод InputAction NextTexture и создайте следующую схему:

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 35. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 35. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 35. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Эта схема будет увеличивать CurrentTextureIndex при каждом нажатии на правую клавишу мыши. Если индекс достигает конца массива, то он снова сбрасывается на 0. Наконец, BrushTexture задаётся соответствующая текстура.

Нажмите на Compile и закройте BP_Player. Нажмите Play и щёлкайте правой клавишей мыши для переключения между текстурами.

что такое рендер таргет. risovanie s pomoshyu Render Targets v Unreal Engine 36. что такое рендер таргет фото. что такое рендер таргет-risovanie s pomoshyu Render Targets v Unreal Engine 36. картинка что такое рендер таргет. картинка risovanie s pomoshyu Render Targets v Unreal Engine 36. Render target — это, по сути, текстура, в которую можно выполнять запись во время выполнения приложения. С точки зрения движка они хранят такую информацию, как базовый цвет, нормали и ambient occlusion.

Куда двигаться дальше?

Готовый проект можно скачать отсюда.

Render target — это чрезвычайно мощный инструмент и в этом туториале мы затронули только самые основы. Если вы хотите узнать, на что способны render targets, посмотрите Content-Driven Multipass Rendering in UE4. В этом видео есть примеры рисования карт потоков, объёмного рисования, симуляции жидкостей и многого другого.

Также посмотрите наше обучающее видео Blueprint Drawing to Render Targets, чтобы узнать, как создать с помощью render target рисовалку карты высот.

Источник

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

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