Commit graph

909 commits

Author SHA1 Message Date
Rémi Verschelde
6f3c5e63f3
Merge pull request #82584 from lawnjelly/lightcull_23
[3.x] Shadow volume culling and tighter shadow caster culling
2024-01-29 23:27:56 +01:00
Rémi Verschelde
4e741ec2ba
Merge pull request #64493 from Mickeon/3.x-editor-group
[3.x] Add Node editor description group
2024-01-29 23:27:07 +01:00
lawnjelly
8ca631a466 Shadow volume culling and tighter shadow caster culling
Existing shadow caster culling using the BVH takes no account of the camera. This PR adds the highly encapsulated class VisualServerLightCuller which can cut down the casters in the shadow volume to only those which can cast shadows on the camera frustum.

This is used to:
* More accurately defer dirty updates to shadows when the shadow volume does not intersect the camera frustum.
* Tighter cull shadow casters to the view frustum.

Lights dirty state is now automatically managed:
* Continuous (tighter caster culling)
* Static (all casters are rendered)
2023-11-14 14:17:57 +00:00
lawnjelly
3e19cf834a CPUParticles2D - Add ability to follow physics interpolated target
Allows a non-interpolated particle system to closely follow an interpolated target without tracking ahead of the target, by performing fixed timestep interpolation on the particle system global transform, and using this for emission.
2023-09-18 16:05:03 +01:00
lawnjelly
5162efbfe9 2D Fixed Timestep Interpolation
Adds support to canvas items and Camera2D.
2023-08-01 16:07:48 +01:00
Rémi Verschelde
29eeb461f2
Merge pull request #68738 from lawnjelly/faster_canvas_item
[3.x] Canvas item hierarchical culling
2023-06-27 08:40:22 +02:00
Rémi Verschelde
83e91ab818
Merge pull request #76323 from aaronfranke/3.x-t2d-basis-det
[3.x] Expose `determinant` in Transform2D, rename internal method
2023-04-26 12:17:00 +02:00
lawnjelly
b777a9e5f9 Canvas item hierarchical culling
Adds optional hierarchical culling to the 2D rendering (within VisualServer).

Each canvas item maintains a bound in local space of the item itself and all child / grandchild items. This allows branches to be culled at once when they don't intersect a viewport.
2023-04-25 20:17:33 +01:00
Aaron Franke
141783d90f
[3.x] Expose determinant in Transform2D, rename internal method 2023-04-22 13:47:47 -05:00
lawnjelly
1730fab22a Consistent render ordering for CanvasLayers
Maintains scene tree ordering for CanvasLayers that share identical layer ID.
2023-03-12 05:00:13 +00:00
Rémi Verschelde
1426cd3b3a
One Copyright Update to rule them all
As many open source projects have started doing it, we're removing the
current year from the copyright notice, so that we don't need to bump
it every year.

It seems like only the first year of publication is technically
relevant for copyright notices, and even that seems to be something
that many companies stopped listing altogether (in a version controlled
codebase, the commits are a much better source of date of publication
than a hardcoded copyright statement).

We also now list Godot Engine contributors first as we're collectively
the current maintainers of the project, and we clarify that the
"exclusive" copyright of the co-founders covers the timespan before
opensourcing (their further contributions are included as part of Godot
Engine contributors).

Also fixed "cf." Frenchism - it's meant as "refer to / see".

Backported from #70885.
2023-01-10 15:26:54 +01:00
Rémi Verschelde
1ee7c5a62c
Merge pull request #62444 from lawnjelly/faster_queue_free3
[3.x] Faster queue free
2023-01-10 10:55:36 +01:00
necrashter
147de75e52
Set touch input as handled only after _gui_call_input 2022-12-26 11:58:32 +03:00
Rémi Verschelde
3b7bb812fd
Merge pull request #70310 from Sauermann/3x-fix-follow-viewport-transform
[3.x] Include the follow-viewport-transform into CanvasLayer transform calculations
2022-12-22 08:55:28 +01:00
Rémi Verschelde
76bcc90da8
Merge pull request #70228 from Calinou/add-transparent-viewport-project-setting-3.x
Add a project setting to make the root viewport transparent (3.x)
2022-12-22 08:55:21 +01:00
Markus Sauermann
608cbd8296 Include the follow-viewport-transform into CanvasLayer transform calculations
The follow-viewport-transform was missing from several calculations

3.x version of #59682
2022-12-19 19:18:54 +01:00
Haoyu Qiu
b2e5c8fe10 Fix possible Tween leak on exit
(cherry picked from commit e173710963)
2022-12-18 10:32:04 +08:00
FireForge
0d602ce881 Add Vector2/3 linking to more properties
- Camera2D.zoom
- CanvasLayer.scale
- ParallaxBackground.scroll_base_scale
- ParallaxLayer.motion_scale
- Polygon2D.texture_scale
- SpatialMaterial.uv1_scale
- SpatialMaterial.uv2_scale

(cherry picked from commit 92817aa72f)
2022-12-18 10:32:04 +08:00
Hugo Locurcio
65465f309c
Add a project setting to make the root viewport transparent
This allows creating a project with a transparent window without having
to write any script.
2022-12-18 00:38:05 +01:00
Rémi Verschelde
6963ba631e
Fix typos with codespell 2022-12-15 12:26:59 +01:00
Haoyu Qiu
a6a89356b7 Fix CanvasLayer visibility toggle can only run once per frame 2022-12-04 14:49:19 +08:00
Rémi Verschelde
af635f05bf
Merge pull request #68630 from m4gr3d/fix_input_event_screen_drag_routing_3x
[3.x] Fix routing of `InputEventScreenDrag` events to `Control` nodes
2022-12-01 18:13:52 +01:00
Markus Sauermann
0ae562c9dc Update root order on layer change
When the layer of a CanvasLayer changes, the order of roots needs to be recalculated.

