XRDisplaySubsystem
Описание
XRDisplaySubsystem управляет отображением на дисплее с отслеживанием головы.
Полная инициализация экземпляра XRDisplaySubsystem может занять до трёх кадров. Прежде чем обращаться к методам или свойствам этого класса, следует подождать три кадра.
В следующем примере используется сопутствующая программа для ожидания трех кадров, прежде чем она установит свойства отображения подсистемы XR:
using UnityEngine; using UnityEngine.XR; using System.Collections; using System.Collections.Generic;
public class FoveationStarter : MonoBehaviour { List<XRDisplaySubsystem> xrDisplays = new List<XRDisplaySubsystem>();
void Start() { StartCoroutine(WaitForXRDisplay()); }
IEnumerator WaitForXRDisplay() { yield return new WaitUntil(() => Time.frameCount >= 3);
SubsystemManager.GetSubsystems(xrDisplays); if (xrDisplays.Count == 1) { xrDisplays[0].foveatedRenderingLevel = .5f; // half strength Debug.Log($"Foveated rendering set to {xrDisplays[0].foveatedRenderingLevel}."); } else { Debug.LogWarning($"Couldn't find an XRDisplaySubsystem for foveated rendering."); } } }
Свойства
| Свойство | Описание |
|---|---|
| appliedViewportScale | Часть выделенной текстуры отображения, используемая активным стереоустройством для текущего кадра. |
| contentProtectionEnabled | Задаёт или возвращает состояние защиты контента для текущего активного поставщика. У большинства поставщиков защита контента позволяет использовать для рендеринга текстуры только на запись. Это лишает приложения возможности читать текстуры из видеокарты и просматривать или записывать изображения, которые могут быть тем или иным образом защищены. |
| disableLegacyRenderer | Отключает устаревший рендер, пока этот XRDisplaySubsystem активен. |
| displayOpaque | Определяет, имеет ли текущее подключенное устройство непрозрачный дисплей. Большинство устройств VR непрозрачны, чтобы увеличить погружение, устройства AR прозрачны, чтобы позволить взаимодействие с увеличением текущей среды. |
| foveatedRenderingFlags | Контролирует необязательное поведение системы рендеринга. |
| foveatedRenderingLevel | Контролирует интенсивность рендеринга. |
| globalDynamicScale | Текущий коэффициент масштаба применяется к динамически масштабируемым текстурам глаз, когда активировано динамическое разрешение XR. |
| hdrOutputSettings | HDROutputSettings для подсистемы отображения XR. |
| occlusionMaskScale | Шкала, применяемая к стандартной маске для окклюзии. |
| reprojectionMode | Вид репроекции, которую приложение требует для стабилизации своего голографического отображения относительно движения головы пользователя. |
| scaleOfAllRenderTargets | Управляет размером текстур, передаваемых на дисплей в качестве множителя разрешения дисплея по умолчанию. |
| scaleOfAllViewports | Контролирует, какая часть выделенной текстуры экрана должна использоваться для рендеринга. |
| supportedTextureLayouts | Указывает все раскладки текстур, поддерживаемые этой подсистемой отображения. Это var — битовое поле, которое может быть комбинацией XRDisplaySubsystem.TextureLayout. |
| textureLayout | Установить DisplaySubsystem для использования определенного расположения текстуры. Следует запросить поддерживаемое расположение текстуры через XRDisplaySubsystem.supportedTextureLayouts сначала для возможностей. |
| zFar | Установите DisplaySubsystem для использования zFar для отображения. |
| zNear | Установите DisplaySubsystem для использования zNear для отображения. |
Открытые методы
| Метод | Описание |
|---|---|
| AddGraphicsThreadMirrorViewBlit | Эта функция записывает собственное событие blit подсистемы дисплея в буфер целевой команды. Эта функция обычно вызывается скриптом конвейера отображения. |
| BeginRecordingIfLateLatched | Эта функция позволяет позднее зафиксировать запись постоянных буферных мест памяти, которые позднее заполняются последними данными о позе. |
| EndRecordingIfLateLatched | Эта функция отключает позднюю задержку записи постоянных буферных мест. |
| GetCullingParameters | Получает параметры отсеивания для определенного индекса пропуска отсеивания. |
| GetMirrorViewBlitDesc | Получить дескриптор операции blit зеркального просмотра из текущей подсистемы дисплея. |
| GetPreferredMirrorBlitMode | Возвращает предпочтительный режим зеркального блита дисплея XR. |
| GetRenderPass | Получает XRRenderPass определенного индекса. |
| GetRenderPassCount | Количество XRRenderPass записей для этого XR дисплея. |
| GetRenderTexture | При наличии UnityXRRenderTextureID, возвращенного IUnityXRDisplayInterface::CreateTexture, возврат управляемого экземпляра UnityEngine.RenderTexture. |
| GetRenderTextureForRenderPass | Возвращает экземпляр RenderTexture, поддерживающий данный проход рендеринга. Если проход рендеринга неверен или текстура рендеринга не существует, возвращается null. |
| GetSharedDepthTextureForRenderPass | Возвращает экземпляр общего буфера глубины RenderTexture, поддерживающий данный проход рендеринга. Если проход рендеринга неверен или текстура рендеринга не существует, возвращается null. |
| MarkTransformLateLatched | Это помечает данные преобразования GameObject для позднего замыкания в следующем кадре. После того, как они будут помечены для позднего замыкания, преобразование GameObject и его потомки будут обновлены последними обновлениями VR перед тем, как рендеринг будет передан GPU. |
| ScaledTextureHeight | Предоставляет текущую, масштабированную высоту текстуры рендеринга. |
| ScaledTextureWidth | Предоставляет текущую, масштабированную ширину текстуры рендеринга. |
| SetFocusPlane | Устанавливается точка в пространстве 3D, которая выступает в качестве фокусной точки Scene для этого кадра. Это помогает улучшить визуальную достоверность контента вокруг этой точки. Вы должны устанавливать это значение каждый кадр. Обратите внимание, что указание контента, заблокированного телом, в фокусе улучшает достоверность контента, заблокированного телом, в ущерб контенту, не заблокированному телом. Это особенно заметно, когда пользователь перемещается. |
| SetMSAALevel | Устанавливает уровень MSAA для текстуры рендеринга DisplaySubsystem. |
| SetPreferredMirrorBlitMode | Переопределить предпочтительный режим зеркального блеска дисплея XR из скрипта. |
| TryGetAppGPUTimeLastFrame | Получает время, затраченное GPU на выполнение команд из последнего кадра приложения, как сообщено плагином XR. Измеряется в секундах. |
| TryGetCompositorGPUTimeLastFrame | Получает количество времени, которое GPU потратил на выполнение рендеринга композитора в течение последнего кадра, как сообщено плагином XR. Измеряется в секундах. |
| TryGetDisplayRefreshRate | Получает частоту обновления дисплея, как сообщено плагином XR. |
| TryGetDroppedFrameCount | Получает число отброшенных кадров, сообщенных плагином XR. |
| TryGetFramePresentCount | Получает число раз, когда текущий кадр был нарисован на устройство, как сообщено плагином XR. |
| TryGetMotionToPhoton | Получает значение движения к фотону, как сообщено XR Плагин. |
Мероприятия
| Мероприятие | Описание |
|---|---|
| displayFocusChanged | Событие отправляется при изменении фокуса дисплея XR. |