1
0
Fork 0
Commit Graph

1221 Commits

Author SHA1 Message Date
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
kobewi 3b6705a641 Support uid:// in more places 2024-11-16 21:43:18 +01:00
Rémi Verschelde 4d4407ce5a
Revert "Warn on unknown command line arguments"
This reverts commit 8379cc85aa.

This caused some regressions, as this approach doesn't properly handle all
possible arguments.
2024-11-15 21:48:51 +01:00
Pedro J. Estébanez a46ea9d064 Deprecate the pointless unsafe threading model for rendering 2024-11-14 10:43:29 +01:00
Thaddeus Crews 15d09a5767
Merge pull request #99149 from mrsaturnsan/set_max_fps_fix
Fix max FPS initialization
2024-11-13 08:34:21 -06:00
mrsaturnsan 4b94162320 Fix max FPS initialization
Remove unnecessary get_max_fps
2024-11-12 21:10:27 -06:00
Thaddeus Crews 0a847f7464
Merge pull request #98253 from timothyqiu/its-too-late
Fix some strings not caught by editor pseudolocalization
2024-11-12 12:13:14 -06:00
Thaddeus Crews 972a5ca980
Merge pull request #98688 from timothyqiu/editor-only
Mark editor pseudolocalization CLI option editor-only
2024-11-11 14:17:55 -06:00
Hugo Locurcio 8379cc85aa
Warn on unknown command line arguments
This eases troubleshooting when working with command line arguments.

Warnings are only printed if the argument does not exist as a file
or directory path (relative or absolute). This allows positional arguments
to keep working as they are now, without printing warnings when a project
reads positional arguments to perform operations on files (e.g. when
drag-and-dropping a file onto a project executable).

This now prints a warning:

    godot --non-existent-argument

This still doesn't print a warning, as it's an user argument:

    godot -- --non-existent-argument

This doesn't print a warning if the file/folder path exists:

    godot /path/to/file.txt

A warning is still printed if the file/folder doesn't exist. Drag-and-drop
associations always refer to existing files/folders, so that scenario was
unlikely to be encountered.
2024-11-06 15:01:40 +01:00
Haoyu Qiu 55c4e6979a Mark editor pseudolocalization CLI option editor-only 2024-10-31 09:36:49 +08:00
Thaddeus Crews edad871a2d
Merge pull request #98425 from darksylinc/matias-breadcrumbs-race-fix
Fix race conditions in breadcrumbs
2024-10-25 13:04:12 -05:00
Thaddeus Crews 9554e3c35b
Merge pull request #38208 from Calinou/project-manager-use-dummy-audio-driver
Use the Dummy audio driver in the project manager
2024-10-25 13:04:02 -05:00
Matias N. Goldberg 668c9b74e2 Fix race conditions in breadcrumbs
Adds "--accurate-breadcrumbs" CLI command

Additionally, leave out breadcrumbs code in non-debug, non-dev builds.
Fix regression introduced in #98388 where command_insert_breadcrumb() is
called even in non-debug builds.

Fixes #98338
2024-10-22 22:08:46 -03:00
Thaddeus Crews 6ec3dc1fb5
Merge pull request #97649 from ohboh/literally-unusable-on-mobile-without-this
Fix `emulate_mouse_from_touch` setting affecting editor
2024-10-21 16:39:26 -05:00
Thaddeus Crews 7dbea98c49
Merge pull request #97005 from Repiteo/core/window-corner-style
Core: Add `DisplayServer` flag for sharp corners
2024-10-21 16:39:25 -05:00
Thaddeus Crews f8c4a683d7
Core: Add `DisplayServer` flag for sharp corners 2024-10-18 11:20:21 -05:00