OpenXRCompositionLayer

实验性: This class may be changed or removed in future versions.

继承: Node3D < Node < Object

派生: OpenXRCompositionLayerCylinder, OpenXRCompositionLayerEquirect, OpenXRCompositionLayerQuad

所有 OpenXR 合成层节点的父类。

描述

合成层允许 XR 合成器通过保留其质量的特殊投影,从而在头戴式设备内显示 2D 视口。这样可以在保持图层的原始分辨率的同时,渲染清晰的文本。

注意:如果 OpenXR 运行时不支持给定的合成层类型,则可以使用 ViewportTexture 生成后备网格,以模拟合成层。

属性

bool

alpha_blend

false

Vector2i

android_surface_size

Vector2i(1024, 1024)

bool

enable_hole_punch

false

SubViewport

layer_viewport

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

禁用 Mipmap。

注意:Mipmap 只有在兼容渲染器中能够禁用。

MipmapMode MIPMAP_MODE_NEAREST = 1

使用最接近分辨率的 mipmap。

MipmapMode MIPMAP_MODE_LINEAR = 2

使用最接近分辨率的两个 mipmap 的线性插值。


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

将颜色通道映射为 Alpha 通道的值。

Swizzle SWIZZLE_ZERO = 4

将颜色通道映射为零。

Swizzle SWIZZLE_ONE = 5

将颜色通道映射为一。


属性说明

bool alpha_blend = false 🔗

  • void set_alpha_blend(value: bool)

  • bool get_alpha_blend()

启用使用其 alpha 通道混合图层的功能。

可以与 Viewport.transparent_bg 结合使用,以便为图层提供透明背景。


Vector2i android_surface_size = Vector2i(1024, 1024) 🔗

  • void set_android_surface_size(value: Vector2i)

  • Vector2i get_android_surface_size()

如果启用了 use_android_surface,则为要创建的 Android 表面的大小。


bool enable_hole_punch = false 🔗

  • void set_enable_hole_punch(value: bool)

  • bool get_enable_hole_punch()

启用一种称为“打孔”的技术,该技术允许将合成层置于主投影层后面(即将 sort_order 设置为负值),同时在 Godot 渲染的所有内容上“打一个洞”,以便该层仍然可见。

这可用于创建合成层与 Godot 渲染的所有内容存在于同一 3D 空间中的幻觉,使对象看起来既从合成层的后面又从合成层的前面经过。


SubViewport layer_viewport 🔗

合成层上渲染的 SubViewport


int sort_order = 1 🔗

  • void set_sort_order(value: int)

  • int get_sort_order()

合成层的排序顺序。数字较大的层显示在数字较小的层之前。

注意:使用回退网格时无效。


Swizzle swapchain_state_alpha_swizzle = 3 🔗

交换链状态的 Alpha 通道分量重排值。

注意:该属性仅对支持 OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan 扩展的设备有效。


Swizzle swapchain_state_blue_swizzle = 2 🔗

交换链状态的蓝色通道分量重排值。

注意:该属性仅对支持 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 🔗

交换链状态的绿色通道分量重排值。

注意:该属性仅对支持 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()

交换链状态的最大各向异性。

注意:该属性仅对支持 OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan 扩展的设备有效。


Filter swapchain_state_min_filter = 1 🔗

  • void set_min_filter(value: Filter)

  • Filter get_min_filter()

交换链状态的缩小过滤器。

注意:该属性仅对支持 OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan 扩展的设备有效。


MipmapMode swapchain_state_mipmap_mode = 2 🔗

交换链状态的 mipmap 模式。

注意:该属性仅对支持 OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan 扩展的设备有效。


Swizzle swapchain_state_red_swizzle = 0 🔗

交换链状态的红色通道分量重排值。

注意:该属性仅对支持 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() 🔗

如果启用了 use_android_surface 并且 OpenXR 已创建 android.view.Surface,则返回代表该表面的 JavaObject。否则返回 null

注意:表面只能在活动的 OpenXR 会话中创建。因此,如果 use_android_surface 是在 OpenXR 会话外启用的,就需要等到启动全新的会话才会创建。


Vector2 intersects_ray(origin: Vector3, direction: Vector3) const 🔗

返回给定射线与合成层相交的 UV 坐标。origindirection 必须位于全局空间中。

如果射线不相交,则返回 Vector2(-1.0, -1.0)


bool is_natively_supported() const 🔗

如果 OpenXR 运行时本身支持该合成层类型,则返回 true

注意:仅在 OpenXR 会话启动后才会返回准确结果。