(cherry picked from commit 8d60e8b5d4)
2022-12-01 10:23:04 +08:00
Lyuma
099e90e00d Make Node editable_instance methods available to GDScript
(cherry picked from commit 7eb6ae2798)
2022-12-01 10:15:06 +08:00
Fredia Huya-Kouadio
b28bcb4cfc Fix the logic used to route InputEventScreenDrag events to Control nodes. 2022-11-30 14:16:26 -08:00
Haoyu Qiu
3b869e8027
Fix crash of queue_free() when main loop is not SceneTree
(cherry picked from commit 3b08d0e852)
2022-11-30 15:44:49 +01:00
Nong Van Tinh
ffbaa7fff0 Enhance null checking for input event 2022-11-27 15:01:34 +07:00
lawnjelly
edc85d22fc Faster queue free
Calling queue_free() for large numbers of siblings could previously be very slow, with the time taken rising exponentially with number of children. This looked partly due to ordered_remove from the child list and notifications.

This PR identifies objects that are nodes, and sorts the deletion queue so that children are deleted in reverse child order. This minimizes the costs of reordering.
2022-11-25 09:53:50 +00:00
Rémi Verschelde
80b50e59d5
Merge pull request #67612 from timothyqiu/who-ami-i-3.x
[3.x] Fix get_path() error when calling get_node()
2022-10-31 12:25:12 +01:00
Haoyu Qiu
5d6dc206bc Fix get_path() error when calling get_node() 2022-10-19 13:05:41 +08:00
Micky
6102f3cfc2 [3.x] Rename set_indexed & get_child's params to be clearer
3.x backport of #67300 and #64463.
2022-10-12 20:55:41 +02:00
lawnjelly
17f42e8e66 Improve signal already connected error message
The signal already connected message is improved to provide the names of the objects involved.
2022-09-21 07:52:30 +01:00
kobewi
0511f48c49 Fix Viewport size change not updating textures
(cherry picked from commit 3a4a4aeade)
2022-09-05 15:35:45 +02:00
kobewi
737bfa57d3 Allow to change the Stop shortcut used at runtime
(cherry picked from commit 409613ba7b)
2022-09-05 15:35:45 +02:00
Rémi Verschelde
c551a79084
Merge pull request #65063 from Atlinx/fix/65033_fix-hdr-warning
Disable HDR warning for Viewport on GLES2 projects
2022-08-30 08:38:06 +02:00
Atlinx
e3b3462187 Remove HDR warning if on low end 2022-08-29 19:14:30 -04:00
Michael Alexsander
1e80b17a8d Fix some corner cases in the Menu/OptionButton item auto-highlight 2022-08-28 01:45:08 -03:00
Yuri Sizov
72d1156286 Remove Inspector tooltip hack that never actually worked 2022-08-26 17:12:46 +03:00
Micky
ec368b40d8 [3.x] Add Editor Description group
Backport from 4.0
2022-08-16 13:51:09 +02:00
Rémi Verschelde
91a6e08c12
Merge pull request #48157 from madmiraal/fix-46438-3.x
[3.x] Fix mouse_over not dropped when mouse leaves window
2022-08-05 22:37:17 +02:00
Rémi Verschelde
25c87e99cf
Merge pull request #61578 from YuriSizov/core-fix-events-for-moved-nodes-3.x 2022-08-05 19:33:25 +02:00
Rémi Verschelde
818f1eed31 Code quality: Fix header guards consistency
Adds `header_guards.sh` bash script, used in CI to validate future
changes. Can be run locally to fix invalid header guards.
2022-07-25 14:53:37 +02:00
Marcel Admiraal
fb4e1d2d02 Set initial SceneTree processes times to 0.0 2022-07-17 09:02:20 +01:00
Marcel Admiraal
0992621200 Fix mouse_over not dropped when mouse leaves window 2022-07-03 09:49:56 +01:00
reduz
995281ca90 Fix editor-only visibility for lights
* Update visibility again for editor-only lights if owner changes.

Fixes #26399, supersedes #52327

(cherry picked from commit d69e3791bf)
2022-07-03 03:21:51 +02:00
Rémi Verschelde
df70aa1772
Merge pull request #57566 from Calinou/viewport-shadow-atlas-clamp-sizes 2022-07-03 03:08:03 +02:00
Rémi Verschelde
3d19f21576
Merge pull request #49967 from Calinou/viewport-2d-hdr-print-warning 2022-07-03 02:41:26 +02:00
hilfazer
fe21fb175c print_stray_nodes() also prints node's script 2022-07-03 01:00:58 +02:00
Rémi Verschelde
0cb897421a Node: Rename child_exited_tree to child_exiting_tree
The name was confusing as this signal is emitted around the same time as
`tree_exiting` and `NOTIFICATION_EXIT_TREE`, i.e. while the child node is
still in tree.

Fixes #59210.

(cherry picked from commit 3e6de687b8)
2022-06-20 15:00:09 +02:00
lawnjelly
ba74643594 Force unsigned behaviour for bitfield enums
Some compilers (notably MSVC) were using signed values for bitfield enums. This was causing problems where 2 bits were used to store 4 or less enum values, where they were being treated as negative numbers.

This PR explicitly requests these enums to be treated as unsigned values.
2022-06-06 16:58:21 +01:00