1
0
Fork 0
Commit Graph

4208 Commits

Author SHA1 Message Date
Thaddeus Crews 11b90086b7
Merge pull request #96705 from elmajime/camera_from_external_feed
Add support for external camera feed from external plugin on Android
2024-11-04 21:51:50 -06:00
Thaddeus Crews bb5f390fb9
Style: Apply `clang-tidy` fixes (superficial)
• `modernize-use-bool-literals`, `modernize-use-nullptr`, and `readability-braces-around-statements`
2024-11-04 12:11:14 -06:00
Thaddeus Crews 89a311205f
Style: Apply `clang-tidy` fixes
• `modernize-use-default-member-init` and `readability-redundant-member-init`
• Minor adjustments to `.clang-tidy` to improve syntax & remove redundancies
2024-11-04 12:11:06 -06:00
EnlightenedOne 1d141ab32a Fix Frustum Sky projection translation logic, all pipelines, fixes 63863 2024-11-02 21:34:55 +00:00
Yevhen Babiichuk (DustDFG) 81a032337c Deleted stale check. Now SCons supports globbing with `#` inside path
Some parts of the buildsystem already were using it with `#` in path

Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
2024-11-02 22:20:17 +02:00
A Thousand Ships ec650a2f09
[Core,Drivers] Improve use of `Ref.is_null/valid`
Use `is_null` over `!is_valid` and vice versa.
2024-11-01 16:50:11 +01:00
Dario 5216ef5f9c Add dependency detection improvements to the render graph.
- Buffers changing their usage are no longer treated as write usage unless the API requires it.
- Draw lists are not treated as being dependent on each other if their regions do not intersect despite both being write commands.
- Particles were tweaked to use different unused buffers to reduce dependencies.
2024-11-01 09:46:52 -03:00
Matias N. Goldberg b9a2f108fc Fix splash screen upside down on Android
Fixes an issue introduced in #96439 (see
https://github.com/godotengine/godot/pull/96439#issuecomment-2447288702)

Godot was relying on Java's
activity.getWindowManager().getDefaultDisplay().getRotation(); to apply
pre-rotation but this is wrong.

First, getRotation() may temporarily return a different value from the
correct one; which is what was causing the splash screen to be upside
down. It would return -90 instead of 90 for the first rendered frame.

But unfortunately, the splash screen is just one frame rendered for a
very long time, so the error lingered for a long time for everyone to
see.

Second, to determine what rotation to use, we should be looking at what
Vulkan told us, which is the value we pass to
VkSurfaceTransformFlagBitsKHR::preTransform.

