Commit Graph

1919 Commits

Author SHA1 Message Date
Rémi Verschelde 01a085d05f
Merge pull request #38320 from lawnjelly/kessel_pr_light_join
GLES2 2D batching - item reordering, light joining and light modulate fix
2020-05-01 15:03:03 +02:00
Revan Ji 6a7d50403a Add set_frame, pause, and oneshot to AnimatedTexture
Add API documentation for said changes.

(cherry picked from commit f5029e18ca)
2020-05-01 11:00:10 +02:00
Hugo Locurcio be56ec9e65 Document the formats supported by `Image.load()`
This partially addresses #32166.

(cherry picked from commit a26649de42)
2020-05-01 10:56:58 +02:00
Hugo Locurcio 6fb6107e6a Warn when trying to open `res://` or `user://` with `OS.shell_open()`
`OS.shell_open()` will pass on the path directly to the OS' shell
handler (which can handle file paths or URLs). It can't handle
Godot-specific paths, so these need to be converted with
`ProjectSettings.globalize_path()` first.

(cherry picked from commit d46e411b44)
2020-05-01 10:56:58 +02:00
Bojidar Marinov 4b58d453d4 Expose the cell_size affecting VisibilityNotifier2D precision
Refs: #4803
(cherry picked from commit d49ff7aff7)
2020-05-01 10:56:58 +02:00
Hugo Locurcio 782d9536f3 Improve the compression project settings documentation
(cherry picked from commit b2b8db7897)
2020-05-01 10:56:58 +02:00
Tomasz Chabora 6bb87d7d23 Mention how to remove TreeItem from a Tree
(cherry picked from commit f6aec99d27)
2020-05-01 10:56:58 +02:00
Markus Sauermann e88cde0415 Clarify Transform scaled Method description.
(cherry picked from commit 19c8b0be45)
2020-05-01 10:56:58 +02:00
Avantir-Chaosfire fd6424aa04 doc: Improve Node2D to_local/to_global description
(cherry picked from commit 5c6f824e71)
2020-05-01 10:56:57 +02:00
lawnjelly 451c3fc0fb GLES2 2D batching - item reordering, light joining and light modulate fix
Although 2D draws in painters order with strict ordering, in certain circumstances items can be reordered to increase batching / decrease state changes, without affecting the end result. This can be determined by an overlap test.

In situation with item:
A-B-A
providing the third item does not overlap the second, they can be reordered:
A-A-B

Items already contain an AABB which can be used for this overlap test.

1)
To utilise this, I have implemented item reordering (only for single rects for now), with the lookahead adjustable in project settings. This can increase performance in situations where items may not be grouped in the scene tree by texture. It can also be switched off (by setting lookahead to 0).

2)
This same trick can be used to help join items that are lit. Lit items previously would prevent joining completely, thus missing out on performance gains other than multi-command items such as tilemaps.

In this PR, lights are assigned as bits in a bitfield (up to 64, the optimization is disabled above this), and on each try_item (for joining), the bitfield for lights and shadows is constructed and compared with the previous items. If these match the 2 items can potentially be joined. However, this can only be done without changing the rendered result if an overlap test is successful.

This overlap test can be adjusted to join items up to a specific number of item references, selectable in project settings, or turned off.

3)
The legacy uniform single rect drawing routine seems to have been identified as the source of flicker, particularly on nvidia. However, it can also be up to 2x as fast. Because of the speed the batching contains a fallback where it can use the legacy single rect method, but I have now added a project setting to make this switchable. In most cases with batching it should not be necessary (as single rects are drawn less frequently) and thus the flickering can be totally avoided.

4)
This PR also fixes a color modulate bug when drawing light passes, in certain situations (particularly custom _draw routines with multiple rects).

5)
This PR also fixes #38291, a bug in the legacy renderer where light passes could draw rects in wrong position.
2020-05-01 07:47:33 +01:00
Fredia Huya-Kouadio 9b9f70bd20 Update the documentation for `ExternalTexture` to match the restriction on Android platforms 2020-04-28 08:04:41 -07:00
Hugo Locurcio ae0bc06eba Improve `pitch_scale` descriptions in AudioStreamPlayer documentation
This closes #29439.

Co-authored-by: Cheeseness <contact@jbushproductions.com>
(cherry picked from commit 4751dee7f4)
2020-04-27 10:18:41 +02:00
Hugo Locurcio 24265c498b Improve the procedural geometry class documentations
This references Godot's winding order at the top of every
procedural geometry class, as well as referencing other classes
within a given geometry class.

