1
0
Fork 0
Commit Graph

1236 Commits

Author SHA1 Message Date
Pāvels Nadtočajevs d6b132527e
Add separate editor accessibility mode setting. 2025-06-08 16:34:36 +03:00
Rémi Verschelde 7aee071097
Merge pull request #106013 from akien-mga/move-MovieWriterMJPEG-to-jpg-module
Move MovieWriterMJPEG class to `jpg` module it depends on
2025-06-05 13:11:18 +02:00
Rémi Verschelde 78eb0b68d3
Move MovieWriterMJPEG class to `jpg` module it depends on
Fixes #90932.
2025-06-05 10:29:22 +02:00
Pāvels Nadtočajevs 98f377d9d0
Use system timer/wait functions for frame delay when screen reader is active. 2025-06-04 13:44:02 +03:00
bruvzg ee181951b6
[macOS] Add support for loading shell environment from UI apps. 2025-06-03 18:27:29 +03:00
kobewi b41d6ecf8c Allow to override editor settings per project 2025-06-02 17:51:26 +02:00
Ricardo Sanchez-Saez 47971c0a27
Introduce 'visionos' platform derived from 'apple_embedded' 2025-05-19 15:47:01 -07:00
Ricardo Sanchez-Saez 457299449d
Introduce 'drivers/apple_embedded' abstract platform for code reuse 2025-05-19 15:37:13 -07:00
Thaddeus Crews 7439ea95f6
Merge pull request #105302 from KoBeWi/scenic
Add `--scene` command line argument
2025-05-13 16:22:20 -05:00
Pāvels Nadtočajevs 6a118b5027
Draw checkerboard (or clear color) under embedded window. 2025-05-13 13:16:22 +03:00
Stuart Carnie f658161619 macOS: Embedded window can be dismissed by clicking close
- Installed a SIGINT handler to terminate the application gracefully.
- Handle varying display scaling
2025-05-12 07:09:42 +10:00
Thaddeus Crews edb49129e8
Merge pull request #106130 from kitbdev/fix-test-help
Fix `--test` help option not showing in template builds
2025-05-08 07:19:36 -05:00
Stuart Carnie 9290adee38 MacOS: Additional improvements and fixes for embedded window support 2025-05-07 06:11:05 +10:00
kit 3d2ad8c316 Fix `--test` help option not in template builds 2025-05-06 14:39:39 -04:00
Thaddeus Crews 85fa1194f5
Merge pull request #96134 from mobile-bungalow/video_writer_extension_support
`MovieWriter` extension support
2025-04-24 09:09:25 -05:00
mobile-bungalow 387980a40a move movie writer to post extension init step 2025-04-23 07:30:37 -07:00
RedMser a96e8ac62c Remove old path remaps system
Unused in public repositories, deprecated for over 6 years, and the
replacement system is well-tested by now.
2025-04-23 15:48:33 +02:00
Thaddeus Crews 1a454b6527
Merge pull request #105427 from Calinou/force-angle-rename-macros
Rename `BLOCK_DEVICE()` macro to `FORCE_ANGLE()` in `main.cpp`
2025-04-16 10:45:15 -05:00
Thaddeus Crews c76e7024c9
Merge pull request #105288 from bruvzg/uid_custom_scene
Fix custom scene argument if it's referenced as UID.
2025-04-15 12:28:45 -05:00
Hugo Locurcio b7aadabee9
Rename `BLOCK_DEVICE()` macro to `FORCE_ANGLE()` in `main.cpp`
This makes the macro's role more explicit, as devices in the list
are not prevented from running Godot. They are only forced to use ANGLE
when using the Compatibility rendering method.
2025-04-15 17:43:50 +02:00
Thaddeus Crews 756053f05f
Merge pull request #105067 from smix8/navmesh_sync
Move NavigationServer navmesh sync from main() to process()
2025-04-14 19:39:51 -05:00
Pāvels Nadtočajevs 4afeca3bcf
Replace global oversampling with overrideable per-viewport oversampling. 2025-04-14 13:43:09 +03:00
kobewi 47568a4654 Add --scene command line argument 2025-04-12 09:15:10 +02:00
Pāvels Nadtočajevs 57bb602e37
Fix custom scene argument if it's referenced as UID. 2025-04-11 21:41:18 +03:00
Thaddeus Crews 0d267e7b1e
Core: Add dedicated `BitField` template 2025-04-11 11:53:26 -05:00
Thaddeus Crews 334006b501
Merge pull request #105216 from bruvzg/no_dummy_rs
Remove "dummy" renderer from the editor dropdown.
2025-04-11 09:50:46 -05:00
A Thousand Ships 889410dcda
Add `String::replace_char(s)` methods for performance and convenience 2025-04-10 13:08:45 +02:00
Pāvels Nadtočajevs 1054ab8239
Remove "dummy" renderer from the editor dropdown. 2025-04-10 08:45:47 +03:00
Thaddeus Crews 807ce83f00
Merge pull request #103805 from rsubtil/fix-recovery_lock_on_import
Fix recovery mode lock file not being cleared on import/export
2025-04-09 18:12:03 -05:00
Pāvels Nadtočajevs 5c9d63ff52
Fix initial project manager size and scales < 1. 2025-04-09 08:24:45 +03:00
Thaddeus Crews e6a61b1ecc
Merge pull request #76829 from bruvzg/ac_kit_direct
Implement screen reader support using AccessKit library.
2025-04-08 12:32:47 -05:00
Pāvels Nadtočajevs b106dfd4f9
Base accessibility API. 2025-04-08 20:14:28 +03:00
Pāvels Nadtočajevs f37fb49739
Add separate `minimize_disabled` and `maximize_disabled` window flags. 2025-04-07 18:58:11 +03:00
smix8 a4c56d478a Move NavigationServer navmesh sync from main() to process()
Moves NavigationServer navmesh sync from main() to process().
2025-04-05 21:29:24 +02:00
LuoZhihao 31c191ee72 Fix compiling with `disable_xr=yes` 2025-04-04 00:26:53 +08:00
Aaron Franke 2800948d61
Organize ifdefs for disabling navigation, physics, and XR 2025-04-02 08:24:24 -07:00
Thaddeus Crews c9c8556a47
Merge pull request #104862 from smix8/navserver_process
Prepare NavigationServer for `process()` and `physics_process()` split
2025-04-02 07:37:32 -05:00
Yufeng Ying 4f4031a675 Replace size() == 0 with is_empty(). 2025-04-02 19:18:43 +08:00
smix8 16fd7b6ae1 Prepare NavigationServer for process() and physics_process() split
Prepares the NavigationServer API for a split of its functionality between frame process() and stepped physics_process().
2025-04-02 11:01:08 +02:00
Michael Alexsander 556933306a
Allow to compile templates without navigation features 2025-04-01 11:53:35 -03:00
A Thousand Ships 5cc0539961
[Navigation] Create a dedicated 2D navigation server
* Add a dedicated 2D server
* Create dedicated tests
* Split performance metrics between 2D and 3D
* Rename the 3D only server module
2025-03-29 12:10:50 +01:00
Michael Alexsander 5ad414d046
Allow to compile templates without physics servers 2025-03-28 11:00:44 -03:00
Pāvels Nadtočajevs 3358128dc2
Disable broken Vulkan layers before running RenderingDevice tests. 2025-03-25 22:39:22 +01:00
Rémi Verschelde c9f0ab6701
Vulkan: Re-enable Mesa device select layer
We got this from RenderDoc which had an issue with it 5 years ago, but it's
not a given that Godot is also affected.

