Commit Graph

2658 Commits

Author SHA1 Message Date
Rémi Verschelde 2ae9c57a0e
Merge pull request #86040 from lawnjelly/new_batch_warning
[3.x] Workaround GCC warning in `rasterizer_canvas_batcher`
2023-12-11 20:02:11 +01:00
lawnjelly 64ab7488db Workaround GCC warning in `rasterizer_canvas_batcher`
`-Werror=array-bounds` flags when creating a new batch, possibly due to the possibility of the malloc failing (out of memory).
This PR adds an explicit `CRASHNOW` in the hope the compiler will recognise this case is not intended to be recoverable.
2023-12-11 17:45:30 +00:00
Rémi Verschelde 02e4e208ef
Fix various GCC 13 warnings
Fixes occurrences of `-Wtype-limits`, `-Wmaybe-uninitialized`,
`-Wduplicated-branches`.
2023-12-08 15:32:59 +01:00
lawnjelly 6ff370030a Fix glGet overflows by using 64 bit versions
Certain glGet operations require 64 bit versions according to the GLES spec.
The previous code was susceptible to overflow bugs,  especially running under ANGLE.
2023-10-16 13:47:11 +01:00
Rémi Verschelde 5f9cbe514d
Merge pull request #75468 from Ansraer/four_is_overkill
[3.x] Add support for 3 dir shadow splits
2023-10-01 22:50:57 +02:00
kobewi 6e4cee09dc
Add mono audio support to WASAPI
(cherry picked from commit 8d010b44c1)
2023-08-28 17:27:15 +02:00
lawnjelly 857d884026 Initialize `GLWrapper` earlier in `Storage::initialize()`
Make sure `GLWrapper` is initialized before `glActiveTexture` is called by other parts of the storage initialize(), to prevent benign warnings.
2023-08-21 08:51:47 +01:00
Rémi Verschelde 98976f9260
Merge pull request #80652 from Benedani/3.x_fix_gles2_skinning
[3.x] GLES2: Make GPU skinning more consistent with GLES3
2023-08-16 17:14:22 +02:00
Rémi Verschelde dcb097c7a1
Merge pull request #80481 from lawnjelly/clay_unbind_textures
[3.x] Unbind texture slots when changing framebuffer
2023-08-16 17:13:56 +02:00
The Benedani a66e8a29a7 GLES2: Make GPU skinning more consistent 2023-08-15 12:59:39 +02:00
Rémi Verschelde c685501f51
Merge pull request #80325 from lawnjelly/fti2d_check_skel_attach
[3.x] Hierarchical culling - Add extra check to `skeleton_attach_canvas_item`
2023-08-15 09:04:09 +02:00
lawnjelly 5e197fd21e Unbind texture slots when changing framebuffer
Prevent bugs whereby texture still in use.
2023-08-12 11:07:13 +01:00
Rémi Verschelde 75f427b8af
Merge pull request #80294 from Birdulon/PAlatency
[3.x] PulseAudio: Remove `get_latency()` caching
2023-08-08 14:28:45 +02:00
lawnjelly d7cca42ef6 Hierarchical culling - Add extra check to skeleton_attach_canvas_item
Although this check shouldn't be able to fail currently, it provides a small level of extra logic checking at only small cost in DEV builds.
2023-08-06 10:03:49 +01:00
Luke Hubmayer-Werner d90626f583 PulseAudio: Remove get_latency() caching 2023-08-05 20:25:06 +09:30
lawnjelly ad577e3c7e Fix 2D MultiMesh hierarchical culling
Fixes updating local bounds for MultiMeshes used in canvas items by introducing a back link.
2023-08-03 06:49:01 +01:00
Fabio Alessandrelli c783dd4a52 [Net] Explicitly handle buffer errors in send/recv 2023-07-19 19:17:19 +02:00
lawnjelly 43e181a00a Single Compilation Unit build.
Adds support for simple SCU build.
This speeds up compilation by compiling multiple cpp files within a single translation unit.
2023-07-02 20:13:16 +01:00
Rémi Verschelde 29eeb461f2
Merge pull request #68738 from lawnjelly/faster_canvas_item
[3.x] Canvas item hierarchical culling
2023-06-27 08:40:22 +02:00
Rémi Verschelde d644de8088
Merge pull request #76226 from paddy-exe/fix-node-position-view-3.x
[3.x] Fix `NODE_POSITION_VIEW` shader built-in
2023-06-07 14:46:24 +02:00
lawnjelly b777a9e5f9 Canvas item hierarchical culling
Adds optional hierarchical culling to the 2D rendering (within VisualServer).