A warning about ImmediateGeometry3D performance was also added.

(cherry picked from commit ed7347d73d)
2020-04-27 10:14:42 +02:00
Hugo Locurcio bbd381c987 Add an easing/transition type cheatsheet to the Tween documentation
Related to https://github.com/godotengine/godot-docs/pull/3403.

(cherry picked from commit 5972a9138e)
2020-04-27 10:12:11 +02:00
Hugo Locurcio f3cd7e3808 Document how some editor classes should be accessed as singletons only
This closes #37687.

(cherry picked from commit a225265b0a)
2020-04-27 10:11:53 +02:00
Rémi Verschelde 253fc093b8 DocData: Skip unexposed classes
Properly expose classes that we actually want accessible.

(cherry picked from commit 0ef8bcac4d)
2020-04-21 14:15:34 +02:00
Hugo Locurcio 469f398e70 Document how to workaround UI anchor issues when using BackBufferCopy
This closes #6880.

(cherry picked from commit f8a413bb1f)
2020-04-21 14:11:29 +02:00
Hugo Locurcio e8ead37725 Check for errors when saving in the ResourceSaver example documentation
This also replaces a non-breaking space that was accidentally added in
the EditorFeatureProfile documentation.

This closes #31393.

(cherry picked from commit 2f46f1e7b1)
2020-04-21 14:11:15 +02:00
Hugo Locurcio 3a2cdf7d5b Improve the VisibilityEnabler and VisibilityNotifier documentations
This closes #4803.

(cherry picked from commit 7f2d602106)
2020-04-21 14:10:50 +02:00
Rémi Verschelde faf858fe41 Revert "Made possible to specify where to dump the contents when loading a ".pck" file"
This reverts commit ffcfd9c8ea.

This was not so useful as is due to the way dependency paths are stored
in scenes and resources.
2020-04-20 13:48:02 +02:00
Dominik 'dreamsComeTrue' Jasiński ac0a55ce75 Update TextEdit docs - explaining 'override_selected_font_color' role
(cherry picked from commit 6a0e6c2852)
2020-04-20 11:55:47 +02:00
Marcel Admiraal 339c10889d Correct the addition of a key and the duplication of a variable name
in Dictionary class documentation.

(cherry picked from commit 4d41535fa3)
2020-04-20 11:55:31 +02:00
Hugo Locurcio 4e73fcc959 Document DynamicFont limitations and a possible workaround
This closes #30014.

(cherry picked from commit 46b8e108e2)
2020-04-20 11:55:04 +02:00
Hugo Locurcio 4f7296a869 Document image size limits
This closes #30238.

(cherry picked from commit 5497cec7a1)
2020-04-20 11:54:47 +02:00
Hugo Locurcio bb753aaf17 Clarify that angles must be specified as radians in the documentation
This closes #36356.

(cherry picked from commit cae5260dab)
2020-04-20 11:53:40 +02:00
Rémi Verschelde 50582446ad Sync classref with current source 2020-04-17 13:43:43 +02:00
Michael Alexsander ffcfd9c8ea Made possible to specify where to dump the contents when loading a ".pck" file
(cherry picked from commit 3c261e0dfa)
2020-04-17 13:00:52 +02:00
Rémi Verschelde 008e0748c1
Merge pull request #37349 from lawnjelly/kessel32_1
GLES2 2d Batch rendering (across items)
2020-04-17 12:55:33 +02:00
lawnjelly 72adefa5cf Add frame diagnostics for GLES2 Batch renderer
Added project setting to enable / disable print frame diagnostics every 10 seconds. This prints out a list of batches and info, which is useful to optimize games and identify performance problems.
2020-04-17 08:54:33 +01:00
Rémi Verschelde 07aa524a42 doc: Sync classref with current source 2020-04-16 13:02:36 +02:00
Michael Alexsander b4429c325a Fix incorrect TabContainer documentation for 'get_tab_control()'
(cherry picked from commit 8f925b1970)
2020-04-16 12:57:22 +02:00
Hugo Locurcio 26614a37b8 Mention `keep_pressed_outside` caveat in the BaseButton documentation
This closes #37790.

(cherry picked from commit e799dc954e)
2020-04-16 12:57:22 +02:00
Hugo Locurcio 6c4a0ec75a Improve the Dictionary class documentation
This closes https://github.com/godotengine/godot-docs/issues/3376.

