Commit Graph

150 Commits

Author SHA1 Message Date
4d9d99bb82 Implement occlusion culling
Added an occlusion culling system with support for static occluder meshes.
It can be enabled via `Project Settings > Rendering > Occlusion Culling > Use Occlusion Culling`.

Occluders are defined via the new `Occluder3D` resource and instanced using the new
`OccluderInstance3D` node. The occluders can also be automatically baked from a
scene using the built-in editor plugin.
2021-04-23 21:45:23 +02:00
2e87857d75 Merge pull request #47629 from Calinou/editor-allow-center-selection-without-selection
Allow Center Selection to work without any selection in 2D/3D editors
2021-04-16 12:47:47 +02:00
c8a40c8005 Fix 3D selection box size for Node3D 2021-04-11 15:15:52 +08:00
b8f66d58b6 Show a message when trying to zoom farther than the limit 2021-04-09 11:21:09 -04:00
8ca8868ef9 Merge pull request #47733 from Calinou/editor-tweak-frame-time-display
Tweak frame time display in the editor
2021-04-09 15:37:02 +02:00
88518d28ba Tweak frame time display in the editor
- Pad decimal values to avoid layout shifts when the frame time
  changes.
- Cap values to 0.01 milliseconds to avoid division by zero
  in the FPS counter.
2021-04-09 14:58:24 +02:00
879a290ed9 Fixes Node3D rotation in select mode on macOS 2021-04-09 12:31:26 +08:00
77dc4c3cb6 Merge pull request #47636 from qarmin/input
Fix crashes in *_input functions
2021-04-05 11:54:08 +02:00
504bc5cc67 Fix crashes in *_input functions 2021-04-05 08:52:21 +02:00
fc055e1993 Allow Center Selection to work without any selection in 2D/3D editors
When there is no selection, the camera will center around the
world origin.

This helps people get back to the world center if they haven't added
any nodes yet.
2021-04-04 19:58:46 +02:00
d0f3817876 Use double when setting the default step size
Casting it as a float was causing issues with the progress bar
2021-03-31 22:28:08 -07:00
6b25c94bd6 Merge pull request #47519 from AndreaCatania/AndreaCatania-patch-4
Fixes editor crash on closing
2021-03-31 12:47:25 +02:00
79f55fcded Fixes editor crash on closing
Fixes editor crash when the gizmo is destroyed and the `SceneTree` is already freed.
2021-03-31 11:53:32 +02:00
10d7fccb54 Rename ButtonList enum and members to MouseButton 2021-03-23 07:13:23 -04:00
3472c3f6ea Tweak the 3D editor grid default to not go below subdivisions of 1 meter
Small subdivisions aren't useful that often and make it difficult for
people to get a sense of scale in 3D.
2021-03-21 00:41:12 +01:00
31077d875e Fix hardcoded Maya style navigation pan key modifier
ALT key modifier was hardcoded is node_3d_editor_plugin.cpp and didn't take editor settings into account.

Fix #46973
2021-03-13 20:45:14 +01:00
14c50fdb94 Fix gizmo names
Commit 5ef62e546f renamed EditorNode3DGizmoPlugin "get_name" to "get_gizmo_name", but it wasn't done everywhere. Because EditorNode3DGizmoPlugin inherits from Resource, it was then using Resource::get_name() which resulted in null names.

Fixes godotengine/godot#46349
2021-02-28 20:52:53 -05:00
7b685a1558 Merge pull request #46452 from hilfazer/click_mesh_instance_crash_40
Prevent crash when clicking Mesh in MeshInstance when is scene root
2021-02-26 21:00:12 +01:00
1810654369 Prevent crash when clicking Mesh in MeshInstance when is scene root 2021-02-26 19:28:09 +01:00
85a776ddcd Allow CollisionObject3D to show collision shape meshes
Add an editor gizmo to CollisionObject3D.
CollisionShape3D no longer shows collision shapes directly.
2021-02-24 18:50:13 +01:00
0bc7049099 Apply minor visual enhancements to the Sun/Env Preview 2021-02-23 11:21:26 -03:00
d6a9cff8b7 Add preview Sun and Environment
* Adds both a preview sun and preview environment to the 3D editor.
* They are valid as long as a DirectionalLight3D and WorldEnvironment are not in the scene.
* If any is added to the scene, the respective preview is disabled.
* Changed WorldEnvironment to better handle multiple node versions.
* Added a function in SceneTree to get the first node in a group.
* Fixed button minimum size to also consider font height if no text is there, this broke with the TextSever PR.
2021-02-22 16:56:29 -03:00
442e550114 Prevent selecting hidden nodes in 3D and Canvas Item editors 2021-02-21 11:58:31 +01:00
64140eaf42 Reorganize Project Settings
-Advanced Settings toggle also hides advanced properties when disabled
-Simplified Advanced Bar (errors were just plain redundant)
-Reorganized rendering quality settings.
-Reorganized miscelaneous settings for clean up.
2021-02-18 11:23:34 -03:00
288540a690 Fix editor always redrawing
-Only update rendering settings when project settings change
-Fixes the update spinner (and editor rendering) updating all the time.
-Added a "project_settings_changed" signal to EditorNode and EditorPlugin
2021-02-13 14:57:28 -03:00
f995d6cd17 Fix swapped front/rear view 2021-02-02 19:44:38 +01:00
b24c24f64b Merge pull request #45594 from JFonS/improve_3d_grid
3D editor grid improvements
2021-02-01 23:18:24 +01:00
73e62dffb9 3D editor grid improvements
This commit adds a view-dependant fade to the 3D viewport grid. It fades out
at steep view angles to hide the solid regions that appear far from the camera.
I also included a fade to hide the grid borders.