Each canvas item maintains a bound in local space of the item itself and all child / grandchild items. This allows branches to be culled at once when they don't intersect a viewport.
2023-04-25 20:17:33 +01:00
Aaron Franke 141783d90f
[3.x] Expose `determinant` in Transform2D, rename internal method 2023-04-22 13:47:47 -05:00
Patrick 67d3fe4075 [3.x] Fix NODE_POSITION_VIEW Shader Built-In 2023-04-18 22:11:41 +02:00
Rémi Verschelde 4c5a934408
Merge pull request #68960 from lawnjelly/multirect
Batching - Add MultiRect command
2023-04-17 17:25:20 +02:00
Ansraer 54bc6a300e add support for 3 dir shadow splits 2023-03-29 13:40:17 +02:00
Alex Nogueira 01d0b9ad15 Fixed Whitescreen Issue in GLES2.0 Glow Setting
Replaced textureLod with texture2DLod in the tonemapping.glsl shader file.
2023-03-15 18:13:57 +01:00
lawnjelly 910ddd13c4 Batching - Add MultiRect command
Large groups of similar rects can be processed more efficiently using the MultiRect command. Processing common to the group can be done as a one off, instead of per rect.

Adds the new API to VisualServerCanvas, and uses the new functionality from Font, BitmapFont, DynamicFont and TileMap, via the VisualServerCanvasHelper class.
2023-03-10 10:58:04 +00:00
Ansraer 0227fcc4cc fix shadows pass viewport calculation 2023-03-07 11:22:05 +01:00
Rémi Verschelde f3da393b44
Merge pull request #70378 from Calinou/os-expose-read-from-stdin-3.x
Expose `OS.read_string_from_stdin()` to the scripting API (3.x)
2023-01-20 12:12:35 +01:00
Rémi Verschelde a0ddc595a6
Merge pull request #71510 from lawnjelly/gles2_oct_unpack
GLES2 fix octahedral half float unpacking
2023-01-17 10:55:37 +01:00
lawnjelly c6a428b3d6 GLES2 fix octahedral half float unpacking
The strides in _unpack_half_floats() were incorrectly calculated in the case where octahedral normals and tangents were in use.
2023-01-16 11:55:06 +00:00
Hugo Locurcio badcfa2523
Expose `OS.read_string_from_stdin()` to the scripting API
This can be used in scripts to read user input in a blocking manner.

This also removes the unused `block` argument, which is always `true`.
2023-01-16 11:39:53 +01:00
Rémi Verschelde 1426cd3b3a
One Copyright Update to rule them all
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".

Backported from #70885.
2023-01-10 15:26:54 +01:00
Rémi Verschelde 6963ba631e
Fix typos with codespell 2022-12-15 12:26:59 +01:00
Rémi Verschelde 5797b2f437
Merge pull request #69826 from norrath-hero/3.x
Fix GLES 2 Spotlight bug
2022-12-13 14:16:51 +01:00
Rémi Verschelde b0b759e6da
SCons: Cleanup `DEBUG`, `_DEBUG` and `NDEBUG` defines
- `_DEBUG` is MSVC specific so it didn't make much sense to define for
  Android and iOS builds.
- iOS was the only platform to define `DEBUG`. We don't use it anywhere
  outside thirdparty code, which we usually don't intend to debug, so it
  seems better to be consistent with other platforms.