This layer is actually quite convenient to be able to change what default Vulkan
capable GPU should be used for applications via environment variables:
https://docs.mesa3d.org/envvars.html#vulkan-mesa-device-select-layer-environment-variables
2025-03-25 10:16:50 +01:00
Thaddeus Crews 97241ffea6
Merge pull request #99555 from Meorge/mute-game
Add "Mute Game" toggle in Game view
2025-03-19 17:46:11 -05:00
Malcolm Anderson 6858607e74 Add "Mute Audio" button to Game view in editor
Update servers/audio_server.cpp

Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>

Apply suggestions from code review

Co-authored-by: Adam Scott <ascott.ca@gmail.com>

Fix a few lines for new member names

Add command-line argument `--debug-mute-audio`, and pass it to game if started with mute enabled

Apply suggestions from code review

Co-authored-by: arkology <43543909+arkology@users.noreply.github.com>
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>

Fix icon for svgo
2025-03-19 08:20:17 -07:00
Pāvels Nadtočajevs f6891b0305
[DisplayServer] Decouple `show_window(MAIN_WINDOW_ID)` from `DisplayServer` constructor, update project manager size/position after DS init. 2025-03-19 11:23:04 +02:00
Thaddeus Crews c8a94993bf
Merge pull request #103961 from bruvzg/win_pos_sync
Sync `display/window/size/initial_position_type` and `Window::WINDOW_INITIAL_POSITION_` enum.
2025-03-18 14:42:33 -05:00
unvermuthet e41200b407 Vulkan: Disable layers in editor deemed buggy by RenderDoc 2025-03-17 22:46:25 +01:00
Thaddeus Crews c1b7865ae9
Merge pull request #103557 from aaronfranke/godot-version-defines
Rename version defines to `GODOT_VERSION_*` to match GDExtension godot-cpp
2025-03-13 08:57:42 -05:00
Aaron Franke 97ee05e9b7
Rename version defines to GODOT_VERSION_* to match GDExtension godot-cpp 2025-03-12 11:11:38 -07:00
kobewi 7d82704f12 Allow to ignore debugger error breaks 2025-03-12 19:05:57 +01:00
Thaddeus Crews c8ddbfbd38
Merge pull request #102940 from bruvzg/tab_ed
Add editor setting to override tablet driver.
2025-03-11 14:00:51 -05:00
Pāvels Nadtočajevs d990f594a0
Sync `display/window/size/initial_position_type` and `Window::WINDOW_INITIAL_POSITION_` enum. 2025-03-11 08:33:02 +02:00
A Thousand Ships 466590d0ec
Use `get_slicec` instead of `get_slice` for single character splitters 2025-03-08 20:36:37 +01:00
Ricardo Subtil d776682741 Fix recovery mode lock file not being cleared on import/export 2025-03-08 10:58:09 +00:00
Thaddeus Crews 67d4a245d8
Merge pull request #103267 from YeldhamDev/reality_got_too_extended
Allow to compile the engine without XR support
2025-03-07 15:12:54 -06:00
A Thousand Ships 5113022dfe
Clean up some uses of `String::substr`
Cases where the end position is either equvalent to the default or past
the end of the string.
2025-03-07 14:50:38 +01:00
Pāvels Nadtočajevs 6ed12bfc5d [Linux/BSD] Offload RenderingDevice creation test to subprocess. 2025-03-04 13:18:26 +02:00
Haoyu Qiu 7c8f81f1d0 Set editor's translation domain at root node 2025-03-02 08:52:27 +08:00
Michael Alexsander aea559b39a
Allow to compile the engine without XR support 2025-02-25 17:07:21 -03:00
Pāvels Nadtočajevs ab717497ef [Windows] Offload `RenderingDevice` creation test to subprocess. 2025-02-24 19:40:10 +02:00
Rémi Verschelde b77423370a
Fix cross-platform configuration of rendering driver settings
Simpler alternative to #103026 which avoids breaking compatibility.

