Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
OpenXRCompositionLayer
Экспериментальное: This class may be changed or removed in future versions.
Наследует: Node3D < Node < Object
Наследуется от: OpenXRCompositionLayerCylinder, OpenXRCompositionLayerEquirect, OpenXRCompositionLayerQuad
Родительский класс всех узлов композиционного слоя OpenXR.
Описание
Слои композиции позволяют отображать 2D-окна просмотра внутри гарнитуры с помощью XR-композитора с помощью специальных проекций, которые сохраняют свое качество. Это позволяет визуализировать чистый текст, сохраняя при этом исходное разрешение слоя.
Примечание: Если среда выполнения OpenXR не поддерживает заданный тип слоя композиции, можно сгенерировать резервную сетку с помощью ViewportTexture, чтобы эмулировать слой композиции.
Свойства
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методы
intersects_ray(origin: Vector3, direction: Vector3) const |
|
is_natively_supported() const |
Перечисления
enum Filter: 🔗
Filter FILTER_NEAREST = 0
При выборке текстуры следует выполнять фильтрацию ближайшего соседа.
Filter FILTER_LINEAR = 1
Выполняйте линейную фильтрацию при выборке текстуры.
Filter FILTER_CUBIC = 2
При выборке текстуры выполняйте кубическую фильтрацию.
enum MipmapMode: 🔗
MipmapMode MIPMAP_MODE_DISABLED = 0
Отключить MIP-текстурирование.
Примечание: MIP-текстурирование можно отключить только в режиме совместимости.
MipmapMode MIPMAP_MODE_NEAREST = 1
Используйте mipmap ближайшего разрешения.
MipmapMode MIPMAP_MODE_LINEAR = 2
Использовать линейную интерполяцию двух MIP-карт ближайшего разрешения.
enum Wrap: 🔗
Wrap WRAP_CLAMP_TO_BORDER = 0
Закрепите текстуру по указанному цвету границы.
Wrap WRAP_CLAMP_TO_EDGE = 1
Закрепите текстуру по цвету ее кромки.
Wrap WRAP_REPEAT = 2
Повторяйте текстуру бесконечно.
Wrap WRAP_MIRRORED_REPEAT = 3
Повторяйте текстуру бесконечно, зеркально отображая ее при каждом повторе.
Wrap WRAP_MIRROR_CLAMP_TO_EDGE = 4
Отразите текстуру один раз, а затем прикрепите её к цвету края.
Примечание: Этот режим обтекания недоступен в рендере совместимости.
enum Swizzle: 🔗
Swizzle SWIZZLE_RED = 0
Сопоставляет цветовой канал со значением красного канала.
Swizzle SWIZZLE_GREEN = 1
Сопоставляет цветовой канал со значением зеленого канала.
Swizzle SWIZZLE_BLUE = 2
Сопоставляет цветовой канал со значением синего канала.
Swizzle SWIZZLE_ALPHA = 3
Сопоставляет цветовой канал со значением альфа-канала.
Swizzle SWIZZLE_ZERO = 4
Сопоставляет цветовой канал со значением ноль.
Swizzle SWIZZLE_ONE = 5
Сопоставляет цветовой канал со значением единицы.
enum EyeVisibility: 🔗
EyeVisibility EYE_VISIBILITY_BOTH = 0
Этот слой виден как левому, так и правому глазу.
EyeVisibility EYE_VISIBILITY_LEFT = 1
Этот слой виден только левому глазу.
EyeVisibility EYE_VISIBILITY_RIGHT = 2
Этот слой виден только правому глазу.
Описания свойств
Позволяет смешивать слой с использованием его альфа-канала.
Можно комбинировать с Viewport.transparent_bg, чтобы придать слою прозрачный фон.
Vector2i android_surface_size = Vector2i(1024, 1024) 🔗
Размер создаваемой поверхности Android, если включен use_android_surface.
bool enable_hole_punch = false 🔗
Позволяет использовать технику, называемую «дырокол», которая позволяет размещать слой композиции за основным проекционным слоем (т. е. устанавливать sort_order на отрицательное значение), одновременно «пробивая дыру» через все, что визуализируется Godot, так что слой все еще виден.
Это можно использовать для создания иллюзии того, что слой композиции существует в том же трехмерном пространстве, что и все, что визуализируется Godot, позволяя объектам казаться проходящими как позади, так и перед слоем композиции.
EyeVisibility eye_visibility = 0 🔗
void set_eye_visibility(value: EyeVisibility)
EyeVisibility get_eye_visibility()
Глаз(а), для которого(ых) виден(ы) слой композиции.
Примечание: Не все типы слоев композиции или среды выполнения поддерживают ограничение видимости одним глазом.
SubViewport layer_viewport 🔗
void set_layer_viewport(value: SubViewport)
SubViewport get_layer_viewport()
SubViewport для рендеринга на слое композиции.
bool protected_content = false 🔗
Если эта функция включена, цепочка обмена OpenXR будет создана с флагом XR_SWAPCHAIN_CREATE_PROTECTED_CONTENT_BIT, который защитит её содержимое от доступа процессора.
При использовании с Android Surface это может позволить отображать контент с DRM-защитой и вступит в силу только при первом создании Surface; последующие изменения этого свойства не будут иметь никакого эффекта.
Порядок сортировки для этого слоя композиции. Более высокие числа будут показаны перед более низкими числами.
Примечание: Это не будет иметь никакого эффекта, если используется резервная сетка.
Swizzle swapchain_state_alpha_swizzle = 3 🔗
Значение swizzle для альфа-канала состояния swapchain.
Примечание: Это свойство влияет только на устройства, которые поддерживают расширения OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan.
Swizzle swapchain_state_blue_swizzle = 2 🔗
Значение swizzle для синего канала состояния swapchain.
Примечание: Это свойство влияет только на устройства, которые поддерживают расширения OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan.
Color swapchain_state_border_color = Color(0, 0, 0, 0) 🔗
Цвет границы состояния цепочки обмена, который используется, когда режим переноса привязывается к границе.
Примечание: Это свойство действует только на устройствах, поддерживающих расширения OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan.
Swizzle swapchain_state_green_swizzle = 1 🔗
Значение swizzle для зеленого канала состояния swapchain.
Примечание: Это свойство влияет только на устройства, которые поддерживают расширения OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan.
Wrap swapchain_state_horizontal_wrap = 0 🔗
Режим горизонтального переноса состояния цепочки обмена.
Примечание: Это свойство действует только на устройствах, которые поддерживают расширения OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan.
Filter swapchain_state_mag_filter = 1 🔗
Фильтр увеличения состояния цепочки обмена.
Примечание: Это свойство действует только на устройствах, которые поддерживают расширения OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan.
float swapchain_state_max_anisotropy = 1.0 🔗
Максимальная анизотропия состояния swapchain.
Примечание: Это свойство влияет только на устройства, которые поддерживают расширения OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan.
Filter swapchain_state_min_filter = 1 🔗
Фильтр минификации состояния swapchain.
Примечание: Это свойство действует только на устройствах, которые поддерживают расширения OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan.
MipmapMode swapchain_state_mipmap_mode = 2 🔗
void set_mipmap_mode(value: MipmapMode)
MipmapMode get_mipmap_mode()
Режим mipmap состояния swapchain.
Примечание: Это свойство действует только на устройствах, которые поддерживают расширения OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan.
Swizzle swapchain_state_red_swizzle = 0 🔗
Значение swizzle для красного канала состояния swapchain.
Примечание: Это свойство влияет только на устройства, которые поддерживают расширения OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan.
Wrap swapchain_state_vertical_wrap = 0 🔗
Режим вертикального переноса состояния цепочки обмена.
Примечание: Это свойство действует только на устройствах, которые поддерживают расширения OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan.
bool use_android_surface = false 🔗
Если включено, будет создана поверхность Android (с размерами из android_surface_size), которая предоставит 2D-контент для слоя композиции, а не будет использовать layer_viewport.
См. get_android_surface() для получения информации о том, как получить поверхность, чтобы ваше приложение могло рисовать на ней.
Примечание: Это будет работать только в сборках Android.
Описания метода
JavaObject get_android_surface() 🔗
Возвращает JavaObject, представляющий android.view.Surface, если use_android_surface включен и OpenXR создал поверхность. В противном случае будет возвращен null.
Примечание: Поверхность может быть создана только во время активного сеанса OpenXR. Таким образом, если use_android_surface включен вне сеанса OpenXR, она не будет создана, пока полностью не начнется новый сеанс.
Vector2 intersects_ray(origin: Vector3, direction: Vector3) const 🔗
Возвращает UV-координаты, где заданный луч пересекается со слоем композиции. origin и direction должны быть в глобальном пространстве.
Возвращает Vector2(-1.0, -1.0), если луч не пересекается.
bool is_natively_supported() const 🔗
Возвращает true, если среда выполнения OpenXR изначально поддерживает этот тип слоя композиции.
Примечание: Это вернет точный результат только после начала сеанса OpenXR.