- Consistently define `NDEBUG` to disable assert behavior in both `release`
  and `release_debug` targets. This used to be set for `release` for all
  platforms, and `release_debug` for Android and iOS only.
- Due to the above, I removed the only use we made of `assert()` in Godot
  code, which was only implemented for Unix anyway, should have been
  `DEV_ENABLED`, and is in PoolAllocator which we don't actually use.
- The denoise and recast modules keep defining `NDEBUG` even for the `debug`
  target as we don't want OIDN and Embree asserting all over the place.

(cherry picked from commit 26e9145c26)
2022-12-12 14:49:21 +01:00
Pedro J. Estébanez 0873cf0656 Keep a single, portable implementation of `OS::get_processor_count()`
(cherry picked from commit 6bf02c0162)
2022-12-12 14:47:37 +08:00
norrath-hero aca8999cc9 Fix GLES 2 Spotlight Bug
Fixes https://github.com/godotengine/godot/issues/69759
Fixes https://github.com/godotengine/godot/issues/54343
Fixes https://github.com/godotengine/godot/issues/25526
2022-12-11 05:45:45 +08:00
Ibrahn Sahir 22f93bccb4 Fix MIDI input with ALSA.
Reworked the handling of ALSA RawMidi input to support:
- Running Status.
- RealTime Category messages arriving during other messages data.
- Multiple connected RawMidi interfaces.

(cherry picked from commit 81575174cb)
2022-12-04 19:04:31 +08:00
clayjohn f1bafe8131
Take FXAA samples from half-pixel coordinates to improve quality
(cherry picked from commit dbcc0fa2a6)
2022-11-30 15:39:00 +01:00
nikitalita e1a39d66b0
Fix DirAccessWindows::make_dir() choking on ".."
`CreateDirectoryW()` chokes on absolute paths that contain `..`
example: "C:\\workspace\\..\\games\\assets"
Simplifying the path before creating the dir fixes this.

(cherry picked from commit 0d3d5ac769)
2022-11-30 15:06:28 +01:00
dzil123 aa0b91ca52 [3.x] Fix shader compiler asan out of bounds 2022-11-17 19:24:15 -08:00
Hugo Locurcio 6d0d9037cd
Fix debanding strength being affected by environment adjustments 2022-09-26 14:46:09 +02:00
Rémi Verschelde f9b91d8d24 Style: Ensure consistent formatting with clang-format 15 2022-09-21 13:23:17 +02:00
lawnjelly a300505066 Prevent drawing MultiMesh with zero instance count
Issuing a driver drawcall for MultiMesh with zero instances crashes some drivers.
2022-09-15 13:20:12 +01:00
Rémi Verschelde 4682144eb8 Merge pull request #65408 from lawnjelly/dir_light_uninit
Fix GLES directional shadow uninitialized data
2022-09-06 12:31:20 +02:00
lawnjelly 9b294b298e Fix GLES directional shadow uninitialized data
Valgrind shows directional_shadow.fbo accessed when uninitialized in directional_shadow_create.
2022-09-06 09:21:56 +01:00
lawnjelly 23fedc0d1a Batching - fix uninitialized color read
Valgrind was showing a read from uninitialized memory. r_fill_state.curr_batch->color is unset (for performance reasons), so can contain random data.

This actually doesn't matter in practice, since logically this uninitialized state can only occur when change_batch is set, and the only side effect is that change_batch is set. Hence why no bugs occur in practice.

This PR prevents this read from uninitialized data. It is likely free in terms of performance after optimization, and keeps the Valgrind logs clearer, so why not.
2022-09-06 07:01:18 +01:00
Rémi Verschelde a86da2eb8b
Merge pull request #64608 from RandomShaper/safe_audio_threading_3.x 2022-08-25 10:12:44 +02:00
Rémi Verschelde 6358e41772
Merge pull request #64838 from akien-mga/3.x-cherrypicks
Cherry-picks for the 3.x branch (future 3.6) - 2nd batch
2022-08-25 00:51:19 +02:00