Merge pull request #82737 from akien-mga/4.1-cherrypicks
Cherry-picks for the 4.1 branch (future 4.1.2) - 3rd batch
This commit is contained in:
commit
681efc5bc5
|
@ -64,6 +64,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|||
|
||||
#### Porting
|
||||
|
||||
- Web: Disable raycast module by default (no occlusion culling) ([GH-81716](https://github.com/godotengine/godot/pull/81716)).
|
||||
- X11: Do not fail DisplayServer init if non-essential extensions are missing ([GH-80240](https://github.com/godotengine/godot/pull/80240)).
|
||||
|
||||
#### Rendering
|
||||
|
@ -80,7 +81,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|||
- FreeType updated to version 2.13.2.
|
||||
- ICU4C updated to version 73.2.
|
||||
- libpng updated to version 1.6.40.
|
||||
- libwebp updated to version 1.3.1.
|
||||
- libwebp updated to version 1.3.2.
|
||||
- mbedtls updated to version version 2.28.4.
|
||||
- miniupnpc updated to version 2.2.5.
|
||||
- openxr updated to version 1.0.28.
|
||||
|
@ -110,7 +111,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|||
|
||||
#### Buildsystem
|
||||
|
||||
- Fix GCC `-Wmaybe-uninitialized` warnings ([GH-80615](https://github.com/godotengine/godot/pull/80615)).
|
||||
- Fix Python 3.12 SyntaxError with regex escape sequences ([GH-82290](https://github.com/godotengine/godot/pull/82290)).
|
||||
- macOS/iOS: Workaround build issue with new Xcode 15 linker ([GH-81968](https://github.com/godotengine/godot/pull/81968), [GH-82458](https://github.com/godotengine/godot/pull/82458)).
|
||||
- Web: Workaround Emscripten 3.1.42+ LTO regression ([GH-81340](https://github.com/godotengine/godot/pull/81340)).
|
||||
|
||||
#### C#/.NET
|
||||
|
@ -118,6 +120,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|||
- Fix deserialization of delegates that are 0-parameter overloads ([GH-78877](https://github.com/godotengine/godot/pull/78877)).
|
||||
- Add missing `useModelFront` parameter to GodotSharp Basis and Transform ([GH-79082](https://github.com/godotengine/godot/pull/79082)).
|
||||
- Fix double unregistration on dispose of Array ([GH-81230](https://github.com/godotengine/godot/pull/81230)).
|
||||
- Fix Visual Studio 2022 for Mac compatibility ([GH-81802](https://github.com/godotengine/godot/pull/81802)).
|
||||
|
||||
#### Core
|
||||
|
||||
|
@ -127,6 +130,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|||
- Fix global transform validity for `Node2D` and `Control` ([GH-80105](https://github.com/godotengine/godot/pull/80105)).
|
||||
- Fix recursion level check for `VariantWriter::write()` with objects ([GH-81123](https://github.com/godotengine/godot/pull/81123)).
|
||||
- Fix string conversion for -0.0 float values ([GH-81328](https://github.com/godotengine/godot/pull/81328)).
|
||||
- Crypto: Fix `generate_random_bytes` for large chunks ([GH-81884](https://github.com/godotengine/godot/pull/81884)).
|
||||
|
||||
#### Editor
|
||||
|
||||
|
|
|
@ -270,7 +270,7 @@ Error RemoteFilesystemClient::_synchronize_with_server(const String &p_host, int
|
|||
String file = temp_file_cache[i].path;
|
||||
|
||||
if (temp_file_cache[i].server_modified_time == 0 || server_disconnected) {
|
||||
// File was removed, or server disconnected before tranferring it. Since it's no longer valid, remove anyway.
|
||||
// File was removed, or server disconnected before transferring it. Since it's no longer valid, remove anyway.
|
||||
_remove_file(file);
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -105,8 +105,8 @@ class Delaunay3D {
|
|||
};
|
||||
|
||||
_FORCE_INLINE_ static void circum_sphere_compute(const Vector3 *p_points, Simplex *p_simplex) {
|
||||
// the only part in the algorithm where there may be precision errors is this one, so ensure that
|
||||
// we do it as maximum precision as possible
|
||||
// The only part in the algorithm where there may be precision errors is this one,
|
||||
// so ensure that we do it with the maximum precision possible.
|
||||
|
||||
R128 v0_x = p_points[p_simplex->points[0]].x;
|
||||
R128 v0_y = p_points[p_simplex->points[0]].y;
|
||||
|
@ -121,7 +121,7 @@ class Delaunay3D {
|
|||
R128 v3_y = p_points[p_simplex->points[3]].y;
|
||||
R128 v3_z = p_points[p_simplex->points[3]].z;
|
||||
|
||||
//Create the rows of our "unrolled" 3x3 matrix
|
||||
// Create the rows of our "unrolled" 3x3 matrix.
|
||||
R128 row1_x = v1_x - v0_x;
|
||||
R128 row1_y = v1_y - v0_y;
|
||||
R128 row1_z = v1_z - v0_z;
|
||||
|
@ -138,10 +138,10 @@ class Delaunay3D {
|
|||
R128 sq_lenght2 = row2_x * row2_x + row2_y * row2_y + row2_z * row2_z;
|
||||
R128 sq_lenght3 = row3_x * row3_x + row3_y * row3_y + row3_z * row3_z;
|
||||
|
||||
//Compute the determinant of said matrix
|
||||
// Compute the determinant of said matrix.
|
||||
R128 determinant = row1_x * (row2_y * row3_z - row3_y * row2_z) - row2_x * (row1_y * row3_z - row3_y * row1_z) + row3_x * (row1_y * row2_z - row2_y * row1_z);
|
||||
|
||||
// Compute the volume of the tetrahedron, and precompute a scalar quantity for re-use in the formula
|
||||
// Compute the volume of the tetrahedron, and precompute a scalar quantity for reuse in the formula.
|
||||
R128 volume = determinant / R128(6.f);
|
||||
R128 i12volume = R128(1.f) / (volume * R128(12.f));
|
||||
|
||||
|
@ -149,8 +149,7 @@ class Delaunay3D {
|
|||
R128 center_y = v0_y + i12volume * (-(row2_x * row3_z - row3_x * row2_z) * sq_lenght1 + (row1_x * row3_z - row3_x * row1_z) * sq_lenght2 - (row1_x * row2_z - row2_x * row1_z) * sq_lenght3);
|
||||
R128 center_z = v0_z + i12volume * ((row2_x * row3_y - row3_x * row2_y) * sq_lenght1 - (row1_x * row3_y - row3_x * row1_y) * sq_lenght2 + (row1_x * row2_y - row2_x * row1_y) * sq_lenght3);
|
||||
|
||||
//Once we know the center, the radius is clearly the distance to any vertex
|
||||
|
||||
// Once we know the center, the radius is clearly the distance to any vertex.
|
||||
R128 rel1_x = center_x - v0_x;
|
||||
R128 rel1_y = center_y - v0_y;
|
||||
R128 rel1_z = center_z - v0_z;
|
||||
|
|
|
@ -1803,16 +1803,16 @@
|
|||
[b]Note:[/b] This flag is implemented only on macOS.
|
||||
</constant>
|
||||
<constant name="VSYNC_DISABLED" value="0" enum="VSyncMode">
|
||||
No vertical synchronization, which means the engine will display frames as fast as possible (tearing may be visible). Framerate is unlimited (nonwithstanding [member Engine.max_fps]).
|
||||
No vertical synchronization, which means the engine will display frames as fast as possible (tearing may be visible). Framerate is unlimited (notwithstanding [member Engine.max_fps]).
|
||||
</constant>
|
||||
<constant name="VSYNC_ENABLED" value="1" enum="VSyncMode">
|
||||
Default vertical synchronization mode, the image is displayed only on vertical blanking intervals (no tearing is visible). Framerate is limited by the monitor refresh rate (nonwithstanding [member Engine.max_fps]).
|
||||
Default vertical synchronization mode, the image is displayed only on vertical blanking intervals (no tearing is visible). Framerate is limited by the monitor refresh rate (notwithstanding [member Engine.max_fps]).
|
||||
</constant>
|
||||
<constant name="VSYNC_ADAPTIVE" value="2" enum="VSyncMode">
|
||||
Behaves like [constant VSYNC_DISABLED] when the framerate drops below the screen's refresh rate to reduce stuttering (tearing may be visible). Otherwise, vertical synchronization is enabled to avoid tearing. Framerate is limited by the monitor refresh rate (nonwithstanding [member Engine.max_fps]). Behaves like [constant VSYNC_ENABLED] when using the Compatibility rendering method.
|
||||
Behaves like [constant VSYNC_DISABLED] when the framerate drops below the screen's refresh rate to reduce stuttering (tearing may be visible). Otherwise, vertical synchronization is enabled to avoid tearing. Framerate is limited by the monitor refresh rate (notwithstanding [member Engine.max_fps]). Behaves like [constant VSYNC_ENABLED] when using the Compatibility rendering method.
|
||||
</constant>
|
||||
<constant name="VSYNC_MAILBOX" value="3" enum="VSyncMode">
|
||||
Displays the most recent image in the queue on vertical blanking intervals, while rendering to the other images (no tearing is visible). Framerate is unlimited (nonwithstanding [member Engine.max_fps]).
|
||||
Displays the most recent image in the queue on vertical blanking intervals, while rendering to the other images (no tearing is visible). Framerate is unlimited (notwithstanding [member Engine.max_fps]).
|
||||
Although not guaranteed, the images can be rendered as fast as possible, which may reduce input lag (also called "Fast" V-Sync mode). [constant VSYNC_MAILBOX] works best when at least twice as many frames as the display refresh rate are rendered. Behaves like [constant VSYNC_ENABLED] when using the Compatibility rendering method.
|
||||
</constant>
|
||||
<constant name="DISPLAY_HANDLE" value="0" enum="HandleType">
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
<param index="1" name="path" type="String" />
|
||||
<description>
|
||||
Customize a scene. If changes are made to it, return the same or a new scene. Otherwise, return [code]null[/code]. If a new scene is returned, it is up to you to dispose of the old one.
|
||||
Implementing this method is required if [method _begin_customize_resources] returns [code]true[/code].
|
||||
Implementing this method is required if [method _begin_customize_scenes] returns [code]true[/code].
|
||||
</description>
|
||||
</method>
|
||||
<method name="_end_customize_resources" qualifiers="virtual">
|
||||
|
|
|
@ -240,7 +240,7 @@
|
|||
<return type="void" />
|
||||
<param index="0" name="msg" type="String" />
|
||||
<description>
|
||||
Pops up an error message in the edior which is shown as coming from the underlying VCS. Use this to show VCS specific error messages.
|
||||
Pops up an error message in the editor which is shown as coming from the underlying VCS. Use this to show VCS specific error messages.
|
||||
</description>
|
||||
</method>
|
||||
</methods>
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
The occlusion culling system works by rendering the occluders on the CPU in parallel using [url=https://www.embree.org/]Embree[/url], drawing the result to a low-resolution buffer then using this to cull 3D nodes individually. In the 3D editor, you can preview the occlusion culling buffer by choosing [b]Perspective > Debug Advanced... > Occlusion Culling Buffer[/b] in the top-left corner of the 3D viewport. The occlusion culling buffer quality can be adjusted in the Project Settings.
|
||||
[b]Baking:[/b] Select an [OccluderInstance3D] node, then use the [b]Bake Occluders[/b] button at the top of the 3D editor. Only opaque materials will be taken into account; transparent materials (alpha-blended or alpha-tested) will be ignored by the occluder generation.
|
||||
[b]Note:[/b] Occlusion culling is only effective if [member ProjectSettings.rendering/occlusion_culling/use_occlusion_culling] is [code]true[/code]. Enabling occlusion culling has a cost on the CPU. Only enable occlusion culling if you actually plan to use it. Large open scenes with few or no objects blocking the view will generally not benefit much from occlusion culling. Large open scenes generally benefit more from mesh LOD and visibility ranges ([member GeometryInstance3D.visibility_range_begin] and [member GeometryInstance3D.visibility_range_end]) compared to occlusion culling.
|
||||
[b]Note:[/b] Due to memory constraints, occlusion culling is not supported by default in Web export templates. It can be enabled by compiling custom Web export templates with [code]module_raycast_enabled=yes[/code].
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
|
|
|
@ -800,8 +800,8 @@
|
|||
<member name="display/window/stretch/mode" type="String" setter="" getter="" default=""disabled"">
|
||||
Defines how the base size is stretched to fit the resolution of the window or screen.
|
||||
[b]"disabled"[/b]: No stretching happens. One unit in the scene corresponds to one pixel on the screen. In this mode, [member display/window/stretch/aspect] has no effect. Recommended for non-game applications.
|
||||
[b]"canvas_items"[/b]: The base size specified in width and height in the project settings is stretched to cover the whole screen (taking [member display/window/stretch/aspect] into account). This means that everything is rendered directly at the target resolution. 3D is unaffected, while in 2D, there is no longer a 1:1 correspondence between sprite pixels and screen pixels, which may result in scaling artifacts. Recommended for most games that don't use a pixel art aesthetic, although it is possible to use this stretch mode for pixel art games too (especially in 3D).
|
||||
[b]"viewport"[/b]: The size of the root [Viewport] is set precisely to the base size specified in the Project Settings' Display section. The scene is rendered to this viewport first. Finally, this viewport is scaled to fit the screen (taking [member display/window/stretch/aspect] into account). Recommended for games that use a pixel art aesthetic.
|
||||
[b]"canvas_items"[/b]: The base size specified in width and height in the project settings is stretched to cover the whole screen (taking [member display/window/stretch/aspect] into account). This means that everything is rendered directly at the target resolution. 3D is unaffected, while in 2D, there is no longer a 1:1 correspondence between sprite pixels and screen pixels, which may result in scaling artifacts. Recommended for most games that don't use a pixel art esthetic, although it is possible to use this stretch mode for pixel art games too (especially in 3D).
|
||||
[b]"viewport"[/b]: The size of the root [Viewport] is set precisely to the base size specified in the Project Settings' Display section. The scene is rendered to this viewport first. Finally, this viewport is scaled to fit the screen (taking [member display/window/stretch/aspect] into account). Recommended for games that use a pixel art esthetic.
|
||||
</member>
|
||||
<member name="display/window/stretch/scale" type="float" setter="" getter="" default="1.0">
|
||||
</member>
|
||||
|
@ -2487,6 +2487,7 @@
|
|||
<member name="rendering/occlusion_culling/use_occlusion_culling" type="bool" setter="" getter="" default="false">
|
||||
If [code]true[/code], [OccluderInstance3D] nodes will be usable for occlusion culling in 3D in the root viewport. In custom viewports, [member Viewport.use_occlusion_culling] must be set to [code]true[/code] instead.
|
||||
[b]Note:[/b] Enabling occlusion culling has a cost on the CPU. Only enable occlusion culling if you actually plan to use it. Large open scenes with few or no objects blocking the view will generally not benefit much from occlusion culling. Large open scenes generally benefit more from mesh LOD and visibility ranges ([member GeometryInstance3D.visibility_range_begin] and [member GeometryInstance3D.visibility_range_end]) compared to occlusion culling.
|
||||
[b]Note:[/b] Due to memory constraints, occlusion culling is not supported by default in Web export templates. It can be enabled by compiling custom Web export templates with [code]module_raycast_enabled=yes[/code].
|
||||
</member>
|
||||
<member name="rendering/reflections/reflection_atlas/reflection_count" type="int" setter="" getter="" default="64">
|
||||
Number of cubemaps to store in the reflection atlas. The number of [ReflectionProbe]s in a scene will be limited by this amount. A higher number requires more VRAM.
|
||||
|
@ -2608,7 +2609,7 @@
|
|||
</member>
|
||||
<member name="rendering/textures/default_filters/texture_mipmap_bias" type="float" setter="" getter="" default="0.0">
|
||||
Affects the final texture sharpness by reading from a lower or higher mipmap (also called "texture LOD bias"). Negative values make mipmapped textures sharper but grainier when viewed at a distance, while positive values make mipmapped textures blurrier (even when up close).
|
||||
Enabling temporal antialiasing ([member rendering/anti_aliasing/quality/use_taa]) will automatically apply a [code]-0.5[/code] offset to this value, while enabling FXAA ([member rendering/anti_aliasing/quality/screen_space_aa]) will automatically apply a [code]-0.25[/code] offset to this value. If both TAA and FXAA are enbled at the same time, an offset of [code]-0.75[/code] is applied to this value.
|
||||
Enabling temporal antialiasing ([member rendering/anti_aliasing/quality/use_taa]) will automatically apply a [code]-0.5[/code] offset to this value, while enabling FXAA ([member rendering/anti_aliasing/quality/screen_space_aa]) will automatically apply a [code]-0.25[/code] offset to this value. If both TAA and FXAA are enabled at the same time, an offset of [code]-0.75[/code] is applied to this value.
|
||||
[b]Note:[/b] If [member rendering/scaling_3d/scale] is lower than [code]1.0[/code] (exclusive), [member rendering/textures/default_filters/texture_mipmap_bias] is used to adjust the automatic mipmap bias which is calculated internally based on the scale factor. The formula for this is [code]log2(scaling_3d_scale) + mipmap_bias[/code].
|
||||
[b]Note:[/b] This property is only read when the project starts. To change the mipmap LOD bias at run-time, set [member Viewport.texture_mipmap_bias] instead.
|
||||
</member>
|
||||
|
|
|
@ -110,7 +110,7 @@
|
|||
[method get_margin] should be used to fetch this value as consumer instead of reading these properties directly. This is because it correctly respects negative values and the fallback mentioned above.
|
||||
</member>
|
||||
<member name="content_margin_left" type="float" setter="set_content_margin" getter="get_content_margin" default="-1.0">
|
||||
The left margin for the contents of this style box. Increasing this value reduces the space available to the contents from the left.
|
||||
The left margin for the contents of this style box. Increasing this value reduces the space available to the contents from the left.
|
||||
Refer to [member content_margin_bottom] for extra considerations.
|
||||
</member>
|
||||
<member name="content_margin_right" type="float" setter="set_content_margin" getter="get_content_margin" default="-1.0">
|
||||
|
|
|
@ -222,7 +222,7 @@
|
|||
<param index="3" name="alternative_tile" type="int" default="-1" />
|
||||
<description>
|
||||
Returns a [Vector2i] array with the positions of all cells containing a tile in the given layer. Tiles may be filtered according to their source ([param source_id]), their atlas coordinates ([param atlas_coords]) or alternative id ([param alternative_tile]).
|
||||
If a parameter has it's value set to the default one, this parameter is not used to filter a cell. Thus, if all parameters have their respective default value, this method returns the same result as [method get_used_cells].
|
||||
If a parameter has its value set to the default one, this parameter is not used to filter a cell. Thus, if all parameters have their respective default value, this method returns the same result as [method get_used_cells].
|
||||
A cell is considered empty if its source identifier equals -1, its atlas coordinates identifiers is [code]Vector2(-1, -1)[/code] and its alternative identifier is -1.
|
||||
</description>
|
||||
</method>
|
||||
|
@ -293,7 +293,7 @@
|
|||
<param index="3" name="atlas_coords" type="Vector2i" default="Vector2i(-1, -1)" />
|
||||
<param index="4" name="alternative_tile" type="int" default="0" />
|
||||
<description>
|
||||
Sets the tile indentifiers for the cell on layer [param layer] at coordinates [param coords]. Each tile of the [TileSet] is identified using three parts:
|
||||
Sets the tile identifiers for the cell on layer [param layer] at coordinates [param coords]. Each tile of the [TileSet] is identified using three parts:
|
||||
- The source identifier [param source_id] identifies a [TileSetSource] identifier. See [method TileSet.set_source_id],
|
||||
- The atlas coordinates identifier [param atlas_coords] identifies a tile coordinates in the atlas (if the source is a [TileSetAtlasSource]). For [TileSetScenesCollectionSource] it should always be [code]Vector2i(0, 0)[/code]),
|
||||
- The alternative tile identifier [param alternative_tile] identifies a tile alternative in the atlas (if the source is a [TileSetAtlasSource]), and the scene for a [TileSetScenesCollectionSource].
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
<param index="2" name="atlas_coords" type="Vector2i" default="Vector2i(-1, -1)" />
|
||||
<param index="3" name="alternative_tile" type="int" default="-1" />
|
||||
<description>
|
||||
Sets the tile indentifiers for the cell at coordinates [param coords]. See [method TileMap.set_cell].
|
||||
Sets the tile identifiers for the cell at coordinates [param coords]. See [method TileMap.set_cell].
|
||||
</description>
|
||||
</method>
|
||||
<method name="set_size">
|
||||
|
|
|
@ -332,7 +332,7 @@
|
|||
<param index="1" name="coords_from" type="Vector2i" />
|
||||
<param index="2" name="alternative_from" type="int" />
|
||||
<description>
|
||||
According to the configured proxies, maps the provided indentifiers to a new set of identifiers. The source ID, atlas coordinates ID and alternative tile ID are returned as a 3 elements Array.
|
||||
According to the configured proxies, maps the provided identifiers to a new set of identifiers. The source ID, atlas coordinates ID and alternative tile ID are returned as a 3 elements Array.
|
||||
This function first look for matching alternative-level proxies, then coordinates-level proxies, then source-level proxies.
|
||||
If no proxy corresponding to provided identifiers are found, returns the same values the ones used as arguments.
|
||||
</description>
|
||||
|
|
|
@ -337,7 +337,7 @@
|
|||
</member>
|
||||
<member name="texture_mipmap_bias" type="float" setter="set_texture_mipmap_bias" getter="get_texture_mipmap_bias" default="0.0">
|
||||
Affects the final texture sharpness by reading from a lower or higher mipmap (also called "texture LOD bias"). Negative values make mipmapped textures sharper but grainier when viewed at a distance, while positive values make mipmapped textures blurrier (even when up close).
|
||||
Enabling temporal antialiasing ([member use_taa]) will automatically apply a [code]-0.5[/code] offset to this value, while enabling FXAA ([member screen_space_aa]) will automatically apply a [code]-0.25[/code] offset to this value. If both TAA and FXAA are enbled at the same time, an offset of [code]-0.75[/code] is applied to this value.
|
||||
Enabling temporal antialiasing ([member use_taa]) will automatically apply a [code]-0.5[/code] offset to this value, while enabling FXAA ([member screen_space_aa]) will automatically apply a [code]-0.25[/code] offset to this value. If both TAA and FXAA are enabled at the same time, an offset of [code]-0.75[/code] is applied to this value.
|
||||
[b]Note:[/b] If [member scaling_3d_scale] is lower than [code]1.0[/code] (exclusive), [member texture_mipmap_bias] is used to adjust the automatic mipmap bias which is calculated internally based on the scale factor. The formula for this is [code]log2(scaling_3d_scale) + mipmap_bias[/code].
|
||||
To control this property on the root viewport, set the [member ProjectSettings.rendering/textures/default_filters/texture_mipmap_bias] project setting.
|
||||
</member>
|
||||
|
@ -351,6 +351,7 @@
|
|||
<member name="use_occlusion_culling" type="bool" setter="set_use_occlusion_culling" getter="is_using_occlusion_culling" default="false">
|
||||
If [code]true[/code], [OccluderInstance3D] nodes will be usable for occlusion culling in 3D for this viewport. For the root viewport, [member ProjectSettings.rendering/occlusion_culling/use_occlusion_culling] must be set to [code]true[/code] instead.
|
||||
[b]Note:[/b] Enabling occlusion culling has a cost on the CPU. Only enable occlusion culling if you actually plan to use it, and think whether your scene can actually benefit from occlusion culling. Large, open scenes with few or no objects blocking the view will generally not benefit much from occlusion culling. Large open scenes generally benefit more from mesh LOD and visibility ranges ([member GeometryInstance3D.visibility_range_begin] and [member GeometryInstance3D.visibility_range_end]) compared to occlusion culling.
|
||||
[b]Note:[/b] Due to memory constraints, occlusion culling is not supported by default in Web export templates. It can be enabled by compiling custom Web export templates with [code]module_raycast_enabled=yes[/code].
|
||||
</member>
|
||||
<member name="use_taa" type="bool" setter="set_use_taa" getter="is_using_taa" default="false">
|
||||
Enables Temporal Anti-Aliasing for this viewport. TAA works by jittering the camera and accumulating the images of the last rendered frames, motion vector rendering is used to account for camera and object motion.
|
||||
|
|
|
@ -968,7 +968,7 @@ void EditorFileSystem::_scan_fs_changes(EditorFileSystemDirectory *p_dir, const
|
|||
p_dir->modified_time = current_mtime;
|
||||
//ooooops, dir changed, see what's going on
|
||||
|
||||
//first mark everything as veryfied
|
||||
//first mark everything as verified
|
||||
|
||||
for (int i = 0; i < p_dir->files.size(); i++) {
|
||||
p_dir->files[i]->verified = false;
|
||||
|
|
|
@ -1288,7 +1288,7 @@ void CanvasItemEditor::_pan_callback(Vector2 p_scroll_vec, Ref<InputEvent> p_eve
|
|||
void CanvasItemEditor::_zoom_callback(float p_zoom_factor, Vector2 p_origin, Ref<InputEvent> p_event) {
|
||||
Ref<InputEventMouseButton> mb = p_event;
|
||||
if (mb.is_valid()) {
|
||||
// Special behvior for scroll events, as the zoom_by_increment method can smartly end up on powers of two.
|
||||
// Special behavior for scroll events, as the zoom_by_increment method can smartly end up on powers of two.
|
||||
int increment = p_zoom_factor > 1.0 ? 1 : -1;
|
||||
zoom_widget->set_zoom_by_increments(increment, mb->is_alt_pressed());
|
||||
} else {
|
||||
|
@ -5072,7 +5072,7 @@ CanvasItemEditor::CanvasItemEditor() {
|
|||
|
||||
viewport->add_child(controls_vb);
|
||||
|
||||
// Add some margin to the left for better aesthetics.
|
||||
// Add some margin to the left for better esthetics.
|
||||
// This prevents the first button's hover/pressed effect from "touching" the panel's border,
|
||||
// which looks ugly.
|
||||
Control *margin_left = memnew(Control);
|
||||
|
|
|
@ -6996,7 +6996,7 @@ void Node3DEditor::_init_grid() {
|
|||
if (primary_grid_steps != 10) { // Log10 of 10 is 1.
|
||||
// Change of base rule, divide by ln(10).
|
||||
real_t div = Math::log((real_t)primary_grid_steps) / (real_t)2.302585092994045901094;
|
||||
// Trucation (towards zero) is intentional.
|
||||
// Truncation (towards zero) is intentional.
|
||||
division_level_max = (int)(division_level_max / div);
|
||||
division_level_min = (int)(division_level_min / div);
|
||||
}
|
||||
|
@ -8103,7 +8103,7 @@ Node3DEditor::Node3DEditor() {
|
|||
|
||||
String sct;
|
||||
|
||||
// Add some margin to the left for better aesthetics.
|
||||
// Add some margin to the left for better esthetics.
|
||||
// This prevents the first button's hover/pressed effect from "touching" the panel's border,
|
||||
// which looks ugly.
|
||||
Control *margin_left = memnew(Control);
|
||||
|
|
14
methods.py
14
methods.py
|
@ -1016,13 +1016,13 @@ def get_compiler_version(env):
|
|||
else: # TODO: Implement for MSVC
|
||||
return None
|
||||
match = re.search(
|
||||
"(?:(?<=version )|(?<=\) )|(?<=^))"
|
||||
"(?P<major>\d+)"
|
||||
"(?:\.(?P<minor>\d*))?"
|
||||
"(?:\.(?P<patch>\d*))?"
|
||||
"(?:-(?P<metadata1>[0-9a-zA-Z-]*))?"
|
||||
"(?:\+(?P<metadata2>[0-9a-zA-Z-]*))?"
|
||||
"(?: (?P<date>[0-9]{8}|[0-9]{6})(?![0-9a-zA-Z]))?",
|
||||
r"(?:(?<=version )|(?<=\) )|(?<=^))"
|
||||
r"(?P<major>\d+)"
|
||||
r"(?:\.(?P<minor>\d*))?"
|
||||
r"(?:\.(?P<patch>\d*))?"
|
||||
r"(?:-(?P<metadata1>[0-9a-zA-Z-]*))?"
|
||||
r"(?:\+(?P<metadata2>[0-9a-zA-Z-]*))?"
|
||||
r"(?: (?P<date>[0-9]{8}|[0-9]{6})(?![0-9a-zA-Z]))?",
|
||||
version,
|
||||
)
|
||||
if match is not None:
|
||||
|
|
|
@ -254,8 +254,8 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||
OTHER_LDFLAGS = "$linker_flags";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
OTHER_LDFLAGS = "-ld_classic $linker_flags";
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "$targeted_device_family";
|
||||
};
|
||||
|
@ -293,8 +293,8 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||
OTHER_LDFLAGS = "$linker_flags";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
OTHER_LDFLAGS = "-ld_classic $linker_flags";
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "$targeted_device_family";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
|
@ -314,7 +314,7 @@
|
|||
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
|
||||
DEVELOPMENT_TEAM = $team_id;
|
||||
INFOPLIST_FILE = "$binary/$binary-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
@ -350,7 +350,7 @@
|
|||
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
|
||||
DEVELOPMENT_TEAM = $team_id;
|
||||
INFOPLIST_FILE = "$binary/$binary-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
|
@ -142,7 +142,7 @@ ENetConnection::EventType ENetConnection::_parse_event(const ENetEvent &p_event,
|
|||
return EVENT_ERROR;
|
||||
} break;
|
||||
case ENET_EVENT_TYPE_RECEIVE: {
|
||||
// Packet reveived.
|
||||
// Packet received.
|
||||
if (p_event.peer->data != nullptr) {
|
||||
Ref<ENetPacketPeer> pp = Ref<ENetPacketPeer>((ENetPacketPeer *)p_event.peer->data);
|
||||
r_event.peer = Ref<ENetPacketPeer>((ENetPacketPeer *)p_event.peer->data);
|
||||
|
|
|
@ -1566,7 +1566,7 @@ struct SignatureHelp {
|
|||
/**
|
||||
* The active signature. If omitted or the value lies outside the
|
||||
* range of `signatures` the value defaults to zero or is ignored if
|
||||
* `signatures.length === 0`. Whenever possible implementors should
|
||||
* `signatures.length === 0`. Whenever possible implementers should
|
||||
* make an active decision about the active signature and shouldn't
|
||||
* rely on a default value.
|
||||
* In future version of the protocol this property might become
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
func test():
|
||||
var unconvertable := 1
|
||||
var typed: Array[Object] = [unconvertable]
|
||||
var unconvertible := 1
|
||||
var typed: Array[Object] = [unconvertible]
|
||||
print('not ok')
|
||||
|
|
|
@ -419,9 +419,19 @@ Ref<X509Certificate> CryptoMbedTLS::generate_self_signed_certificate(Ref<CryptoK
|
|||
}
|
||||
|
||||
PackedByteArray CryptoMbedTLS::generate_random_bytes(int p_bytes) {
|
||||
ERR_FAIL_COND_V(p_bytes < 0, PackedByteArray());
|
||||
PackedByteArray out;
|
||||
out.resize(p_bytes);
|
||||
mbedtls_ctr_drbg_random(&ctr_drbg, out.ptrw(), p_bytes);
|
||||
int left = p_bytes;
|
||||
int pos = 0;
|
||||
// Ensure we generate random in chunks of no more than MBEDTLS_CTR_DRBG_MAX_REQUEST bytes or mbedtls_ctr_drbg_random will fail.
|
||||
while (left > 0) {
|
||||
int to_read = MIN(left, MBEDTLS_CTR_DRBG_MAX_REQUEST);
|
||||
int ret = mbedtls_ctr_drbg_random(&ctr_drbg, out.ptrw() + pos, to_read);
|
||||
ERR_FAIL_COND_V_MSG(ret != 0, PackedByteArray(), vformat("Failed to generate %d random bytes(s). Error: %d.", p_bytes, ret));
|
||||
left -= to_read;
|
||||
pos += to_read;
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
<PropertyGroup>
|
||||
<!-- Determines if we should import Microsoft.NET.Sdk, if it wasn't already imported. -->
|
||||
<GodotSdkImportsMicrosoftNetSdk Condition=" '$(UsingMicrosoftNETSdk)' != 'true' ">true</GodotSdkImportsMicrosoftNetSdk>
|
||||
|
||||
<GodotProjectTypeGuid>{8F3E2DF0-C35C-4265-82FC-BEA011F4A7ED}</GodotProjectTypeGuid>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
|
|
|
@ -1,11 +1,6 @@
|
|||
<Project>
|
||||
<Import Sdk="Microsoft.NET.Sdk" Project="Sdk.targets" Condition=" '$(GodotSdkImportsMicrosoftNetSdk)' == 'true' " />
|
||||
|
||||
<PropertyGroup>
|
||||
<EnableGodotProjectTypeGuid Condition=" '$(EnableGodotProjectTypeGuid)' == '' ">true</EnableGodotProjectTypeGuid>
|
||||
<ProjectTypeGuids Condition=" '$(EnableGodotProjectTypeGuid)' == 'true' ">$(GodotProjectTypeGuid);$(DefaultProjectTypeGuid)</ProjectTypeGuids>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<!--
|
||||
Define constant to determine whether the real_t type in Godot is double precision or not.
|
||||
|
|
|
@ -3765,7 +3765,7 @@ void BindingsGenerator::_populate_builtin_type_interfaces() {
|
|||
builtin_types.insert(itype.cname, itype);
|
||||
|
||||
// Array_@generic
|
||||
// Re-use Array's itype
|
||||
// Reuse Array's itype
|
||||
itype.name = "Array_@generic";
|
||||
itype.cname = itype.name;
|
||||
itype.cs_out = "%5return new %2(%0(%1));";
|
||||
|
@ -3792,7 +3792,7 @@ void BindingsGenerator::_populate_builtin_type_interfaces() {
|
|||
builtin_types.insert(itype.cname, itype);
|
||||
|
||||
// Dictionary_@generic
|
||||
// Re-use Dictionary's itype
|
||||
// Reuse Dictionary's itype
|
||||
itype.name = "Dictionary_@generic";
|
||||
itype.cname = itype.name;
|
||||
itype.cs_out = "%5return new %2(%0(%1));";
|
||||
|
|
|
@ -794,7 +794,7 @@ bool OpenXRAPI::create_swapchains() {
|
|||
|
||||
Also Godot only creates a swapchain for the main output.
|
||||
OpenXR will require us to create swapchains as the render target for additional viewports if we want to use the layer system
|
||||
to optimize text rendering and background rendering as OpenXR may choose to re-use the results for reprojection while we're
|
||||
to optimize text rendering and background rendering as OpenXR may choose to reuse the results for reprojection while we're
|
||||
already rendering the next frame.
|
||||
|
||||
Finally an area we need to expand upon is that Foveated rendering is only enabled for the swap chain we create,
|
||||
|
@ -1667,7 +1667,7 @@ bool OpenXRAPI::process() {
|
|||
}
|
||||
|
||||
bool OpenXRAPI::acquire_image(OpenXRSwapChainInfo &p_swapchain) {
|
||||
ERR_FAIL_COND_V(p_swapchain.image_acquired, true); // this was not released when it should be, error out and re-use...
|
||||
ERR_FAIL_COND_V(p_swapchain.image_acquired, true); // This was not released when it should be, error out and reuse...
|
||||
|
||||
XrResult result;
|
||||
XrSwapchainImageAcquireInfo swapchain_image_acquire_info = {
|
||||
|
|
|
@ -289,7 +289,7 @@ private:
|
|||
bool on_state_loss_pending();
|
||||
bool on_state_exiting();
|
||||
|
||||
// convencience
|
||||
// convenience
|
||||
void copy_string_to_char_buffer(const String p_string, char *p_buffer, int p_buffer_len);
|
||||
|
||||
public:
|
||||
|
|
|
@ -4770,7 +4770,7 @@ void TextServerAdvanced::_shaped_text_overrun_trim_to_width(const RID &p_shaped_
|
|||
|
||||
if ((trim_pos >= 0 && sd->width > p_width) || enforce_ellipsis) {
|
||||
if (add_ellipsis && (ellipsis_pos > 0 || enforce_ellipsis)) {
|
||||
// Insert an additional space when cutting word bound for aesthetics.
|
||||
// Insert an additional space when cutting word bound for esthetics.
|
||||
if (cut_per_word && (ellipsis_pos > 0)) {
|
||||
Glyph gl;
|
||||
gl.count = 1;
|
||||
|
|
|
@ -3563,7 +3563,7 @@ void TextServerFallback::_shaped_text_overrun_trim_to_width(const RID &p_shaped_
|
|||
|
||||
if ((trim_pos >= 0 && sd->width > p_width) || enforce_ellipsis) {
|
||||
if (add_ellipsis && (ellipsis_pos > 0 || enforce_ellipsis)) {
|
||||
// Insert an additional space when cutting word bound for aesthetics.
|
||||
// Insert an additional space when cutting word bound for esthetics.
|
||||
if (cut_per_word && (ellipsis_pos > 0)) {
|
||||
Glyph gl;
|
||||
gl.count = 1;
|
||||
|
|
|
@ -867,7 +867,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
|
|||
*/
|
||||
public interface EGLConfigChooser {
|
||||
/**
|
||||
* Choose a configuration from the list. Implementors typically
|
||||
* Choose a configuration from the list. Implementers typically
|
||||
* implement this method by calling
|
||||
* {@link EGL10#eglChooseConfig} and iterating through the results. Please consult the
|
||||
* EGL specification available from The Khronos Group to learn how to call eglChooseConfig.
|
||||
|
|
|
@ -306,7 +306,7 @@ public class GodotInputHandler implements InputManager.InputDeviceListener {
|
|||
return;
|
||||
}
|
||||
|
||||
// Assign first available number. Re-use numbers where possible.
|
||||
// Assign first available number. Reuse numbers where possible.
|
||||
final int id = assignJoystickIdNumber(deviceId);
|
||||
|
||||
final Joystick joystick = new Joystick();
|
||||
|
|
|
@ -103,13 +103,13 @@ def configure(env: "Environment"):
|
|||
|
||||
if env["ios_simulator"]:
|
||||
detect_darwin_sdk_path("iossimulator", env)
|
||||
env.Append(ASFLAGS=["-mios-simulator-version-min=11.0"])
|
||||
env.Append(CCFLAGS=["-mios-simulator-version-min=11.0"])
|
||||
env.Append(ASFLAGS=["-mios-simulator-version-min=12.0"])
|
||||
env.Append(CCFLAGS=["-mios-simulator-version-min=12.0"])
|
||||
env.extra_suffix = ".simulator" + env.extra_suffix
|
||||
else:
|
||||
detect_darwin_sdk_path("ios", env)
|
||||
env.Append(ASFLAGS=["-miphoneos-version-min=11.0"])
|
||||
env.Append(CCFLAGS=["-miphoneos-version-min=11.0"])
|
||||
env.Append(ASFLAGS=["-miphoneos-version-min=12.0"])
|
||||
env.Append(CCFLAGS=["-miphoneos-version-min=12.0"])
|
||||
|
||||
if env["arch"] == "x86_64":
|
||||
if not env["ios_simulator"]:
|
||||
|
@ -154,7 +154,7 @@ def configure(env: "Environment"):
|
|||
env.Append(CPPDEFINES=["VULKAN_ENABLED"])
|
||||
|
||||
if env["opengl3"]:
|
||||
env.Append(CPPDEFINES=["GLES3_ENABLED"])
|
||||
env.Append(CPPDEFINES=["GLES3_ENABLED", "GLES_SILENCE_DEPRECATION"])
|
||||
env.Prepend(
|
||||
CPPPATH=[
|
||||
"$IOS_SDK_PATH/System/Library/Frameworks/OpenGLES.framework/Headers",
|
||||
|
|
|
@ -355,19 +355,15 @@ void DisplayServerIOS::tts_stop() {
|
|||
}
|
||||
|
||||
Rect2i DisplayServerIOS::get_display_safe_area() const {
|
||||
if (@available(iOS 11, *)) {
|
||||
UIEdgeInsets insets = UIEdgeInsetsZero;
|
||||
UIView *view = AppDelegate.viewController.godotView;
|
||||
if ([view respondsToSelector:@selector(safeAreaInsets)]) {
|
||||
insets = [view safeAreaInsets];
|
||||
}
|
||||
float scale = screen_get_scale();
|
||||
Size2i insets_position = Size2i(insets.left, insets.top) * scale;
|
||||
Size2i insets_size = Size2i(insets.left + insets.right, insets.top + insets.bottom) * scale;
|
||||
return Rect2i(screen_get_position() + insets_position, screen_get_size() - insets_size);
|
||||
} else {
|
||||
return Rect2i(screen_get_position(), screen_get_size());
|
||||
UIEdgeInsets insets = UIEdgeInsetsZero;
|
||||
UIView *view = AppDelegate.viewController.godotView;
|
||||
if ([view respondsToSelector:@selector(safeAreaInsets)]) {
|
||||
insets = [view safeAreaInsets];
|
||||
}
|
||||
float scale = screen_get_scale();
|
||||
Size2i insets_position = Size2i(insets.left, insets.top) * scale;
|
||||
Size2i insets_size = Size2i(insets.left + insets.right, insets.top + insets.bottom) * scale;
|
||||
return Rect2i(screen_get_position() + insets_position, screen_get_size() - insets_size);
|
||||
}
|
||||
|
||||
int DisplayServerIOS::get_screen_count() const {
|
||||
|
|
|
@ -82,10 +82,10 @@ static const float earth_gravity = 9.80665;
|
|||
layer = [GodotMetalLayer layer];
|
||||
#endif
|
||||
} else if ([driverName isEqualToString:@"opengl3"]) {
|
||||
if (@available(iOS 13, *)) {
|
||||
NSLog(@"OpenGL ES is deprecated on iOS 13");
|
||||
}
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wdeprecated-declarations" // OpenGL is deprecated in iOS 12.0
|
||||
layer = [GodotOpenGLLayer layer];
|
||||
#pragma clang diagnostic pop
|
||||
} else {
|
||||
return nil;
|
||||
}
|
||||
|
|
|
@ -161,9 +161,7 @@
|
|||
[self observeKeyboard];
|
||||
[self displayLoadingOverlay];
|
||||
|
||||
if (@available(iOS 11.0, *)) {
|
||||
[self setNeedsUpdateOfScreenEdgesDeferringSystemGestures];
|
||||
}
|
||||
[self setNeedsUpdateOfScreenEdgesDeferringSystemGestures];
|
||||
}
|
||||
|
||||
- (void)observeKeyboard {
|
||||
|
|
|
@ -455,7 +455,7 @@ def configure(env: "Environment"):
|
|||
linker_version_str = subprocess.check_output(
|
||||
[env.subst(env["LINK"]), "-Wl,--version"] + env.subst(env["LINKFLAGS"])
|
||||
).decode("utf-8")
|
||||
gnu_ld_version = re.search("^GNU ld [^$]*(\d+\.\d+)$", linker_version_str, re.MULTILINE)
|
||||
gnu_ld_version = re.search(r"^GNU ld [^$]*(\d+\.\d+)$", linker_version_str, re.MULTILINE)
|
||||
if not gnu_ld_version:
|
||||
print(
|
||||
"Warning: Creating export template binaries enabled for PCK embedding is currently only supported with GNU ld, not gold, LLD or mold."
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
Array of the additional command line arguments passed to the code signing tool.
|
||||
</member>
|
||||
<member name="codesign/entitlements/address_book" type="bool" setter="" getter="">
|
||||
Enable to allow access to contacts in the user's address book, if it's enabled you should also provide usage message in the [code]privacy/address_book_usage_description[/code] option. See [url=https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_personal-information_addressbook]com.apple.security.personal-information.addressbook[/url].
|
||||
Enable to allow access to contacts in the user's address book, if it's enabled you should also provide usage message in the [code]privacy/address_book_usage_description[/code] option. See [url=https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_personal-information_addressbook]com.apple.security.personal-information.addressbook[/url].
|
||||
</member>
|
||||
<member name="codesign/entitlements/allow_dyld_environment_variables" type="bool" setter="" getter="">
|
||||
Allows app to use dynamic linker environment variables to inject code. If you are using add-ons with dynamic or self-modifying native code, enable them according to the add-on documentation. See [url=https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-dyld-environment-variables]com.apple.security.cs.allow-dyld-environment-variables[/url].
|
||||
|
|
|
@ -60,6 +60,8 @@ def get_flags():
|
|||
("target", "template_debug"),
|
||||
("builtin_pcre2_with_jit", False),
|
||||
("vulkan", False),
|
||||
# Embree is heavy and requires too much memory (GH-70621).
|
||||
("module_raycast_enabled", False),
|
||||
# Use -Os to prioritize optimizing for reduced file size. This is
|
||||
# particularly valuable for the web platform because it directly
|
||||
# decreases download time.
|
||||
|
|
|
@ -88,7 +88,7 @@ const GodotAudio = {
|
|||
GodotAudio.input = GodotAudio.ctx.createMediaStreamSource(stream);
|
||||
callback(GodotAudio.input);
|
||||
} catch (e) {
|
||||
GodotRuntime.error('Failed creaating input.', e);
|
||||
GodotRuntime.error('Failed creating input.', e);
|
||||
}
|
||||
}
|
||||
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
|
||||
|
|
|
@ -289,11 +289,11 @@ const GodotDisplayScreen = {
|
|||
const isFullscreen = GodotDisplayScreen.isFullscreen();
|
||||
const wantsFullWindow = GodotConfig.canvas_resize_policy === 2;
|
||||
const noResize = GodotConfig.canvas_resize_policy === 0;
|
||||
const wwidth = GodotDisplayScreen.desired_size[0];
|
||||
const wheight = GodotDisplayScreen.desired_size[1];
|
||||
const dWidth = GodotDisplayScreen.desired_size[0];
|
||||
const dHeight = GodotDisplayScreen.desired_size[1];
|
||||
const canvas = GodotConfig.canvas;
|
||||
let width = wwidth;
|
||||
let height = wheight;
|
||||
let width = dWidth;
|
||||
let height = dHeight;
|
||||
if (noResize) {
|
||||
// Don't resize canvas, just update GL if needed.
|
||||
if (canvas.width !== width || canvas.height !== height) {
|
||||
|
|
|
@ -551,7 +551,7 @@ int32_t LightmapGI::_compute_bsp_tree(const Vector<Vector3> &p_points, const Loc
|
|||
// Luckily, because we are using tetrahedrons, we can resort to
|
||||
// less precise but still working ways to generate the separating plane
|
||||
// this will most likely look bad when interpolating, but at least it will not crash.
|
||||
// and the arctifact will most likely also be very small, so too difficult to notice.
|
||||
// and the artifact will most likely also be very small, so too difficult to notice.
|
||||
|
||||
//find the longest axis
|
||||
|
||||
|
|
|
@ -149,7 +149,7 @@ double AnimationNodeAnimation::_process(double p_time, bool p_seek, bool p_is_ex
|
|||
}
|
||||
|
||||
// Emit start & finish signal. Internally, the detections are the same for backward.
|
||||
// We should use call_deferred since the track keys are still being prosessed.
|
||||
// We should use call_deferred since the track keys are still being processed.
|
||||
if (state->tree) {
|
||||
// AnimationTree uses seek to 0 "internally" to process the first key of the animation, which is used as the start detection.
|
||||
if (p_seek && !p_is_external_seeking && cur_time == 0) {
|
||||
|
|
|
@ -969,7 +969,7 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o
|
|||
int gl_size = TS->shaped_text_get_glyph_count(rid);
|
||||
|
||||
Vector2 gloff = off;
|
||||
// Draw oulines and shadow.
|
||||
// Draw outlines and shadow.
|
||||
int processed_glyphs_ol = r_processed_glyphs;
|
||||
for (int i = 0; i < gl_size; i++) {
|
||||
Item *it = _get_item_at_pos(it_from, it_to, glyphs[i].start);
|
||||
|
|
|
@ -1075,7 +1075,7 @@ void Viewport::enable_canvas_transform_override(bool p_enable) {
|
|||
}
|
||||
}
|
||||
|
||||
bool Viewport::is_canvas_transform_override_enbled() const {
|
||||
bool Viewport::is_canvas_transform_override_enabled() const {
|
||||
ERR_READ_THREAD_GUARD_V(false);
|
||||
return override_canvas_transform;
|
||||
}
|
||||
|
|
|
@ -501,7 +501,7 @@ public:
|
|||
Ref<World2D> find_world_2d() const;
|
||||
|
||||
void enable_canvas_transform_override(bool p_enable);
|
||||
bool is_canvas_transform_override_enbled() const;
|
||||
bool is_canvas_transform_override_enabled() const;
|
||||
|
||||
void set_canvas_transform_override(const Transform2D &p_transform);
|
||||
Transform2D get_canvas_transform_override() const;
|
||||
|
|
|
@ -4484,7 +4484,7 @@ struct AnimationCompressionDataState {
|
|||
|
||||
void commit_temp_packets() {
|
||||
if (temp_packets.size() == 0) {
|
||||
return; //nohing to do
|
||||
return; //nothing to do
|
||||
}
|
||||
//#define DEBUG_PACKET_PUSH
|
||||
#ifdef DEBUG_PACKET_PUSH
|
||||
|
|
|
@ -1430,7 +1430,7 @@ void SSEffects::screen_space_reflection(Ref<RenderSceneBuffersRD> p_render_buffe
|
|||
push_constant.camera_z_far = p_projections[v].get_z_far();
|
||||
push_constant.camera_z_near = p_projections[v].get_z_near();
|
||||
push_constant.orthogonal = p_projections[v].is_orthogonal();
|
||||
push_constant.filter = false; //enabling causes arctifacts
|
||||
push_constant.filter = false; // Enabling causes artifacts.
|
||||
push_constant.screen_size[0] = p_ssr_buffers.size.x;
|
||||
push_constant.screen_size[1] = p_ssr_buffers.size.y;
|
||||
|
||||
|
|
|
@ -2204,7 +2204,7 @@ void GI::SDFGI::render_region(Ref<RenderSceneBuffersRD> p_render_buffers, int p_
|
|||
RD::get_singleton()->compute_list_dispatch_threads(compute_list, cascade_size, cascade_size, cascade_size);
|
||||
RD::get_singleton()->compute_list_add_barrier(compute_list);
|
||||
|
||||
//run one pass of fullsize jumpflood to fix up half size arctifacts
|
||||
//run one pass of fullsize jumpflood to fix up half size artifacts
|
||||
|
||||
push_constant.half_size = false;
|
||||
push_constant.step_size = 1;
|
||||
|
|
|
@ -1450,7 +1450,7 @@ void RenderForwardClustered::_pre_opaque_render(RenderDataRD *p_render_data, boo
|
|||
// Note: when rendering stereoscopic (multiview) we are using our combined frustum projection to create
|
||||
// our cluster data. We use reprojection in the shader to adjust for our left/right eye.
|
||||
// This only works as we don't filter our cluster by depth buffer.
|
||||
// If we ever make this optimisation we should make it optional and only use it in mono.
|
||||
// If we ever make this optimization we should make it optional and only use it in mono.
|
||||
// What we win by filtering out a few lights, we loose by having to do the work double for stereo.
|
||||
current_cluster_builder->begin(p_render_data->scene_data->cam_transform, p_render_data->scene_data->cam_projection, !p_render_data->reflection_probe.is_valid());
|
||||
}
|
||||
|
|
|
@ -368,7 +368,7 @@ void RendererSceneRenderRD::_render_buffers_post_process_and_tonemap(const Rende
|
|||
buffers.base_texture = rb->get_internal_texture(i);
|
||||
buffers.depth_texture = rb->get_depth_texture(i);
|
||||
|
||||
// In stereo p_render_data->z_near and p_render_data->z_far can be offset for our combined frustrum
|
||||
// In stereo p_render_data->z_near and p_render_data->z_far can be offset for our combined frustum.
|
||||
float z_near = p_render_data->scene_data->view_projection[i].get_z_near();
|
||||
float z_far = p_render_data->scene_data->view_projection[i].get_z_far();
|
||||
bokeh_dof->bokeh_dof_compute(buffers, p_render_data->camera_attributes, z_near, z_far, p_render_data->scene_data->cam_orthogonal);
|
||||
|
@ -391,7 +391,7 @@ void RendererSceneRenderRD::_render_buffers_post_process_and_tonemap(const Rende
|
|||
buffers.depth_texture = rb->get_depth_texture(i);
|
||||
buffers.base_fb = FramebufferCacheRD::get_singleton()->get_cache(buffers.base_texture); // TODO move this into bokeh_dof_raster, we can do this internally
|
||||
|
||||
// In stereo p_render_data->z_near and p_render_data->z_far can be offset for our combined frustrum
|
||||
// In stereo p_render_data->z_near and p_render_data->z_far can be offset for our combined frustum.
|
||||
float z_near = p_render_data->scene_data->view_projection[i].get_z_near();
|
||||
float z_far = p_render_data->scene_data->view_projection[i].get_z_far();
|
||||
bokeh_dof->bokeh_dof_raster(buffers, p_render_data->camera_attributes, z_near, z_far, p_render_data->scene_data->cam_orthogonal);
|
||||
|
|
|
@ -36,7 +36,7 @@ void main() {
|
|||
if (any(greaterThanEqual(ssC.xy, params.screen_size))) { //too large, do nothing
|
||||
return;
|
||||
}
|
||||
//do not filter, SSR will generate arctifacts if this is done
|
||||
//do not filter, SSR will generate artifacts if this is done
|
||||
|
||||
float divisor = 0.0;
|
||||
vec4 color;
|
||||
|
|
|
@ -584,7 +584,7 @@ void light_process_omni(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v
|
|||
{
|
||||
vec4 clamp_rect = omni_lights.data[idx].atlas_rect;
|
||||
|
||||
//redo shadowmapping, but shrink the model a bit to avoid arctifacts
|
||||
//redo shadowmapping, but shrink the model a bit to avoid artifacts
|
||||
vec4 splane = (omni_lights.data[idx].shadow_matrix * vec4(vertex - normalize(normal_interp) * omni_lights.data[idx].transmittance_bias, 1.0));
|
||||
|
||||
float shadow_len = length(splane.xyz);
|
||||
|
|
|
@ -1970,7 +1970,6 @@ void RendererSceneCull::_update_instance_aabb(Instance *p_instance) {
|
|||
}
|
||||
}
|
||||
|
||||
// <Zylann> This is why I didn't re-use Instance::aabb to implement custom AABBs
|
||||
if (p_instance->extra_margin) {
|
||||
new_aabb.grow_by(p_instance->extra_margin);
|
||||
}
|
||||
|
|
|
@ -529,15 +529,15 @@ Error RenderingDevice::_reflect_spirv(const Vector<ShaderStageSPIRVData> &p_spir
|
|||
if (r_reflection_data.uniforms[set][k].binding == (uint32_t)info.binding) {
|
||||
// Already exists, verify that it's the same type.
|
||||
ERR_FAIL_COND_V_MSG(r_reflection_data.uniforms[set][k].type != info.type, FAILED,
|
||||
"On shader stage '" + String(shader_stage_names[stage]) + "', uniform '" + binding.name + "' trying to re-use location for set=" + itos(set) + ", binding=" + itos(info.binding) + " with different uniform type.");
|
||||
"On shader stage '" + String(shader_stage_names[stage]) + "', uniform '" + binding.name + "' trying to reuse location for set=" + itos(set) + ", binding=" + itos(info.binding) + " with different uniform type.");
|
||||
|
||||
// Also, verify that it's the same size.
|
||||
ERR_FAIL_COND_V_MSG(r_reflection_data.uniforms[set][k].length != info.length, FAILED,
|
||||
"On shader stage '" + String(shader_stage_names[stage]) + "', uniform '" + binding.name + "' trying to re-use location for set=" + itos(set) + ", binding=" + itos(info.binding) + " with different uniform size.");
|
||||
"On shader stage '" + String(shader_stage_names[stage]) + "', uniform '" + binding.name + "' trying to reuse location for set=" + itos(set) + ", binding=" + itos(info.binding) + " with different uniform size.");
|
||||
|
||||
// Also, verify that it has the same writability.
|
||||
ERR_FAIL_COND_V_MSG(r_reflection_data.uniforms[set][k].writable != info.writable, FAILED,
|
||||
"On shader stage '" + String(shader_stage_names[stage]) + "', uniform '" + binding.name + "' trying to re-use location for set=" + itos(set) + ", binding=" + itos(info.binding) + " with different writability.");
|
||||
"On shader stage '" + String(shader_stage_names[stage]) + "', uniform '" + binding.name + "' trying to reuse location for set=" + itos(set) + ", binding=" + itos(info.binding) + " with different writability.");
|
||||
|
||||
// Just append stage mask and return.
|
||||
r_reflection_data.uniforms.write[set].write[k].stages_mask.set_flag(stage_flag);
|
||||
|
|
|
@ -407,7 +407,7 @@ TEST_CASE("[SceneTree][TextEdit] text entry") {
|
|||
CHECK(text_edit->get_selection_to_line() == 1);
|
||||
SIGNAL_CHECK("caret_changed", empty_signal_args);
|
||||
|
||||
// insert before should move caret and selecion, and works when not editable.
|
||||
// Insert before should move caret and selection, and works when not editable.
|
||||
text_edit->set_editable(false);
|
||||
lines_edited_args.remove_at(0);
|
||||
text_edit->insert_line_at(0, "new");
|
||||
|
@ -424,7 +424,7 @@ TEST_CASE("[SceneTree][TextEdit] text entry") {
|
|||
SIGNAL_CHECK_FALSE("text_set");
|
||||
text_edit->set_editable(true);
|
||||
|
||||
// can undo/redo as single action
|
||||
// Can undo/redo as single action.
|
||||
((Array)lines_edited_args[0])[0] = 1;
|
||||
((Array)lines_edited_args[0])[1] = 0;
|
||||
text_edit->undo();
|
||||
|
|
Loading…
Reference in New Issue