Commit graph

5912 commits

Author SHA1 Message Date
Riteo
84d3adcf2f Wayland: Implement native sub-windows
The backend is now mature enough to not explode with multiple windows
but the `DisplayServer` API still cannot meet some guarantees required
by the various Wayland protocols we use. To meet those guarantees this
patch adds three new elements to the DisplayServer API, with relative
handling logic for `Window` and `Popup` nodes:

 - `WINDOW_EVENT_FORCE_CLOSE`, which tells a window to *forcefully*
close itself and ensure a proper cleanup of its references, as Wayland
enforces this behavior;

 - `WINDOW_FLAG_POPUP_WM_HINT`, which explicitly declares a window as a
"popup", as Wayland enforces this distinction and heuristics are not
reliable enough;

 - `FEATURE_SELF_FITTING_WINDOWS`, which signals that the compositor can
fit windows to the screen automatically and that nodes should not do
that themselves.

Given the size of this feature, this patch also includes various
`WaylandThread` reworks and fixes including:

 - Improvements to frame wait logic, with fixes to various stalls and a
configurable (through a `#define`) timeout amount;

 - A proper implementation of `window_can_draw`;

 - Complete overhaul of pointer and tablet handling. Now everything is
always accumulated and handled only on each respective `frame` event.
This makes their logic simpler and more robust.

 - Better handling of pointer leaving and pointer enter/exit event
sending;

 - Keyboard focus tracking;

 - More solid window references using IDs instead of raw pointers as
windows can be deleted at any time;

 - More aggressive messaging to window nodes to enforce rects imposed by
the compositor.
2025-04-04 20:23:25 +02:00
Thaddeus Crews
6bd249a4c2
Merge pull request #104850 from Repiteo/core/warning-macros
Core: Integrate warning suppression macro helpers
2025-04-03 16:50:22 -05:00
Thaddeus Crews
207a2b6472
Core: Integrate warning suppression macro helpers 2025-04-03 10:13:46 -05:00
Aaron Franke
2800948d61
Organize ifdefs for disabling navigation, physics, and XR 2025-04-02 08:24:24 -07:00
Thaddeus Crews
1f56d96cf2
Merge pull request #104893 from Repiteo/scons/external-includes-alt
SCons: Add `CPPEXTPATH` for external includes
2025-04-02 07:48:03 -05: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
Thaddeus Crews
f25fc34439
SCons: Add CPPEXTPATH for external includes 2025-04-02 07:29:08 -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
Thaddeus Crews
b69e92cbd3
Merge pull request #104880 from beicause/shader-fix-bvec-to-variant
Shader: Fix `bvec` to variant conversion
2025-04-01 19:53:30 -05:00
Michael Alexsander
556933306a
Allow to compile templates without navigation features 2025-04-01 11:53:35 -03:00
LuoZhihao
9e0798ed36 Shader: Fix bvec to variant conversion 2025-04-01 19:03:15 +08:00
Pāvels Nadtočajevs
19f360d65a
Add font import flag to toggle modulation of colored glyphs. 2025-04-01 13:36:10 +03:00
Hugo Locurcio
5cdd612c54
Fix time display in MovieWriter window title and console output
Following the change to `String::num()`, decimals were added even when
numbers were being rounded to whole integers beforehand. Additionally,
the frame remainder is displayed as a timecode to the window title and
console output.

