Credit and thanks to @bruzvg for multiple build fixes, update of 3rd-party items and MinGW support.
Co-authored-by: bruvzg <7645683+bruvzg@users.noreply.github.com>
This change replicates the distance-only metric patch which is now much
smaller and cleaner, as upstream simplifier already tracks distance and
attribute quadrics separately - it just doesn't store both errors in the
collapse structures.
The old two patches were removed as they are no longer needed.
Note: this change completely overwrites the meshoptimizer library source
(from git SHA c21d3be6ddf627f8ca852ba4b6db9903b0557858)
without including any patches; a distance error metric patch is still
needed and will be reapplied in the next commit.
The changes elsewhere are due to a signature change for
meshopt_simplifyWithAttributes.
We had a slightly older version of it for UWP, as the wincrypt API isn't allowed there.
We removed this with UWP in #81416, but since this was enabled inconditionally before,
this actually changed behavior for Windows compared to Godot 4.1 and earlier.
This change is also needed to properly supported Windows Store.
Reverts #82582.
Works around #83674.
Users tested 1.0.29, 1.0.30, and 1.0.31, which all triggered the same issue,
with both mingw-gcc from Fedora 36 and Fedora 39.
https://github.com/thorvg/thorvg/releases/tag/v0.11.1
Godot related:
+ [SwEngine] Enhanced the quality of the dash line corners.
+ [SVG] Fixed a regression bug related to maskContentUnit,
userSpaceOnUse/objectBoundingBox.
Fixes#82982 icons.
Fixes#83198 svg ← png/jpg.
- Reformat logo license as a plain text file.
- Fix outdated links or references to SFC or Visual Script.
- Tweak contents of `CONTRIBUTING.md` to highlight contributor docs more
prominently, and make it easier to parse.
- Tweak formatting and contents in `thirdparty/README.md` for consistency.
This is replaced by a much lighter weight and faster JNLM denoiser. OIDN is still much more accurate, and may be provided as an optional backend in the future, but the JNLM denoiser seems good enough for most use cases and removing OIDN reduces the build system complexity, binary size, and build times very significantly.
Introduces support for FSR2 as a new upscaler option available from the project settings. Also introduces an specific render list for surfaces that require motion and the ability to derive motion vectors from depth buffer and camera motion.
The UWP platform port was never ported to the Godot 4.0+ API,
and it's now accumulating bitrot as it doesn't compile, and thus
we no longer propagate platform changes in it.
So we finally remove to acknowledge this state. There's still some
interest in reviving the UWP port eventually, especially as support
for Direct3D 12 will soon be merged, but when that happens it will
be easiest to redo it from scratch.
Updates to volk, vulkan headers, `vk_enum_string_helper.h`, VMA,
glslang, spirv-reflect.
VMA doesn't tag SDK releases specifically, and still hasn't had a tagged
release since 3.0.1, but the Vulkan SDK now seems to ship a recent master
commit, so we do the same.
Upstreams the fix from #73310, so we can remove that patch.
Remove `infback.c` which we stopped compiling after #79273.
The `OF` macro was also removed so I can drop the patch where I yell
at Gentoo developers.
Single-header libraries like this require passing a bunch of defines _once_
before including the header, but not multiple times. This can make it tricky
in user code to know when to request the implementation, if the header needs
to be included in multiple files.
So properly compiling a .cpp file for the implementation solves this, and
also enables us to properly disable warnings on thirdparty implementation code.
If no StreamPeerTLS implementation is available, HTTPClient and
WebSocketPeer will now correctly refuse to connect using TLS returning
ERR_UNAVAILABLE.
Similarly, ENetConnection will refuse to setup DTLS when PacketPeerDTLS
is not available.
> The 4.4.0 release is a minor release with image quality improvements,
> a small performance boost, a few new quality-of-life features, and a
> few minor fixes for uncommon build configurations.
https://github.com/ARM-software/astc-encoder/releases/tag/4.4.0
This commit adds a new mbedTLS configuration header to customize the
built-in library (and can be optionally replaced by a platform-specific
one).
Currently, it disables most weak cryptographic functions (with the
notable exceptions of MD5 and SHA-1), along with removing support for
TLS versions 1.0 and 1.1 (making TLSv1.2 the only supported one).
Use a TLSOptions configuration object which is created via static
functions.
- "TLSOptions.client": uses the standard CA and common name verification.
- "TLSOptions.client_unsafe": uses optional CA verification (i.e. if specified)
- "TLSOptions.server": is the standard server configuration (chain + key)
This will allow us to expand the TLS configuration options to include
e.g. mutual authentication without bloating the classes that uses
StreamPeerTLS and PacketPeerDTLS as underlying peers.
For some reason it doesn't use the POSIX `poll.h`, instead resorting to
`sys/poll.h`. Musl doesn't really like this at all, throwing a warning
and, thus, halting compilation.
Security update, fixes CVE-2022-37434 in zlib.
Only applications exposing/using `inflateGetHeader()` seem to be affected,
which is not our case, so this is not critical for Godot.
Remove duplicated copy of zlib in freetype sources to force using the updated
version in `thirdparty/zlib/`.
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
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".
Graphite is now available under:
MIT OR MPL-2.0 OR LGPL-2.1-or-later OR GPL-2.0-or-later
We pick MIT which is the same as Godot's main license for simplicity.
Remove define to skip deprecation warnings, upstream fixed those.
Using `EM_ASM` here would cause this error in template builds:
```
EM_ASM is not supported in side modules
```
We use our own method for this since it already handles this properly.
In some cases Godot can generate input parameters to Recast that cause it to crash. Specifically when baking NavigationMeshes for input meshes that have axis extents less than half the NavigationMesh CellSize.
This has been fixed upstream in Recast (in 3901c5854c). Updating Godot's Recast integration fixes this crash issue in Godot as well.
This is accomplished through the addition of a GLAD GLX loader in the
`thirdparty` directory.
This is another step towards a nice Wayland/X11 interoperation.
GLAD 1 creates unusable loaders for EGL, while the newly released GLAD 2
does not, so for consistency I thought that it would be a good idea to
uniform things beforehand. While it had some API changes some renames
were all that was needed and everything works like before, at least on
the Wayland branch.
I've kept the structure identical, although this new generator has quite
a few hefty features, such as a single header mode.
I've also added GLAD to `thirdparty/README.md`, but I haven't specified
that in the commit title because it's a very small "fix".
Updates to volk, vulkan headers, `vk_enum_string_helper.h`, glslang,
spirv-reflect.
No update to VMA which still has 3.0.1 as it's last tagged release.
We were compiling `src/loaders/external_png` but using the header from
`src/loaders/png`, leading to `-Wodr` warnings.
Remove unused bundled lodepng code since we use `external_png` (libpng).
Whitespace changes are from upstream, will attempt PR'ing a cleanup there for
future updates.
* Allows running the game in "movie writer" mode.
* It ensures entirely stable framerate, so your run can be saved stable and with proper sound (which is impossible if your CPU/GPU can't sustain doing this in real-time).
* If disabling vsync, it can save movies faster than the game is run, but if you want to control the interaction it can get difficult.
* Implements a simple, default MJPEG writer.
This new features has two main use cases, which have high demand:
* Saving game videos in high quality and ensuring the frame rate is *completely* stable, always.
* Using Godot as a tool to make movies and animations (which is ideal if you want interaction, or creating them procedurally. No other software is as good for this).
**Note**: This feature **IS NOT** for capturing real-time footage. Use something like OBS, SimpleScreenRecorder or FRAPS to achieve that, as they do a much better job at intercepting the compositor than Godot can probably do using Vulkan or OpenGL natively. If your game runs near real-time when capturing, you can still use this feature but it will play no sound (sound will be saved directly).
Usage:
$ godot --write-movie movie.avi [scene_file.tscn]
Missing:
* Options for configuring video writing via GLOBAL_DEF
* UI Menu for launching with this mode from the editor.
* Add to list of command line options.
* Add a feature tag to override configurations when movie writing (fantastic for saving videos with highest quality settings).
We're still formally tracking v0.8.1, those fixes don't impact the
library features. I didn't bother documenting them with patches as
they will likely soon make their way to either a v0.8.2 or v0.9.0.