This commit removes the now-unnecessary
screen_get_internal_current_rotation() function (which was introduced by
#96439) and now saves the preTransform value in the swapchain.
2024-10-31 16:52:26 -03:00
maxime.chambefort 6f846eb5c5 Added external camera feed from external plugin on Android 2024-10-30 18:30:28 +01:00
clayjohn 940e9c2a43 Revert "Fix GPUParticles are not rendered for older AMD GPUs with OpenGL+Angle"
This reverts commit 9cc9df52eb.

This also adds a fallback to avoid using the Godot versions of the half 2 float functions when using ANGLE.
2024-10-29 22:17:16 -07:00
Thaddeus Crews 73830b3c12
Merge pull request #88628 from bruvzg/i_have_no_idea_what_im_doing
[macOS/iOS] Use hardware sampling rates for audio I/O.
2024-10-29 19:25:47 -05:00
Thaddeus Crews b7a0971ad2
Merge pull request #97934 from adamscott/give-AThousandShips-a-break
[Codestyle] Set clang-format `RemoveSemicolon` rule to `true`
2024-10-29 19:25:36 -05:00
Clay John 748f4079e3
Merge pull request #96439 from darksylinc/matias-TheForge-pr03-rebased
Add Swappy & Pre-Transformed Swapchain
2024-10-29 12:34:40 -07:00
Matias N. Goldberg aaa0e2fddf Add Swappy & Pre-Transformed Swapchain
- Adds Swappy for Android for stable frame pacing
- Implements pre-transformed Swapchain so that Godot's compositor is in
charge of rotating the screen instead of Android's compositor
(performance optimization for phones that don't have HW rotator)

============================

The work was performed by collaboration of TheForge and Google. I am
merely splitting it up into smaller PRs and cleaning it up.

Changes from original PR:

- Removed "display/window/frame_pacing/android/target_frame_rate" option
to use Engine::get_max_fps instead.
- Target framerate can be changed at runtime using Engine::set_max_fps.
- Swappy is enabled by default.
- Added documentation.
- enable_auto_swap setting is replaced with swappy_mode.
2024-10-28 18:55:37 -03:00
Clay John 683d11a69f
Merge pull request #98279 from Calinou/vulkan-d3d12-silence-using-present-mode
Remove "Using present mode" verbose prints in Vulkan and Direct3D 12
2024-10-27 19:24:35 -07:00
Thaddeus Crews edad871a2d
Merge pull request #98425 from darksylinc/matias-breadcrumbs-race-fix
Fix race conditions in breadcrumbs
2024-10-25 13:04:12 -05:00
Thaddeus Crews 07e759b74a
Merge pull request #97771 from dsnopek/openxr-linux-egl
OpenXR: Add support for Wayland on Linux
2024-10-25 13:04:08 -05:00
Adam Scott 0d350e7108
Set clang-format `RemoveSemicolon` rule to `true`
- Set clang-format `Standard` rule to `c++20`
2024-10-25 13:49:43 -04:00
bruvzg c8609f4c0f
[macOS/iOS] Use hardware sampling rates for audio I/O. 2024-10-25 19:26:24 +03:00
Yuri Rubinsky 6732a0fd86
Merge pull request #98448 from Chaosus/shader_global_builtins
Make `OUTPUT_IS_SRGB/CLIP_SPACE_FAR` shader built-ins global
2024-10-25 13:55:14 +03:00
Clay John a1c7998d5f
Merge pull request #98305 from cadence-s/fix-ios-audio-driver-error
Fix iOS audio driver attempting to start output too early
2024-10-24 19:40:34 -07:00
Thaddeus Crews cfc05c5e0f
Merge pull request #85338 from EMBYRDEV/shadow-caster-mask
Add `shadow_caster_mask` to Light3D.
2024-10-24 13:22:59 -05:00
Chaosus 463e81413e Make `OUTPUT_IS_SRGB/CLIP_SPACE_FAR` shader built-ins global 2024-10-24 12:32:05 +03:00
Matias N. Goldberg 668c9b74e2 Fix race conditions in breadcrumbs
Adds "--accurate-breadcrumbs" CLI command

Additionally, leave out breadcrumbs code in non-debug, non-dev builds.
Fix regression introduced in #98388 where command_insert_breadcrumb() is
called even in non-debug builds.

Fixes #98338
2024-10-22 22:08:46 -03:00
Thaddeus Crews 7815ccbdd5
Merge pull request #98294 from Calinou/texture-placeholders-use-shared-copy
Use a shared copy of placeholder textures, tweak placeholder appearance
2024-10-21 16:39:29 -05:00
Thaddeus Crews a14e9e99e5
Merge pull request #98388 from DarioSamo/sync-fixes
Improve synchronization of rendering after changes from transfer queues.
2024-10-21 16:39:21 -05:00
Thaddeus Crews 291e4b78e2
Merge pull request #98237 from dustdfg/os_transitive_image_headers_refactor
Don't include `core/io/image.h` in `core/os/os.h`
2024-10-21 16:39:15 -05:00
Thaddeus Crews 4630cbc487
Merge pull request #98212 from stuartcarnie/sgc/metal_improvements
Metal: Performance improvements and bug fixes
2024-10-21 16:39:09 -05:00
Dario 4ad424234f Improve synchronization of rendering commands after changes from transfer queues.
Fix an error where barriers are expected to be inserted for the swap chain textures.
Add the relevant synchronization stages and accesses to resources between frames.
Fix an error where debug labels weren't finished correctly between frames.
Breadcrumbs are now behind an optional macro as they currently lead to synchronization errors which are harmless.
2024-10-21 11:27:56 -03:00
Stuart Carnie 83ac274e25
Metal: Performance improvements and bug fixes 2024-10-20 11:15:13 +11:00
clayjohn 62516df757 Precompute projection matrices when rendering 2D shadows 2024-10-18 11:55:00 -07:00
Cadence b4fd9d1f38 Fix iOS audio driver attempting to start output too early 2024-10-18 13:05:30 -04:00
Yevhen Babiichuk (DustDFG) af6d260c17 Don't include `core/io/image.h` in `core/os/os.h`
`core/os/os.h` doesn't use `core/io/image.h`. It just brings
transitive dependencies. Lots of dependencies because `core/os/os.h`
is transitively included in almost every file of godot

Also added `core/io/image.h` into files^1 where `Ref<Image>` and `core/os/os.h`
were used to prevent obscure errors involving `Ref<Image>`

^1 except those which include `core/io/image_loader.h` or `core/io/image.h` by
corresponding .h file with the same name

Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
2024-10-18 19:04:19 +03:00
Hugo Locurcio 35a20fa96a Use a shared copy of placeholder textures, tweak placeholder appearance
This reduces memory usage a bit in case multiple placeholders were
requested, e.g. when using multiple NoiseTextures with no noise property
defined.

The placeholder texture's appearance was also changed from a plain magenta
color to a checkerboard alternating between magenta and black pixels.
This makes it easier to spot when the placeholder texture ends up
being used in a complex scene (usually by accident).
The texture's dimensions remain identical to keep the physical size
identical in 2D.
2024-10-18 14:51:51 +02:00
Dario 8c3e46b13b Move transitions of textures initialized by transfer workers to the main graphics queue.
Also adds a new possible texture layout and API trait to support a particular behavior in D3D12 where only the COMMON layout is supported in copy queues. Fixes #98158.
2024-10-18 09:15:25 -03:00
Hugo Locurcio 5ed10e3604 Remove "Using present mode" verbose prints in Vulkan and Direct3D 12
These messages were printed every time the swapchain was recreated
(e.g. on viewport size change), which could easily end up spamming
the output.

The chosen present mode is already displayed when using the Print FPS
project setting or command line argument.
2024-10-17 23:18:28 +02:00
Thaddeus Crews bb20444998
Merge pull request #97744 from Nazarwadim/use_local_vector_for_skeleton
Use `LocalVector` for skeleton
2024-10-10 18:13:19 -05:00
Thaddeus Crews 16dfaa5e80
Merge pull request #94952 from alvinhochun/angle-d3d11-flip-y
Optimize ANGLE on D3D11 to remove an extra blit
2024-10-10 18:13:17 -05:00
Thaddeus Crews a44f691fc7
CI: Add MinGW/GCC build to Windows GHA 2024-10-10 10:10:55 -05:00
Clay John 842f982397
Merge pull request #96819 from clayjohn/GLES3-instance-uniforms
Implement instance uniforms in Compatibility renderer
2024-10-07 13:41:47 -06:00
Clay John e7c39efdb1
Merge pull request #97309 from kroketio/metal-expose-device-handle
Metal: expose MTLDevice
2024-10-07 11:00:53 -06:00
David Snopek 256699ee31 OpenXR: Add support for Wayland on Linux 2024-10-04 11:44:05 -05:00
Rémi Verschelde c46d1e4540
Merge pull request #97552 from dustdfg/drivers/use_dedicated_print_error
Use dedicated `print_error` method for colored output for unsupported drivers
2024-10-04 17:18:14 +02:00
Rémi Verschelde f032af7453
Merge pull request #97304 from kroketio/metal-return-logical-device-handle
Metal: Implement `texture_create_from_extension`
2024-10-04 12:58:38 +02:00
Rémi Verschelde 6e03910578
Merge pull request #97719 from bruvzg/cross_dev_rename
[Linux/BSD] Fix cross-device rename.
2024-10-04 11:21:58 +02:00
Dario e2c6daf7ef Implement asynchronous transfer queues, thread guards on RenderingDevice. Add ubershaders and rework pipeline caches for Forward+ and Mobile.
- Implements asynchronous transfer queues from PR #87590.
- Adds ubershaders that can run with specialization constants specified as push constants.
- Pipelines with specialization constants can compile in the background.
- Added monitoring for pipeline compilations.
- Materials and shaders can now be created asynchronously on background threads.
- Meshes that are loaded on background threads can also compile pipelines as part of the loading process.
2024-10-02 15:11:58 -03:00
Nazarii 1ba168fcbc Use local vector for skeleton 2024-10-02 20:38:40 +03:00
Rémi Verschelde 2bd0fd8e3d
Merge pull request #97676 from clayjohn/GLES3-sky-quality
Improve the look of radiance map in Compatibility backend
2024-10-02 15:01:20 +02:00
bruvzg 4cc9d2f437
[Linux/BSD] Fix cross-device rename. 2024-10-02 08:57:37 +03:00
Rémi Verschelde 6c133054f7
Merge pull request #97602 from patowen/fix-region-filter-clip-enabled
Fix `region_filter_clip_enabled` to avoid sprite bleeding for interpolated sprite sheets
2024-10-01 17:31:17 +02:00
Gergely Kis 146ba4106f Move Vulkan includes to a central godot_vulkan.h header
Also fixes Vulkan build problem with recent Clang.
2024-09-29 17:53:18 +02:00
Patrick Owen d720eb80e1 Clamp UV-coordinates to centers of outermost texels when configured to do so
In addition, fix region_filter_clip_enabled documentation to be consistent with AtlasTexture.xml, since that is the option whose behavior was fixed
2024-09-29 05:57:19 -04:00
clayjohn 4f674154d9 Improve the look of radiance map in Compatibility backend 2024-09-29 01:33:14 -07:00
ywmaa 0a9ad8f9de
Implement vertex shading
This adds support in all backends, but the Compatibility renderer works the best.
Mobile and Forward+ can only support one directional light shader (the first in the tree)
While the Compatibility renderer supports any number of shadows.

Co-authored-by: Clay John <claynjohn@gmail.com>
2024-09-29 00:36:09 +02:00
Yevhen Babiichuk (DustDFG) 4c5094a2fe Use dedicated `print_error` method for colored output for unsupported drivers
Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
2024-09-27 20:30:51 +03:00
Rémi Verschelde a4c1804cab
Merge pull request #97483 from akien-mga/clang-format-19.1.0
CI: Update `clang-format` pre-commit hook to 19.1.0
2024-09-26 12:46:04 +02:00
Rémi Verschelde ef7547384c
Merge pull request #95678 from Hilderin/fix-slow-load-on-large-project-v2
Fix slow editor load on large projects (v2)
2024-09-26 12:45:31 +02:00
Rémi Verschelde c92a6c7e27
CI: Update `clang-format` pre-commit hook to 19.1.0 2024-09-26 11:46:12 +02:00
Hilderin 21f7c8a25f Fix slow editor load on large projects (v2) 2024-09-25 17:36:39 -04:00
Thaddeus Crews 9f9ee0c813
SCons: Add unobtrusive type hints in SCons files 2024-09-25 09:34:35 -05:00
Rie 5efa6ba489
Fix incorrect Reinhard tonemap operator 2024-09-25 12:34:23 +02:00
Rémi Verschelde c3e16cda00
Merge pull request #97379 from clayjohn/webgl-errors
Clean up two recently introduced WebGL errors
2024-09-24 12:57:21 +02:00
clayjohn 0305e437ff Clean up two recently introduced WebGL errors 2024-09-23 12:18:33 -07:00
Sander e9c85be76f Metal: expose DRIVER_RESOURCE_LOGICAL_DEVICE for get_resource_native_handle() 2024-09-22 03:19:06 +03:00
Sander 0ad1820b1a Metal: implement texture_create_from_extension
Parameters p_type, p_format, p_array_layers, p_depth_stencil are
ignored - MTLTexture (and the callee) already have this information
and is only relevant when reinterpreting or remaping the texture in
different ways.
2024-09-22 02:32:37 +03:00
Rémi Verschelde 5f5c690481
Merge pull request #97260 from clayjohn/pixel_snap
Calculate pixel snap in canvas space instead of world space
2024-09-21 11:50:52 +02:00
clayjohn e75900e1ad Calculate pixel snap in canvas space instead of world space
This ensures that you are actually snapping to pixels in the viewport and not an arbitrary amount
2024-09-20 17:43:33 -07:00
David Snopek 1a6f8512bc Add external texture support (GLES3)
Co-authored-by: Fredia Huya-Kouadio <fhuyakou@gmail.com>
Co-authored-by: Mauricio Narvaez <nvz@meta.com>
2024-09-20 10:48:32 -05:00
Rémi Verschelde 34dd5e0c37
Merge pull request #97217 from stuartcarnie/97185_subpixel_rendering
Metal: Fix subpixel blending; fix inconsistent blend state
2024-09-20 16:07:03 +02:00
Thaddeus Crews b37fc1014a
Style: Apply new `clang-format` changes 2024-09-20 08:09:48 -05:00
Stuart Carnie e826ab9ba9
[2D,Metal]: Fix subpixel blending; fix inconsistent blend state in Metal 2024-09-20 15:16:31 +10:00
Rémi Verschelde b1b4c5da4b
Merge pull request #96928 from dsnopek/rename-and-expose-texture-create-external
Expose a function to create textures from a native handle in the compatibility renderer
2024-09-19 17:13:27 +02:00
David Snopek 7d56b09f23 Expose a function to create textures from a native handle in the compatibility renderer 2024-09-19 09:05:32 -05:00
Rémi Verschelde 0f27e7816f
Merge pull request #97131 from BastiaanOlij/fix_gles_canvas_background
Fix compatibility canvas background depth issue
2024-09-18 11:15:50 +02:00
Rémi Verschelde 21134e146a
Merge pull request #97032 from lalitshankarchowdhury/fix-audio-crash
Fix `AudioStreamMicrophone` crash on scene-reload
2024-09-18 11:15:44 +02:00
Bastiaan Olij 491a5d9450 Fix compatibility canvas background depth issue 2024-09-18 10:23:13 +10:00
Lalit Shankar Chowdhury 0e23c5fc9f
Fix `AudioStreamMicrophone` crash on scene-reload 2024-09-18 00:03:48 +05:30
Pablo Andres Fuente 84e24017b0
Adding a macro on NetSocketPosix to pick the right type for FIONREAD len
On Windows, `ioctlsocket` returns `len` as an unsigned long.
On Posix, `ioctl` returns `len` as an int.
This aims to fix #41287 bug, which was seen on Linux.
The implementation is just a new macro that is set with the proper type
for each platform.
2024-09-17 16:09:33 +02:00
Rémi Verschelde 9c4e3fbaaf
Merge pull request #97069 from patwork/fix-gles3-update-sky-cubemap
Fix for GLES3 radiance cubemap update
2024-09-17 09:18:01 +02:00
Rémi Verschelde 8c6210a3eb
Merge pull request #92290 from clayjohn/LOD-fixes
Use distance to AABB surface to calculate Mesh LOD instead of using supports
2024-09-16 13:34:04 +02:00
patwork 3038de4245 Fix for GLES3 radiance cubemap update 2024-09-16 11:32:36 +02:00
Rémi Verschelde 0f86f30cf0
Merge pull request #96860 from kroketio/from-ext-alloc-check
Vulkan: Account for externally backed textures
2024-09-13 11:21:58 +02:00
Sander 41fdc55b05 Vulkan: account for externally backed textures (i.e., created via `texture_create_from_extension()`), as such textures lack ownership information.
More info: #96832
2024-09-12 18:15:23 +03:00
Rémi Verschelde cc52112144
Merge pull request #96643 from bruvzg/fs_links
[FileSystem Dock] Add symlink indicator and tooltip.
2024-09-12 10:28:44 +02:00
Rémi Verschelde f8b29d54a3
Merge pull request #96863 from BlueCube3310/gles-align-fix
Compatibility: Fix alignment of compressed textures when retrieving
2024-09-12 09:25:39 +02:00
clayjohn 7ff106f828 Use distance to AABB surface to calculate Mesh LOD instead of using supports 2024-09-11 14:17:09 -07:00
BlueCube3310 0182294b37 Compatibility: Fix alignment of compressed textures when retrieving 2024-09-11 18:15:26 +02:00
Rémi Verschelde 62717f2953
Merge pull request #96822 from stuartcarnie/sgc/metal_out_of_bounds
Metal: Fix out of bounds crash when using debug draw modes
2024-09-11 12:35:20 +02:00
Rémi Verschelde e9194702a3
Merge pull request #96840 from bruvzg/open_wstat
[Windows] Remove `_wstat` use in `FileAccessWindows::open_internal`
2024-09-11 12:34:28 +02:00
Rémi Verschelde 88e9af6b7c
Merge pull request #74830 from AThousandShips/win_time_fix
[Windows] Use `GetFileTime` for `FileAccess`
2024-09-11 12:34:18 +02:00
bruvzg e16f8bae2e [Windows] Remove _wstat use in FileAccessWindows::open_internal 2024-09-11 09:48:09 +03:00
Stuart Carnie 34190fc360
Metal: fix out of bounds crash when using debug draw modes 2024-09-11 06:08:42 +10:00
clayjohn 29df589632 Implement instance uniforms in Compatibility renderer 2024-09-10 12:20:47 -07:00
Rémi Verschelde bc4c60c933
Merge pull request #94893 from rune-scape/no-const-cast-mesh-storage
Avoid `const_cast` in `mesh_storage.h`
2024-09-10 09:51:22 +02:00
Yuri Rubinsky af92fdb0ac Add basic support to evaluate operator value in shader language 2024-09-09 15:12:11 +03:00
Rémi Verschelde 584e5bbf84
Merge pull request #96509 from Rudolph-B/Issue-92091
Fix OpenGL shadow textures not honoring texture type when reusing textures
2024-09-08 23:21:52 +02:00
Rémi Verschelde a87ceed163
Merge pull request #96639 from bruvzg/symlink_ren
Fix renaming directory symlinks on Linux.
2024-09-06 22:38:58 +02:00
Rémi Verschelde aa07333abe
Merge pull request #96114 from BlueCube3310/sh-lightmap-packing
LightmapGI: Pack L1 SH coefficients for directional lightmaps
2024-09-06 22:38:29 +02:00
Andrew Price 64077ff3de unix: Limit named pipe permissions to the current user
Named pipes created using the "pipe://" file access scheme should not be
world-writable or readable. Limit their access to the current user by
creating them with 0600 permissions instead of 0666.
2024-09-06 19:40:31 +01:00
Andrew Price f49c9d7cd1 unix: Don't create world-writable files when safe save is enabled
When the "filesystem/on_save/safe_save_on_backup_then_rename" option is
enabled files are created with 0666 permissions (-rw-rw-rw-) which is
too loose. Use 0644 (-rw-r--r--) instead which is how the files would
normally be created with the setting disabled and the system umask taken
into account.
2024-09-06 17:36:21 +01:00
bruvzg da4f5fb953
[FileSystem Dock] Add symlink indicator and tooltip. 2024-09-06 14:55:07 +03:00
A Thousand Ships 7139f46c9a
[Windows] Use `GetFileTime` for `FileAccess`
Prevents DST from rearranging file times.
2024-09-06 13:53:46 +02:00
bruvzg 10f3c1f587
Add support for non-blocking IO mode to `OS.execute_with_pipe`. 2024-09-06 14:16:39 +03:00
bruvzg 3e936e795c
Fix renaming directory symlinks on Linux. 2024-09-06 13:22:20 +03:00
BlueCube3310 a89f4fa5a9 LightmapGI: Pack L1 SH coefficients for directional lightmaps 2024-09-05 22:46:58 +02:00
Miley Hollenberg 5e7fdef343
Fixed compiler error
Would cause a compiler error when compiled with `scons p=ios target=template_debug ios_simulator=yes arch=arm64`
2024-09-05 11:01:20 +02:00
Rémi Verschelde f8aa1f8c57
Merge pull request #96502 from clayjohn/GLES3-screen-texture-angle
Only use backbuffer mipmaps in `SCREEN_TEXTURE` when generated.
2024-09-04 18:55:42 +02:00
Rémi Verschelde 82d7531a2e
Merge pull request #95990 from Breush/76166-sky-auto-radiance
Sky: Adapt radiance size if `AUTOMATIC_MODE` resolves to `REALTIME`
2024-09-04 17:12:02 +02:00
Alexis Breust 44e526d3d5 Sky: No more auto-selecting REALTIME mode if radiance is not 256 2024-09-04 10:54:08 +02:00
bruvzg d4e78b8db5
Store GLES over GL status in the OS to avoid direct renderer includes in the editor. 2024-09-03 16:11:59 +03:00
Rémi Verschelde cd2f14e66b
Merge pull request #96455 from Praytic/msaa-support-macos
Enable MSAA support for all non-web platforms
2024-09-03 11:43:59 +02:00
Rémi Verschelde 6de2d31a61
Merge pull request #96351 from stuartcarnie/sgc/metal_light_betsy
Metal: Enable for betsy and lightmapper modules in compatibility mode
2024-09-03 11:43:42 +02:00
Rémi Verschelde a2b64ed544
Merge pull request #95961 from RadiantUwU/fix-mesh-recursion
Fix shadow mesh recursion.
2024-09-03 11:43:16 +02:00
Rudolph Bester 359aaa48ee Fixed OpenGL shadow textures not honoring texture type when reusing textures 2024-09-03 07:12:51 +02:00
clayjohn d2f5c1a552 Only use backbuffer mipmaps in SCREEN_TEXTURE when generated. 2024-09-02 17:04:17 -07:00
Rémi Verschelde 4e5dd4fa5d
Merge pull request #96413 from Maran23/gpuparticles-amd-fix
Fix GPUParticles are not rendered for older AMD GPUs with OpenGL+Angle
2024-09-02 12:13:49 +02:00
Rémi Verschelde f50ead48b0
Merge pull request #96128 from BlueCube3310/vram-profiler-texture-mem
Fix incorrect parameters for layered textures in VRAM texture memory profiler
2024-09-02 12:13:11 +02:00
Rémi Verschelde 61be39aed2
Merge pull request #96045 from darksylinc/matias-TheForge-pr02
Add `VK_EXT_astc_decode_mode` support
2024-09-02 12:13:04 +02:00
Rémi Verschelde 527c716784
Merge pull request #92167 from BlueCube3310/file-access-the-final-season-part3-ep2
Reduce code duplication in FileAccess
2024-09-02 12:12:42 +02:00
Praytic fc955fa89f Enable MSAA support for all non-web platforms
MSAA support is built into GLES3 core, eliminating the need to check for GL_EXT_framebuffer_multisample, which was necessary only in GLES2 due to the lack of inherent multisample framebuffer support. This commit corrects an oversight from GLES2-based code, ensuring compatibility with GLES3 where multisampling is natively supported without extensions.
2024-09-01 18:26:49 -07:00
Marius Hanl 9cc9df52eb Fix GPUParticles are not rendered for older AMD GPUs with OpenGL+Angle
Using a better and faster algorithm for the float conversions
2024-09-01 20:22:30 +02:00
Yahkub-R 6db8e3b6b1 Fix Windows importer issue with new file detection 2024-09-01 10:24:29 -04:00
BlueCube3310 205a10e0ae Reduce code duplication in FileAccess 2024-09-01 12:39:32 +02:00
BlueCube3310 e74bc3079a Fix incorrect parameters for layered textures in Video RAM texture memory profiler 2024-09-01 11:49:30 +02:00
Radiant 70860aafd8 Fix shadow mesh recursion. 2024-08-31 22:31:43 +03:00
Stuart Carnie a7a245de92
Metal: enable for betsy and lightmapper modules
To support this, the rendering_context_driver_metal.h header was updated
to recognise when it is included in non-Objective-C source files.
2024-08-31 08:29:07 +10:00
Patrick Dawson f381cee82f Metal: bind index buffer with offset 2024-08-30 22:37:51 +02:00
bruvzg b130cf0361 [Windows] Fix handling X: paths. 2024-08-29 15:58:59 +03:00
Rémi Verschelde fd7239cfab
Merge pull request #96258 from SaracenOne/win32_rename_fix
Fix Win32 rename function.
2024-08-29 10:36:53 +02:00
Saracen 6069cb3475 Fix Win32 rename function. 2024-08-29 03:54:02 +01:00
rune-scape f04a9bb630 Avoid const_cast in mesh_storage.h 2024-08-28 14:46:03 -07:00
Alula 346cbc7f1f
Add support for compiling with VS clang-cl toolset 2024-08-28 13:30:44 -05:00
Rémi Verschelde f648de1a83
Merge pull request #96209 from stuartcarnie/sgc/96077/fix_sdfgi
Metal: Use correct operator to ensure specialisation constants are sorted
2024-08-28 13:14:34 +02:00
Stuart Carnie 4b02c9bb0a
Metal: Use correct operator to ensure all specialisation constants are applied
Fixes #96077
2024-08-28 20:07:19 +10:00
bruvzg ae334e069c
[Windows] Always use absolute UNC paths and long path aware APIs, add "long path aware" flag to the application manifest. 2024-08-28 11:15:57 +03:00
Chaosus f538376c3b Add `CLIP_SPACE_FAR` built-in to spatial shader 2024-08-27 08:48:46 +03:00
Rémi Verschelde 850067d686
Merge pull request #96089 from stuartcarnie/sgc/metal_tidy_up
Metal: Minor improvements to shader cache
2024-08-26 22:45:54 +02:00
Stuart Carnie 6de70e6b8a
Metal: Minor improvements to #96052; update logger subsystem name 2024-08-27 05:47:06 +10:00
BlueCube3310 e8b4568900 Compatibility: Fix crash when initializing certain compressed layered textures 2024-08-26 13:24:00 +02:00
Rémi Verschelde 28a72fa434
Merge pull request #95934 from bruvzg/win_ang_fb
Enable fallback from ANGLE to native and improve ANGLE error messages.
2024-08-25 22:51:38 +02:00
Rémi Verschelde 5f7060c18a
Merge pull request #96052 from stuartcarnie/sgc/metal_shader_compilation
Metal: Improve startup times by using concurrent shader compilation APIs
2024-08-25 22:24:24 +02:00
bruvzg a07f92a81c [Windows] Move __REQUIRED_RPCNDR_H_VERSION__ to the header. 2024-08-25 22:57:35 +03:00
bruvzg f8a6c0e8ab
Enable fallback from ANGLE to native and improve ANGLE error messages. 2024-08-25 21:19:54 +03:00
Rémi Verschelde 68d188d521
Merge pull request #95888 from clayjohn/Lightmap-SH-coefficients
Use correct lightmap coefficients to ensure that the directional lightmap mode looks correct
2024-08-25 20:18:18 +02:00
Matias N. Goldberg 59d0422dcd Disable extra memory tracking by default
PR #90993 added several debugging utilities.

Among them, advanced memory tracking through the use of custom
allocators and VK_EXT_device_memory_report.

However as issue #95967 reveals, it is dangerous to leave it on by
default because drivers (or even the Vulkan loader) can too easily
accidentally break custom allocators by allocating memory through std
malloc but then request us to deallocate it (or viceversa).

This PR fixes the following problems:
 - Adds --extra-gpu-memory-tracking cmd line argument
 - Adds missing enum entries to
RenderingContextDriverVulkan::VkTrackedObjectType
 - Adds RenderingDevice::get_driver_and_device_memory_report
    - GDScript users can easily check via print(
RenderingServer.get_rendering_device().get_driver_and_device_memory_report()
)
- Uses get_driver_and_device_memory_report on device lost for appending
further info.

Fixes #95967
2024-08-24 20:52:39 -03:00
Stuart Carnie 2ef1ef63a5
Metal: Improve startup times by using concurrent shader compilation APIs 2024-08-25 09:05:58 +10:00
Matias N. Goldberg d26c2f86cc Add VK_EXT_astc_decode_mode support
The work was performed by collaboration of TheForge and Google. I am
merely splitting it up into smaller PRs and cleaning it up.
2024-08-24 17:58:12 -03:00
Rémi Verschelde e3550cb20f
Merge pull request #95975 from darksylinc/matias-TheForge-hotfix
Fix build error in arm32
2024-08-24 01:01:37 +02:00
Matias N. Goldberg 38ae58bda2 Fix build error in arm32
Fixes #95973
2024-08-23 12:52:47 -03:00
Stuart Carnie bbc7962fe2
Metal: fix artefacts for mobile render method and return false for multi-view support 2024-08-22 21:34:53 +10:00
Rémi Verschelde 568589c9d8
Merge pull request #90993 from darksylinc/matias-TheForge
Add debug utilities for Vulkan
2024-08-22 00:38:22 +02:00
Rémi Verschelde 37ae2a2900
Merge pull request #95921 from akien-mga/scons-validate-opt-in-drivers
SCons: Better validation for platform-specific opt-in drivers
2024-08-22 00:10:56 +02:00
Rémi Verschelde 39b77ea04e
Merge pull request #95790 from aaronfranke/rect-aabb-support
Simplify Rect2/AABB `get_support` function
2024-08-22 00:10:39 +02:00
Matias N. Goldberg 364f916f3f
Add debug utilities for Vulkan
Features:
- Debug-only tracking of objects by type. See
get_driver_allocs_by_object_type et al.
 - Debug-only Breadcrumb info for debugging GPU crashes and device lost
 - Performance report per frame from get_perf_report
- Some VMA calls had to be modified in order to insert the necessary
memory callbacks

Functionality marked as "debug-only" is only available in debug or dev
builds.

Misc fixes:
 - Early break optimization in RenderingDevice::uniform_set_create

============================

The work was performed by collaboration of TheForge and Google. I am
merely splitting it up into smaller PRs and cleaning it up.
2024-08-21 23:48:08 +02:00
Rémi Verschelde 6e9bcc0f18
SCons: Better validation for platform-specific opt-in drivers
This replaces cryptic compilation errors with a clear error message
and early build termination.
2024-08-21 22:53:34 +02:00
clayjohn f4ccba7508 Use correct lightmap coefficients to ensure that the directional lightmap mode looks correct
Also remove the metallic option from directional lightmap as it is guaranteed to return negative numbers in many cases
2024-08-21 10:24:32 -07:00
Stuart Carnie 2d0165574d
Add Metal support for macOS (arm64) and iOS 2024-08-20 12:11:06 +02:00
Stuart Carnie 41875d8aef
macOS/iOS: Fix various warnings when targeting newer SDKs 2024-08-20 11:55:21 +02:00
Rémi Verschelde 033054f182
Merge pull request #95838 from olawlor/vertex65536bugfix
Fix GLES3 crash with Mesh surface with exactly 65536 vertices
2024-08-20 10:03:06 +02:00
Rémi Verschelde 6a9ecdcf0c
Merge pull request #91818 from rburing/fti_multimesh
Physics interpolation: `MultiMesh`
2024-08-20 10:01:46 +02:00
Rémi Verschelde 8acd82f70e
Merge pull request #89919 from BlueCube3310/bicubic-lightmap
Implement bicubic sampling for lightmaps
2024-08-20 10:01:41 +02:00
Rémi Verschelde 333f0f910f
Merge pull request #86000 from jsjtxietian/add-missing-model_normal_matrix
Add `model_normal_matrix` for fragment shader
2024-08-20 10:01:36 +02:00
Orion Lawlor bde165ccb3
Fix GLES3 crash with Mesh surface with exactly 65536 vertices
Fixes #95837.
2024-08-20 09:08:16 +02:00
Aaron Franke 7db24a9ad5
Simplify and fix Rect2/AABB get_support function 2024-08-19 23:55:31 -07:00
jsjtxietian e698351db2 Add model_normal_matrix for fragment shader 2024-08-20 12:39:29 +08:00
Rémi Verschelde 6bf64027b7
Merge pull request #94785 from Chaosus/shader_fix_samplers_order
Fix texture samplers to not being last in the property list
2024-08-19 16:05:21 +02:00
Rémi Verschelde 8b39d7f326
Merge pull request #95666 from kleonc/parallax2d_repeat_offsets_relative_to_source
Fix `Parallax2D` repeats being not relative to its transform
2024-08-19 14:34:21 +02:00
Rémi Verschelde c6400a8fe4
Merge pull request #95662 from clayjohn/GLES3-sky-fog
Add fixed fog to the sky in the Compatibility renderer
2024-08-19 12:09:10 +02:00
Rémi Verschelde 824a97120e
Merge pull request #92213 from clayjohn/ambient-disabled
Disable all sources of ambient light when `ambient_light_disabled` render mode is used
2024-08-19 12:08:31 +02:00
kleonc 1bd8372813 Fix Parallax2D repeats being not relative to its transform 2024-08-19 11:43:16 +02:00
BlueCube3310 ef9bb1a207 Implement support for bicubic lightmap filtering
Co-authored-by: Calinou <hugo.locurcio@hugo.pro>
2024-08-19 09:52:09 +02:00
Ricardo Buring 1728f80e7c Fixed Timestep Interpolation: MultiMesh
Adds fixed timestep interpolation to multimeshes.

Co-authored-by: lawnjelly <lawnjelly@gmail.com>
2024-08-18 17:14:59 +02:00
clayjohn 578049b7b9 Add fixed fog to the sky in the Compatibility renderer
And apply luminance multiplier after fog in RD renderer
2024-08-17 23:33:26 -07:00
Rémi Verschelde 851d0a764d
Merge pull request #95536 from jsjtxietian/rename-alpha-scissor
Fix undefined `alpha_scissor` in standard shader
2024-08-16 14:35:38 +02:00
Rémi Verschelde a298512bc4
Merge pull request #95452 from clayjohn/GLES3-skeleton
Increase precision of skeleton transforms in the skeleton shader in the Compatibility renderer
2024-08-16 10:36:16 +02:00
Rémi Verschelde ae9fb96a36
Merge pull request #95433 from dsnopek/openxr-composition-layers-srgb
OpenGL: Unconditionally do `glDisable(GL_FRAMEBUFFER_SRGB)` because we do our own sRGB conversion
2024-08-16 10:35:56 +02:00
Rémi Verschelde a8bbb09bd5
Merge pull request #95143 from TV4Fun/fix_non_windows_library_load
Fix reload of GDExtension libraries in framework package on macOS
2024-08-16 10:35:19 +02:00
Rémi Verschelde 074d8b0938
Merge pull request #94835 from MileyHollenberg/bugfix-powervr-gpu-crash
Fix crash on powerVR GPUs when a cached shader wasn't loaded in properly
2024-08-16 10:34:55 +02:00
Rémi Verschelde 1fea6ed01c
Merge pull request #94733 from RandomShaper/d3d12_tex_barr_fast
D3D12: Be explicit about all-resources texture barriers
2024-08-16 10:34:49 +02:00
Rémi Verschelde cddf321d30
Merge pull request #94731 from RandomShaper/d3d12_no_null_barr_grps
D3D12: Avoid validation warnings about zero-sized barrier groups
2024-08-16 10:34:42 +02:00
jsjtxietian 970a237c20 Fix undefined `alpha_scissor` in standard shader 2024-08-15 11:44:11 +08:00
clayjohn 1bf594fb5a Increase precision of skeleton transforms in the skeleton shader in the Compatibility renderer 2024-08-12 16:12:04 -07:00
David Snopek dfcff4ef46 OpenGL: Unconditionally do `glDisable(GL_FRAMEBUFFER_SRGB)` because we do our own sRGB conversion 2024-08-12 12:40:38 -05:00
Hannah Crawford a54b71bbdf Add `shadow_caster_mask` to Light3D. 2024-08-12 00:17:11 +01:00
Joel Croteau f44d6a235f Fix reload of GDExtension libraries in framework package on macos
`GDExtension::open_library` has a check in it to see if the library was loaded
from a temp file, and if it was to restore the original name as that is the one
we actually care about. This check is breaking extension reloading on Mac when
the library path is to a framework folder, as the file inside the framework
will not generally be the same name as the folder.

This check also shouldn't be necessary even on Windows, which is the only
platform that uses `generate_temp_files`, since disposal of the created temp
file is handled within `OS_Windows::open_dynamic_library`, and
`GDExtension::open_library` (which is the only function to call
`open_dynamic_library` with a `p_data` argument) only cares about the original
library file path and has to do extra work to remove the name of the temp file.
Instead, I have removed that check and set `OS_Windows::open_dynamic_library`
to return the name of the original file and not the name of the copy.

This fixes GDExtension reloading on macOS. I do not have a Windows machine
available to test that it still works properly on Windows, so someone should
check that before merging this.
2024-08-08 08:31:49 -06:00
Rémi Verschelde 32eb97fd2a
Merge pull request #95074 from RandomShaper/d3d12_exit_crash
D3D12: Avoid crash on exit
2024-08-08 10:16:24 +02:00
Pedro J. Estébanez 33bd994087 D3D12: Avoid crash on exit 2024-08-02 18:18:10 +02:00
Pedro J. Estébanez 8cf2903c7f D3D12: Avoid cases of redundant render target clears 2024-08-02 14:26:17 +02:00
Alvin Wong de4ba295f5 Optimize ANGLE on D3D11 to remove an extra blit
Support the extension EGL_ANGLE_surface_orientation, which allows ANGLE
to skip an extra blit from an intermediate buffer to the D3D11 swap
chain back buffer for inverting the Y axis due to the difference in
coordinate systems. Instead we do our inverting in RasterizerGLES3.
2024-07-31 00:35:52 +08:00
Miley Hollenberg 1c31e30359 Fixed crash on PowerVR GE8320 GPUs 2024-07-30 08:43:04 +02:00
Yuri Rubinsky e41048e16e Fix texture samplers to not being last in the property list 2024-07-29 09:19:09 +03:00
Bastiaan Olij 1eb0039b6e Fix regression around OpenGL swapchain optimisation for OpenXR 2024-07-29 12:46:58 +10:00
Pedro J. Estébanez 3260437afc D3D12: Be explicit about all-resources texture barriers 2024-07-25 15:06:42 +02:00
Dario bb0a8e56e1 D3D12: Avoid validation warnings about zero-sized barrier groups 2024-07-25 11:47:34 +02:00
clayjohn 7eac9e855b Remove linearization of canvas modulate in GLES3 backend
The GLES3 renderer is always in sRGB space, even when using an HDR format
2024-07-24 10:27:25 -07:00
Feiyue Zhang 6f30df4b6a
Linearize color if HDR 2D is on 2024-07-24 09:49:50 +02:00
Rémi Verschelde ad1955a63d
Merge pull request #94628 from Chaosus/rendering_fix_crash
Fix crash when assigning more textures than expected to texture array
2024-07-23 13:08:18 +02:00
Rémi Verschelde 6a79d848a8
Merge pull request #94564 from rothej/fix-94183
Fix FOG shader issue in Compatibility mode
2024-07-23 13:08:12 +02:00
Joshua Rothe d751545391
Fix FOG shader issue in Compatibility mode 2024-07-23 11:25:10 +02:00
cosformula fa8b4d84fb
GLES3: Fix directional shadow on Metal ANGLE 2024-07-23 11:24:13 +02:00