This also fixes a floating-point division by zero that occurred when
the movie was recorded in less than 1 second of real time.
2025-03-31 20:38:18 +02:00
Thaddeus Crews
8b2952a71c
Merge pull request #101504 from AThousandShips/nav_split_new
[Navigation] Create a dedicated 2D navigation server
2025-03-30 09:05:43 -05:00
Thaddeus Crews
780cf03051
Merge pull request #104556 from Ivorforce/string-extend-instead-of-parse
Use `append_` instead of `parse_` for `String` methods.
2025-03-29 10:16:33 -05: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
Rémi Verschelde
e8bc75f056
Merge pull request #103373 from YeldhamDev/build_remove_physics
Allow to compile templates without physics servers
2025-03-28 17:30:03 +01:00
Rémi Verschelde
3b90bb56ad
Merge pull request #89782 from KoBeWi/stdArrayList
Use initializer list in Arrays
2025-03-28 17:29:40 +01:00
Michael Alexsander
5ad414d046
Allow to compile templates without physics servers 2025-03-28 11:00:44 -03:00
Rémi Verschelde
46a5940950
Merge pull request #103643 from dsnopek/openxr-alternative-reference-spaces
OpenXR: Support alternative reference spaces from extensions
2025-03-28 14:32:00 +01:00
Rémi Verschelde
e81eb3f1e9
Merge pull request #102354 from YYF233333/style_iterator
Use iterator pattern instead of manually traverse `List::Element *`
2025-03-28 14:31:40 +01:00
Rémi Verschelde
408d07109b
Merge pull request #99551 from DarioSamo/fragment-density-map
Implement Fragment density map support.
2025-03-28 14:31:19 +01:00
Yyf2333
22b5ec17fb Using iterator pattern instead of List::Element *.
Co-authored-by: Adam Scott <ascott.ca@gmail.com>
2025-03-28 13:29:15 +08:00
Lukas Tenbrink
ffa6ef220b Use append_ instead of parse_ for String methods. 2025-03-27 17:51:02 +01:00
kobewi
75881f8322 Use initializer list in Arrays 2025-03-26 18:38:15 +01:00
Dario
76d709be74 Implement support for fragment density maps.
Co-Authored-By: Bastiaan Olij <mux213@gmail.com>
2025-03-24 11:50:04 -05:00
David Snopek
3f27351f2b OpenXR: Support alternative reference spaces from extensions
Co-authored-by: Fredia Huya-Kouadio <fhuyakou@gmail.com>
2025-03-24 11:33:30 -05:00
Rémi Verschelde
b7632687f4
Merge pull request #104334 from ztc0611/fix-movie-writer-viewport
Fix Movie Writer behavior with Viewport Display Mode + Window Size Override
2025-03-21 13:03:45 +01:00
Rémi Verschelde
f51ea67fb5
Merge pull request #104232 from Ivorforce/camera-server-shutdown
Deactivate the `CameraServer` by default.
2025-03-21 13:03:32 +01:00
Rémi Verschelde
92fb04c6cc
Merge pull request #103941 from stuartcarnie/metal_fx_features
Renderer: Expose and document `Features` enum for MetalFX
2025-03-21 13:03:19 +01:00
Lukas Tenbrink
54685c3037 Deactivate the CameraServer by default.
Add `monitoring_feeds` property to `CameraServer`.
This saves resources for games that don't use a physical camera.
2025-03-21 07:58:57 +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
kobewi
10f6c01b9c Remove ABS in favor of Math::abs 2025-03-19 13:52:40 +01:00
Stuart Carnie
e2066298d9 Renderer: Fix Metal handling of cube textures; assert equal dimensions 2025-03-19 11:52:59 +11:00
Zach Coleman
c57c2445d8 Update movie_writer.cpp 2025-03-18 15:00:40 -07:00
Thaddeus Crews
b7eda9dbc1
Merge pull request #104230 from bruvzg/start_clip
Add properties to configure space trimming on line break.
2025-03-18 14:42:44 -05:00
Thaddeus Crews
49fcd4ce46
Merge pull request #101546 from bruvzg/portal_color_picker
[Linux] Implement native color picker.
2025-03-17 10:52:29 -05:00
Thaddeus Crews
70d37274aa
Merge pull request #60178 from Calinou/directional-shadow-normal-bias-split
Use lower shadow normal bias for distant directional shadow splits
2025-03-17 10:52:13 -05:00
Pāvels Nadtočajevs
2bbf0f2317
Add properties to configure space trimming on line break. 2025-03-16 16:15:37 +02:00
clayjohn
16b9667c62 Error when draw list is not active in draw_list_switch_to_next_pass
This fixes a mistake made when refactoring the draw list
2025-03-14 18:04:47 -07:00
Lukas Tenbrink
f4de2cd22a Use resize_zeroed instead of resize then fill(0) in several places. 2025-03-14 12:09:39 +01:00
Julian
f7bb2c8b11 Copy audio data to dest when bypassing pitch effect 2025-03-13 18:08:11 -04:00
Thaddeus Crews
701505eb4f
Merge pull request #104044 from bruvzg/rd_pipeline_err_spam
Fix `Invalid Task ID` error spam in `PipelineHashMapRD`.
2025-03-13 08:57:45 -05: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
Thaddeus Crews
e2c6d860d8
Merge pull request #102302 from stuartcarnie/render_opt
Rendering compositor identifies `is_opengl` API; minor optimisation
2025-03-13 08:57:28 -05:00
Thaddeus Crews
22a7079afd
Merge pull request #104047 from YYF233333/dict_iter
Add const iteration support to `Dictionary`
2025-03-13 08:57:23 -05:00
Stuart Carnie
5e1fe8040a rendering: compositor has is_opengl API; minor optimisations 2025-03-13 15:41:44 +11:00
Thaddeus Crews
c6004c6267
Merge pull request #102100 from AThousandShips/nav_split_prepare
[Navigation] Rename classes in preparation for future restructure
2025-03-12 13:17:11 -05:00