I added some improvements to the dynamic grid when the camera is in orthogonal mode.
It properly handles zoom now, and the grid center is now set to the intersection point
between the grid plane and the camera forward ray, keeping the grid
always visible.
2021-02-01 22:19:54 +01:00
d2e1216504 Merge pull request #37547 from aaronfranke/tau
Use Math_TAU and deg2rad/etc in more places and optimize code
2021-02-01 20:55:25 +01:00
85ed695836 Add viewport resolution to the 3D editor's View Information pane 2021-01-31 00:21:36 +01:00
86c7faa169 Fix zero scaling and material mappings being mapped to wrong fields
- fixes scale values of 0.0013 (det == 0.00004) not rendering, they should render even at small values, but not at zero like the editor grid plugin supplies zero exactly.
- fixes node_3d_editor_plugin visibility bug when scale is zero
- fix culling with small scaling values - which are still valid to be rendered like 0.00004

note: grid is still not fixed, it has det == 0 issues but this fixes one of them.
2021-01-26 19:48:18 +00:00
a9beb7aa8c Shadow map rendering optimization
-All shadow rendering is done with raster now (no compute)
-All shadow rendering is done by rendering directly to the shadow atlas
-Improved how buffer clearing is done to optimize the above.
-Ability to set shadows as 16 bits.
2021-01-24 20:17:28 -03:00
099dee35f4 Added GPU based cluster builder
Clustering is now GPU based, uses an implementation based on the Activision algorithm.
2021-01-19 23:31:06 +01:00
fa1d853eeb Hide the rotation gizmo when editor cinematic preview is enabled
Cinematic preview enables the Camera3D preview automatically.

When previewing a Camera3D, the rotation gizmo isn't displayed as
it can't be used.
2021-01-18 03:19:05 +01:00
1d5042c9e2 Use Math_TAU and deg2rad/rad2deg in more places and optimize code 2021-01-09 03:47:14 -05:00
3d359d1311 Merge pull request #44283 from jeffuntildeath/fix-stf-offset
Fixed incorrect offset of snap to floor
2021-01-08 07:53:45 +01:00
8e7cbf315e Fix Leak with Gradient in Node3DEditorViewport 2021-01-04 10:06:46 +01:00
b5334d14f7 Update copyright statements to 2021
Happy new year to the wonderful Godot community!

2020 has been a tough year for most of us personally, but a good year for
Godot development nonetheless with a huge amount of work done towards Godot
4.0 and great improvements backported to the long-lived 3.2 branch.

We've had close to 400 contributors to engine code this year, authoring near
7,000 commit! (And that's only for the `master` branch and for the engine code,
there's a lot more when counting docs, demos and other first-party repos.)

Here's to a great year 2021 for all Godot users 🎆
2021-01-01 20:19:21 +01:00
59b30e1d23 Merge pull request #44709 from Calinou/editor-frame-time-color
Color 3D editor frame time labels depending on the performance level
2020-12-29 17:41:40 +01:00
8221037be0 Add an editor setting for the 3D selection box color
A restart is required to apply the setting change.
2020-12-29 07:35:59 +01:00
44357ddc28 Editor: Fix invalid use of Node::get_viewport() after rename of EditorNode::get_viewport()
Fixes #44761, was a regression from #44524.

The PR passed CI because EditorNode::get_viewport() used to shadow Node::get_viewport()
(which was a bug in itself, fixed by #44524), so once it was renamed the existing code
relying on it fell back to the now available Node::get_viewport().
This might bite some thirdparty modules too.
2020-12-28 19:51:39 +01:00
8f4c4bb610 Merge pull request #44434 from madmiraal/rename-camera3d-near-and-far
Rename Camera3D near and far getters and setters
2020-12-28 14:57:31 +01:00
5b937d493f Rename empty() to is_empty() 2020-12-28 10:39:56 +00:00
783ec77dbf Merge pull request #44500 from Calinou/editor-gizmo-hover-brightness-variable
Move the brightness factor for highlighted 3D gizmos to a variable
2020-12-27 23:16:47 +01:00
507e9b12a4 Move the brightness factor for highlighted 3D gizmos to a variable
See
8522ac7711 (r45230326).
2020-12-27 22:20:36 +01:00
b188913384 Color 3D editor frame time labels depending on the performance level
This provides easier visual grepping for each value
(CPU time, GPU time, FPS).
2020-12-26 22:59:46 +01:00
4b8b803931 Rename Control margin to offset 2020-12-23 06:25:56 +00:00
ecf8ae5bcf Rename Camera3D near and far getters and setters
Renames:
- get_znear() -> get_near()
- set_znear() -> set_near()
- get_zfar() -> get_far()
- set_zfar() -> set_far()
2020-12-20 13:46:57 +00:00
e9d12f9e4e Merge pull request #44521 from madmiraal/rename-rect2-clip
Rename Rect2 and Rect2i clip() to intersection()
2020-12-19 21:32:14 +01:00
7ae487d2bb Increase the default Camera Zfar to 4000
This makes it possible to view far away objects without
having to tweak any settings. This results in a more usable
editor when working on large-scale levels.

This change should have no impact on performance, but note that
Z-fighting will be visible at a distance. This can be made less
visible by increasing the Znear value (however, doing so will cause
nearby surfaces to disappear).

This change was also applied to the editor, but it will only
apply to newly created scenes.

This also changes the default camera settings in the glTF importer
to match the Camera node's defaults.
2020-12-19 14:52:44 +01:00