OpenXRCompositionLayer

Экспериментальное: This class may be changed or removed in future versions.

Наследует: Node3D < Node < Object

Наследуется от: OpenXRCompositionLayerCylinder, OpenXRCompositionLayerEquirect, OpenXRCompositionLayerQuad

Родительский класс всех узлов композиционного слоя OpenXR.

Описание

Слои композиции позволяют отображать 2D-окна просмотра внутри гарнитуры с помощью XR-композитора с помощью специальных проекций, которые сохраняют свое качество. Это позволяет визуализировать чистый текст, сохраняя при этом исходное разрешение слоя.

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

Свойства

bool

alpha_blend

false

Vector2i

android_surface_size

Vector2i(1024, 1024)

bool

enable_hole_punch

false

SubViewport

layer_viewport

bool

protected_content

false

int

sort_order

1

Swizzle

swapchain_state_alpha_swizzle

3

Swizzle

swapchain_state_blue_swizzle

2

Color

swapchain_state_border_color

Color(0, 0, 0, 0)

Swizzle

swapchain_state_green_swizzle

1

Wrap

swapchain_state_horizontal_wrap

0

Filter

swapchain_state_mag_filter

1

float

swapchain_state_max_anisotropy

1.0

Filter

swapchain_state_min_filter

1

MipmapMode

swapchain_state_mipmap_mode

2

Swizzle

swapchain_state_red_swizzle

0

Wrap

swapchain_state_vertical_wrap

0

bool

use_android_surface

false

Методы

JavaObject

get_android_surface()

Vector2

intersects_ray(origin: Vector3, direction: Vector3) const

bool

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

Сопоставляет цветовой канал со значением единицы.


Описания свойств

bool alpha_blend = false 🔗

  • void set_alpha_blend(value: bool)

  • bool get_alpha_blend()

Позволяет смешивать слой с использованием его альфа-канала.

Можно комбинировать с Viewport.transparent_bg, чтобы придать слою прозрачный фон.


Vector2i android_surface_size = Vector2i(1024, 1024) 🔗

  • void set_android_surface_size(value: Vector2i)

  • Vector2i get_android_surface_size()

Размер создаваемой поверхности Android, если включен use_android_surface.


bool enable_hole_punch = false 🔗

  • void set_enable_hole_punch(value: bool)

  • bool get_enable_hole_punch()

Позволяет использовать технику, называемую «дырокол», которая позволяет размещать слой композиции за основным проекционным слоем (т. е. устанавливать sort_order на отрицательное значение), одновременно «пробивая дыру» через все, что визуализируется Godot, так что слой все еще виден.

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


SubViewport layer_viewport 🔗

SubViewport для рендеринга на слое композиции.


bool protected_content = false 🔗

  • void set_protected_content(value: bool)

  • bool is_protected_content()

Если эта функция включена, цепочка обмена OpenXR будет создана с флагом XR_SWAPCHAIN_CREATE_PROTECTED_CONTENT_BIT, который защитит её содержимое от доступа процессора.

При использовании с Android Surface это может позволить отображать контент с DRM-защитой и вступит в силу только при первом создании Surface; последующие изменения этого свойства не будут иметь никакого эффекта.


int sort_order = 1 🔗

  • void set_sort_order(value: int)

  • int get_sort_order()

Порядок сортировки для этого слоя композиции. Более высокие числа будут показаны перед более низкими числами.

Примечание: Это не будет иметь никакого эффекта, если используется резервная сетка.


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) 🔗

  • void set_border_color(value: Color)

  • Color get_border_color()

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

Примечание: Это свойство действует только на устройствах, поддерживающих расширения 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 🔗

  • void set_horizontal_wrap(value: Wrap)

  • Wrap get_horizontal_wrap()

Режим горизонтального переноса состояния цепочки обмена.

Примечание: Это свойство действует только на устройствах, которые поддерживают расширения OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan.


Filter swapchain_state_mag_filter = 1 🔗

  • void set_mag_filter(value: Filter)

  • Filter get_mag_filter()

Фильтр увеличения состояния цепочки обмена.

Примечание: Это свойство действует только на устройствах, которые поддерживают расширения OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan.


float swapchain_state_max_anisotropy = 1.0 🔗

  • void set_max_anisotropy(value: float)

  • float get_max_anisotropy()

Максимальная анизотропия состояния swapchain.

Примечание: Это свойство влияет только на устройства, которые поддерживают расширения OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan.


Filter swapchain_state_min_filter = 1 🔗

  • void set_min_filter(value: Filter)

  • Filter get_min_filter()

Фильтр минификации состояния swapchain.

Примечание: Это свойство действует только на устройствах, которые поддерживают расширения OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan.


MipmapMode swapchain_state_mipmap_mode = 2 🔗

Режим 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 🔗

  • void set_vertical_wrap(value: Wrap)

  • Wrap get_vertical_wrap()

Режим вертикального переноса состояния цепочки обмена.

Примечание: Это свойство действует только на устройствах, которые поддерживают расширения OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan.


bool use_android_surface = false 🔗

  • void set_use_android_surface(value: bool)

  • bool get_use_android_surface()

Если включено, будет создана поверхность 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.