Commit Graph

29 Commits

Author SHA1 Message Date
2edc43df8e Merge pull request #78598 from BastiaanOlij/resolve_depth_buffer_mobile
Resolve depth buffer in mobile renderer when required
2025-11-20 11:10:48 -06:00
53e1ea184a Implement XR_META_foveation_eye_tracked 2025-11-18 14:58:11 +00:00
21ffbecfa9 Resolve depth buffer in pass if supported by driver 2025-11-17 17:29:38 +11:00
3d1c9fd5de Move server files into their subfolders 2025-09-30 19:39:39 -07:00
9fbf5808a0 Rename server "free" functions to "free_rid" to match exposed API 2025-09-30 16:52:25 -07:00
58ecb8ade5 Fix D3D12 using the wrong clip space projection matrix. Remove error-prone/unnecessary graphicsApi parameter. 2025-09-23 16:58:39 -07:00
bc7e68dfd1 Typos 2025-08-19 18:32:59 -05:00
3b70fbdc3c Implement motion vectors in mobile renderer 2025-05-30 13:09:54 -05:00
6ae50cad17 RenderingDevice: introduce parameter 'mipmaps' for texture_create_from_extension() 2025-05-07 15:15:55 +03:00
e3c215fc13 Add support for Direct3D 12 OpenXR backend.
This change adds support for running XR projects built with the `d3d12`
rendering backend. The XR backend hooks into the setup for the D3D12
render context in order to use the desired device and command queue for
submission to OpenXR. The XR backend takes care of importing the D3D12
swapchain images into the render context.

As part of this process, three issues are addressed:
- Ensuring that resource state transitions are only done on textures
  that require them.
- Enabling view instancing in the PSOs for multiview render passes.
- Addressing a bug in the D3D12 runtime where PSO creation may fail
  when front face detection is used.

Please refer to #86283 for additional discussions on the implementation
details.
2025-04-19 20:39:33 -07:00
98aced4e65 Merge pull request #99768 from dsnopek/openxr-vulkan-foveated-rendering
OpenXR: Use the `XR_FB_foveation_vulkan` extension to get the density map for VRS
2025-04-17 09:14:23 -05:00
b28e95c8b0 Request the XR_KHR_LOADER_INIT_EXTENSION_NAME extension 2025-04-15 17:51:57 -07:00
79f5a4d9fe OpenXR: Use the XR_FB_foveation_vulkan extension to get the density map for VRS 2025-03-31 07:21:58 -05:00
4af8989e38 Merge pull request #103973 from dsnopek/openxr-opengl-version-warning
OpenXR: Fix OpenGL version warning when using GLES
2025-03-11 14:00:37 -05:00
6353386241 OpenXR: Fix OpenGL version warning when using GLES 2025-03-11 10:32:22 -05:00
713a1ba554 Style: Standardize Obj-C #import syntax 2025-03-08 09:28:34 -06:00
324512e11c Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
c242cef627 Use vectors for OpenXRAPI memory management 2025-01-13 16:10:43 -06:00
08ced813a9 OpenXR: Add Metal support 2024-12-10 11:41:59 +11:00
bb5f390fb9 Style: Apply clang-tidy fixes (superficial)
• `modernize-use-bool-literals`, `modernize-use-nullptr`, and `readability-braces-around-statements`
2024-11-04 12:11:14 -06:00
1803fe0cd5 Fix OpenXR module failing to build on Linux when Wayland is disabled 2024-10-27 14:03:03 -03:00
256699ee31 OpenXR: Add support for Wayland on Linux 2024-10-04 11:44:05 -05:00
7d56b09f23 Expose a function to create textures from a native handle in the compatibility renderer 2024-09-19 09:05:32 -05:00
dfcff4ef46 OpenGL: Unconditionally do glDisable(GL_FRAMEBUFFER_SRGB) because we do our own sRGB conversion 2024-08-12 12:40:38 -05:00
f291a4ed3a Fix leakage of JNI object references
Fixes https://github.com/godotengine/godot/issues/87548
2024-04-15 10:30:18 -07:00
c388fe2ba7 OpenXR: Improve swapchain logic and fix swapchain update when render target multiplier is changed. 2024-04-09 16:56:39 +10:00
73eff10c76 Finish splitting functionality of the Vulkan and D3D12 backends into RenderingDeviceDriver. 2024-02-12 10:02:18 -03:00
7e0f7d3abd Add Wayland support
Not everything is yet implemented, either for Godot or personal
limitations (I don't have all hardware in the world). A brief list of
the most important issues follows:

- Single-window only: the `DisplayServer` API doesn't expose enough
information for properly creating XDG shell windows.

- Very dumb rendering loop: this is very complicated, just know that
the low consumption mode is forced to 2000 Hz and some clever hacks are
in place to overcome a specific Wayland limitation. This will be
improved to the extent possible both downstream and upstream.

- Features to implement yet: IME, touch input, native file dialog,
drawing tablet (commented out due to a refactor), screen recording.

- Mouse passthrough can't be implement through a poly API, we need a
rect-based one.

- The cursor doesn't yet support fractional scaling.

- Auto scale is rounded up when using fractional scaling as we don't
have a per-window scale query API (basically we need
`DisplayServer::window_get_scale`).

- Building with `x11=no wayland=yes opengl=yes openxr=yes` fails.

This also adds a new project property and editor setting for selecting the
default DisplayServer to start, to allow this backend to start first in
exported projects (X11 is still the default for now). The editor setting
always overrides the project setting.

Special thanks to Drew Devault, toger5, Sebastian Krzyszkowiak, Leandro
Benedet Garcia, Subhransu, Yury Zhuravlev and Mara Huldra.
2024-01-30 16:44:47 +01:00
82a36cf31b Cleanup of OpenXR module scons config 2024-01-25 23:28:13 +11:00