When using modulate_fvf, final_modulate was still being applied on CPU in some circumstances, AS WELL as in the shader. This double application resulted in the wrong color.
This PR prevents CPU multiplication of final_modulate when modulate_fvf is in use.
It also applies an OR to the joined item flags with each item joined. This fixes a bug where a smaller FVF is used than required, resulting in incorrect colors.
In rare cases default batches could occur which were containing commands that were not owned by the first item referenced by the joined item. This had assumed to be the case, and would read the wrong command, or crash.
Instead for safety in this PR we now store a pointer to the parent item in default batches, and use this to determine the correct command list instead of assuming.
- Display the frame time in addition to FPS.
- Frame time is a more objective measurement in comparison to FPS,
but FPS is more familiar to people less acquainted with profiling.
- Rename "Game" to "Project" for the project FPS printing line.
(cherry picked from commit 157d8e4d36)
- `Texture::~Texture` expects `props` to be dynamically allocated.
- `GetPropertyTable` returned a pointer to an existing `PropertyTable`
but is expected to return a newly, dynamically allocated one.
- `PropertyTable::PropertyTable()` suggests that an empty `element`
property is valid.
fix#46876fix#45573
(cherry picked from commit 09bda3f140)
This makes it possible to see whether a scrollbar grabber is at the top
or at the bottom of a scrollbar. Also, if a scrollable area is very
large, this makes it easier to notice that the area can be scrolled
(since the grabber is proportionally very small).
The scrollbar grabbers were also made thicker and slightly more opaque
for better visibility, especially in peripheral vision.
(cherry picked from commit b60b6ddba4)
New contributor added to AUTHORS:
@gongpha, @jmb462
Thanks to all contributors and donors for making Godot possible!
(cherry picked from commit 3d84fa85b4)
We were using `Content-Length` from the server when `Content-Encoding`
was not set (i.e. response was not compressed).
Sadly, in CORS requests accessing headers is restricted, and while
`Content-Length` is enabled by default, `Content-Encoding` is not.
This results in the impossibility of knowing if the content was
compressed, unless the server explicitly enabled the encoding header
via `Access-Control-Expose-Headers`.
To keep maximum compatibility we must disable `body_size` completely.
(cherry picked from commit 737ed0f66e)
Fixes#46181
CameraServer.add_feed() takes a CameraFeed object type as parameter.
Passing in another type of data while binding the method it will make
tha parameter null.
Added a check for null which returns from function and does not make the
engine crash anymore.
(cherry picked from commit c158a63a8a)