(cherry picked from commit 88da90f2bf)
2020-04-16 12:57:22 +02:00
PouleyKetchoupp eab7342321 More details in Rigid Body add_force documentation
(cherry picked from commit 219c5712f0)
2020-04-16 12:57:22 +02:00
Tomasz Chabora edd5d9c78e Improve Camera2D documentation
(cherry picked from commit 630096fa74)
2020-04-16 12:57:22 +02:00
Hugo Locurcio ab4ea9379c Improve the AudioStreamSample class documentation
This closes #37915.

(cherry picked from commit 52786b54ef)
2020-04-16 12:57:22 +02:00
Markus Sauermann 7607fafda1 Clarify documentation and indicate that rect_clip_content affects only CanvasItem based nodes.
Resolves #37683

(cherry picked from commit 3f19b5e0b3)
2020-04-16 12:47:18 +02:00
Nannaquin 27989ae8f8 Add reference of Color8 function to Color class documentation
(cherry picked from commit 06aeff3044)
2020-04-16 12:47:18 +02:00
lucaslcode cd10966652 clarify autotile_coord in docs
I had no idea what 'coordinate' meant in the context of autotiles, so just adding some clarification for future people who have the same problem.

(cherry picked from commit cbe73766e3)
2020-04-16 12:47:18 +02:00
Zak Grumbles 294008015e Clarify Dictionary duplicate params godotengine#37162
* Added additional clarification for the function of the 'deep'
parameter in the Dictionary's `duplicate` method.

(cherry picked from commit 469b7c948f)
2020-04-16 12:02:18 +02:00
Zak Grumbles 5d9108c9c6 Fix OptionButton docs godotengine#36803
* item_selected and item_focused docs incorrectly had 'id' as the parameter. Changed to
'index'.
* Fix parameter name in ADD_SIGNAL callin code.

(cherry picked from commit a8de034f78)
2020-04-16 11:45:19 +02:00
Danil Alexeev 2ef1ee9da7 Improve the `File.store_{8,16,32,64}()` documentation
Added information about the intervals of values that the functions
`store_{8,16,32,64}()` can correctly write to the file.

(cherry picked from commit 97e20b2f30)
2020-04-16 11:44:58 +02:00
Yuri Roubinsky 5914fdc067 Implements estimate/compute_cost for AStar2D
(cherry picked from commit bad77bcb52)
2020-04-16 11:35:52 +02:00
Hugo Locurcio e88cfedf0e Document the EditorFeatureProfile class
(cherry picked from commit 7ab279403d)
2020-04-06 20:58:21 +02:00
Zak Grumbles 011602447c Clarify docs for Thread.start() godotengine#36032
* Updated docs for Thread.start() to specify that the method argument
must accept one parameter.

(cherry picked from commit d09644dff3)
2020-04-06 18:17:43 +02:00
Nathan 679708aa8f Make note of 16 probe limit
Godot by default has a limit of 16 reflection probes in a scene. this can be increased by increasing atlas subdiv. For 3.2 and possibly 4.0. This also fixes a spelling mistake

Update doc/classes/ReflectionProbe.xml

Fix from clayjohn, Directly link to settings

Co-Authored-By: Clay John <claynjohn@gmail.com>
2020-04-05 04:41:00 -04:00
lawnjelly 45b0b8bff8 GLES2 2d Batch rendering (across items)
2d rendering is currently bottlenecked by drawing primitives one at a time, limiting OpenGL efficiency. This PR batches primitives and renders in fewer drawcalls, resulting in significant performance improvements. This also speeds up text rendering.

This PR batches across canvas items as well as within items.

The code dynamically chooses between a vertex format with and without color, depending on the input data for a frame, in order to optimize throughput and maximize batch size. It also adds an option to use glScissor to reduce fillrate in light passes.
2020-04-04 17:13:58 +01:00
Rémi Verschelde fdd85311c3 Sync classref with current source 2020-03-25 11:42:15 +01:00
Andrea Catania e30a0a30b6 Added new method to replace an already added node to the animation state machine
(cherry picked from commit 422926cfc6)
2020-03-25 11:38:54 +01:00
Umang Kalra d7c6a42cbf Doc edit at InputEventMouseMotion
Doc edit

(cherry picked from commit 052424c76d)
2020-03-25 11:38:53 +01:00