Instead of introducing a new `auto` default value, we ensure that all
supported drivers are registered regardless of the editor's host platform,
and that the defaults are the intended ones.

This solves the following issues:
- macOS exports are meant to default to Metal in 4.4, but they would
  default to Vulkan if exported from Linux, Windows, or Android editors.
- Windows exports couldn't be made with Direct3D 12 from Linux, macOS, or
  Android editors, as the option couldn't be selected outside Windows.

Unlike #103026, it doesn't solve the issue of not always saving the
rendering drivers to `project.godot`, but now the defaults are at least
consistent between editor platforms.

Co-authored-by: Pāvels Nadtočajevs <7645683+bruvzg@users.noreply.github.com>
2025-02-23 12:28:59 +01:00
Rémi Verschelde 11f56d8265
Revert "Always allow selecting any rendering driver in the settings, add "auto" option."
This reverts commit dea20c4a9b.

This had unforeseen consequences for editor code that relies on querying these settings,
and possibly thirdparty code that would do the same. In hindsight, it's a bit too late
in the release cycle to make such a compatibility breaking change.
2025-02-23 12:19:20 +01:00
Pāvels Nadtočajevs dea20c4a9b Always allow selecting any rendering driver in the settings, add "auto" option. 2025-02-19 12:05:04 +02:00
Pāvels Nadtočajevs b3c0eaeeb8 Add editor setting to override tablet driver. 2025-02-15 23:16:58 +02:00
bruvzg 3f2a29cd9d [Windows] Read Wacom config to check if Windows Ink is disabled and auto switch to WinTab. 2025-02-13 15:10:16 +02:00
Thaddeus Crews f45d2f8f6c
Merge pull request #96926 from Dowsley/user-provided-arguments-fix
Ignore `--test` flag when it is an user-provided argument
2025-02-12 12:56:41 -06:00
Hilderin 9457666bba Fix accessing UID before first scan 2025-02-08 20:04:32 -05:00
J. F. Dowsley d481669c50 Ignore --test flag when it is an user-provided argument 2025-02-06 12:25:50 -03:00
Thaddeus Crews 86002e1a3c
Merge pull request #100882 from smix8/node_navmesh_geo_parsers
Make nodes handle their respective navigation source geometry
2025-01-16 17:18:01 -06:00
Thaddeus Crews 97fa4bdfdc
Merge pull request #101540 from akien-mga/vulkan-disable-layer-bandicam
Vulkan: Force disable broken `VK_LAYER_bandicam_helper` layer in editor
2025-01-16 17:17:57 -06:00
Pāvels Nadtočajevs 934668a69a Fix project manager window size when EDSCALE is not 1.0. 2025-01-15 12:39:02 +02:00
Rémi Verschelde 210e9d733f Vulkan: Force disable broken `VK_LAYER_bandicam_helper` layer in editor
Fixes #101480.
2025-01-14 21:28:21 +01:00
smix8 0ed2cb0439 Make nodes handle their respective navigation source geometry
Makes nodes handle their respective navigation source geometry.
2025-01-12 13:14:46 +01:00
Rémi Verschelde 33fb876ebb Merge pull request #101321 from YeldhamDev/project_manager_warn_silence
Change print warnings to config ones for popups that need transparency
2025-01-11 22:29:48 +01:00
Hugo Locurcio cc86322d8d
Increase the project manager's default window size
This makes the project manager feel less cramped when many
projects are imported, or when browsing templates in the asset library.

