Unity 6.3
0 онлайн 106 гостей 3 в системе
Вход
Материалы и шейдеры Шаг 176 из 442

Управление обновлением пользовательской текстуры отображения

Зоны обновления

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

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

Зоны обновления имеют свой собственный набор свойств. На дисплее видно пространство Update Zone Space. Координаты зависят от Измерение текстуры: 2D для текстур 2D и Cube, или 3D для текстур 3D.

Управление пользовательской текстурой отображения из скрипта

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

Когда Unity обновляет или инициализирует пользовательскую текстуру рендеринга, он использует текущие свойства для рендеринга следующего кадра. Это гарантирует, что любой Материал, использующий эту текстуру, имеет обновленный результат. Например, в следующем скрипте Unity выполняет два обновления, используя второй массив Update Zone:

customRenderTexture.updateZones = updateZones1;

customRenderTexture.Update();

customRenderTexture.updateZones = updateZones2;

customRenderTexture.Update();

Примечание: Unity не обновляет и не инициализирует пользовательскую текстуру рендеринга одновременно с вызовами Update() или Initialize(). Это происходит потому, что Unity всегда обновляет и инициализирует пользовательскую текстуру рендеринга в начале следующего кадра.

Двойные буферизованные текстуры

Для этого включите Double Buffered в компоненте Настраиваемые текстурыили используйте CustomRenderTexture.doubleBuffered.

Двойной буфер означает, что внутри одной пользовательской текстуры есть две текстуры, которые Unity может обменять после каждого обновления. Это позволяет вам читать результат последнего обновления, записывая новый результат в пользовательскую текстуру.

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

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