Class OpenXRCompositionLayer
The parent class of all OpenXR composition layer nodes.
- Inheritance
-
OpenXRCompositionLayer
- Derived
Remarks
Composition layers allow 2D viewports to be displayed inside of the headset by the XR compositor through special projections that retain their quality. This allows for rendering clear text while keeping the layer at a native resolution.
Note: If the OpenXR runtime doesn't support the given composition layer type, a fallback mesh can be generated with a ViewportTexture, in order to emulate the composition layer.
Properties
alpha_blend
Enables the blending the layer using its alpha channel.
Can be combined with transparent_bg to give the layer a transparent background.
var alpha_blend : bool = false
Property Value
Remarks
android_surface_size
The size of the Android surface to create if use_android_surface is enabled.
var android_surface_size : Vector2i = Vector2i(1024, 1024)
Property Value
Remarks
enable_hole_punch
Enables a technique called "hole punching", which allows putting the composition layer behind the main projection layer (i.e. setting sort_order to a negative value) while "punching a hole" through everything rendered by Godot so that the layer is still visible.
This can be used to create the illusion that the composition layer exists in the same 3D space as everything rendered by Godot, allowing objects to appear to pass both behind or in front of the composition layer.
var enable_hole_punch : bool = false
Property Value
Remarks
layer_viewport
The SubViewport to render on the composition layer.
var layer_viewport : SubViewport
Property Value
Remarks
- void set_layer_viewport(SubViewport value)
- SubViewport get_layer_viewport
sort_order
The sort order for this composition layer. Higher numbers will be shown in front of lower numbers.
Note: This will have no effect if a fallback mesh is being used.
var sort_order : int = 1
Property Value
Remarks
use_android_surface
If enabled, an Android surface will be created (with the dimensions from android_surface_size) which will provide the 2D content for the composition layer, rather than using layer_viewport.
See get_android_surface for information about how to get the surface so that your application can draw to it.
Note: This will only work in Android builds.
var use_android_surface : bool = false
Property Value
Remarks
Methods
get_android_surface
Returns a JavaObject representing an android.view.Surface
if use_android_surface is enabled and OpenXR has created the surface. Otherwise, this will return null
.
Note: The surface can only be created during an active OpenXR session. So, if use_android_surface is enabled outside of an OpenXR session, it won't be created until a new session fully starts.
JavaObject get_android_surface
intersects_ray(Vector3, Vector3)
Qualifiers: const
Returns UV coordinates where the given ray intersects with the composition layer. origin
and direction
must be in global space.
Returns Vector2(-1.0, -1.0)
if the ray doesn't intersect.
Vector2 intersects_ray(Vector3 origin, Vector3 direction)
Parameters
is_natively_supported
Qualifiers: const
Returns true
if the OpenXR runtime natively supports this composition layer type.
Note: This will only return an accurate result after the OpenXR session has started.
bool is_natively_supported