On displays smaller than 1152x800 (e.g. 1366x768), window height is
automatically limited by DisplayServer when setting the window size.

This also tweaks splash screen size when starting the project manager
to match the project manager's default window size, and allows the
`--resolution` and `--position` CLI arguments to affect the project
manager.

Lastly, this increases the minimum width slightly to prevent the UI
from being cut off with the default theme.
2025-01-11 18:25:24 +01:00
Pāvels Nadtočajevs 65f94b163a Fallback to primary screen if no window layout is saved in project metadata. 2025-01-10 09:06:28 +02:00
Michael Alexsander 5c63646e87
Change print warnings to config ones for popups that need transparency 2025-01-09 15:59:56 -03:00
Pāvels Nadtočajevs 3d60ce9389 [Export] Allow using ICU data from export templates instead of editor embedded data. 2025-01-07 08:15:09 +02:00
Ricardo Subtil b77aa473a1 Implement a "Recovery Mode" for recovering crashing/hanging projects during initialization 2025-01-03 10:50:15 +00:00
Rémi Verschelde b34adf29dc
Remove unused OS `_display_driver_id` member 2025-01-03 01:52:25 +01:00
Rémi Verschelde 0d710da96c
Merge pull request #98554 from Calinou/add-property-hint-ranges
Add more property hint ranges for project settings
2025-01-03 00:47:59 +01:00
A Thousand Ships a1846b27ea
Improve use of `Ref.is_null/valid`
Use `is_null` over `!is_valid` and vice versa.
2024-12-23 16:35:02 -05:00
Hugo Locurcio 62c17911ea Add more property hint ranges for project settings
- Tweak property hint ranges for some networking settings to ensure
  the minimum values don't break the debugger entirely.
- Ensure shader time rollover is set to at least 1, as 0 causes a division by
  zero to occur.

All relevant project settings are now covered by a range hint.
2024-12-23 18:22:32 +01:00
Rémi Verschelde fd5548a8b7
Merge pull request #100634 from YYF233333/iwyu2
Remove unused headers in servers
2024-12-20 23:57:09 +01:00
Rémi Verschelde a11364d1e6
Merge pull request #99010 from Hilderin/embedding-game-process
Embed game process in editor
2024-12-20 23:56:43 +01:00
Yufeng Ying e88e30c273 Remove unused headers in servers.
Co-authored-by: bruvzg <7645683+bruvzg@users.noreply.github.com>
2024-12-20 18:51:01 +08:00
Hilderin 9d2a4c03be Embedding game process in editor 2024-12-18 17:52:42 -05:00
Yufeng Ying be86ce3103 Apply iwyu suggestion in core. 2024-12-19 00:43:47 +08:00
kobewi 62d4928e86 Improve UID support for main scene 2024-12-16 19:58:16 +01:00
Rémi Verschelde d1b683d413
Merge pull request #97140 from BastiaanOlij/xr_action_map_enhancements
OpenXR: Add support for binding modifiers
2024-12-12 14:09:41 +01:00
Thaddeus Crews 23afda44e4
Merge pull request #100257 from darksylinc/matias-minimize-leak
Keep processing Graphics if there are pending operations
2024-12-11 17:35:35 -06:00
Bastiaan Olij 0a61ebdcea OpenXR: Add support for binding modifiers 2024-12-12 09:46:19 +11:00
Matias N. Goldberg acf439e96d Keep processing Graphics if there are pending operations
Fixes #90017
Fixes #90030
Fixes #98044

This PR makes the following changes:

# Force processing of GPU commands for frame_count frames

The variable `frames_pending_resources_for_processing` is added to track
this.

The ticket #98044 suggested to use `_flush_and_stall_for_all_frames()`
while minimized.

Technically this works and is a viable solution.

However I noticed that this issue was happening because Logic/Physics
continue to work "business as usual" while minimized(\*). Only Graphics
was being deactivated (which caused commands to accumulate until window
is restored).

To continue this behavior of "business as usual", I decided that GPU
work should also "continue as usual" by buffering commands in a double
or triple buffer scheme until all commands are done processing (if they
ever stop coming). This is specially important if the app specifically
intends to keep processing while minimized.

Calling `_flush_and_stall_for_all_frames()` would fix the leak, but it
would make  Godot's behavior different while minimized vs while the
window is presenting.

\* `OS::add_frame_delay` _does_ consider being minimized, but it just
throttles CPU usage. Some platforms such as Android completely disable
processing because the higher level code stops being called when the app
goes into background. But this seems like an implementation-detail that
diverges from the rest of the platforms (e.g. Windows, Linux & macOS
continue to process while minimized).

# Rename p_swap_buffers for p_present

**This is potentially a breaking change** (if it actually breaks
anything, I ignore. But I strongly suspect it doesn't break anything).

"Swap Buffers" is a concept carried from OpenGL, where a frame is "done"
when `glSwapBuffers()` is called, which basically means "present to the
screen".

However it _also_ means that OpenGL internally swaps its internal
buffers in a double/triple buffer scheme (in Vulkan, we do that
ourselves and is tracked by `RenderingDevice::frame`).

Modern APIs like Vulkan differentiate between "submitting GPU work" and
"presenting".

Before this PR, calling `RendererCompositorRD::end_frame(false)` would
literally do nothing. This is often undesired and the cause of the leak.
After this PR, calling `RendererCompositorRD::end_frame(false)` will now
process commands, swap our internal buffers in a double/triple buffer
scheme **but avoid presenting to the screen**.

Hence the rename of the variable from `p_swap_buffers` to `p_present`
(which slightly alters its behavior).
If we want `RendererCompositorRD::end_frame(false)` to do nothing, then
we should not call it at all.

This PR reflects such change: When we're minimized **_and_**
`has_pending_resources_for_processing()` returns false, we don't call
`RendererCompositorRD::end_frame()` at all.

But if `has_pending_resources_for_processing()` returns true, we will
call it, but with `p_present = false` because we're minimized.

There's still the issue that Godot keeps processing work (logic,
scripts, physics) while minimized, which we shouldn't do by default. But
that's work for follow up PR.
2024-12-11 14:13:29 -03:00
Lukas Tenbrink b5c31ebb41 Add contains_char() for single-character 'contains' calls. 2024-12-06 20:23:35 +01:00
Thaddeus Crews a135a6478a
Merge pull request #98383 from RandomShaper/deprecate_unsafe_th_rend
Deprecate the pointless unsafe threading model for rendering
2024-12-03 14:40:56 -06:00
Hunt J. Sparra 48fbe4172b Register Engine, OS, ProjectSettings, and Time early. 2024-11-21 18:09:03 -05:00
Thaddeus Crews 0dda6a974c
Merge pull request #99286 from KoBeWi/uid_in_a_path_factory
Support uid:// in more places
2024-11-18 09:23:44 -06:00
A Thousand Ships 68f638cf02
Use `(r)find_char` instead of `(r)find` for single characters 2024-11-17 10:02:18 +01:00