Commit Graph

3973 Commits

Author SHA1 Message Date
Rémi Verschelde 947f5a8741
Merge pull request #91247 from AThousandShips/callable_fix
Fix unsafe uses of `Callable.is_null()`
2024-04-29 10:10:32 +02:00
Rémi Verschelde c7a73e684d
Merge pull request #71975 from AThousandShips/file_case_warning
[Windows] Improve warning for path casing.
2024-04-29 10:09:25 +02:00
Rémi Verschelde 45c6f18128
Merge pull request #61006 from bruvzg/libbacktrce
[Windows] Enable crash reporter on MinGW builds.
2024-04-29 10:09:22 +02:00
bruvzg fc948e87f6 Add symlink API support for Windows, expose symlink methods. 2024-04-28 19:59:34 +03:00
A Thousand Ships 3679ea5d26
[Windows] Improve warning for path casing. 2024-04-27 16:49:47 +02:00
A Thousand Ships 31e7ee63f2
Fix unsafe uses of `Callable.is_null()`
`Callable.is_null()` is not equivalent to `!Callable.is_valid()` and
doesn't guarantee the call is valid.
2024-04-27 16:22:57 +02:00
Bastiaan Olij d2d22748b4 Fix issue in shadow to opacity 2024-04-26 21:54:26 +10:00
Rémi Verschelde a07f89bfb2
Merge pull request #91176 from clayjohn/GL-adjustments
Add adjustments and color correction to Compatibility renderer
2024-04-26 11:08:56 +02:00
Rémi Verschelde 490e636289
Merge pull request #91169 from DarioSamo/render_pass_2_fallback_fix
Fix crash on compatibility fallback when vkCreateRenderPass2KHR is unavailable.
2024-04-26 11:08:53 +02:00
Rémi Verschelde 22c8a2785d
Merge pull request #90920 from clayjohn/2D-light-cull
Exit light calculation early when pixel outside of light bounding rectangle
2024-04-26 11:08:29 +02:00
clayjohn e8bb0a5719 Add adjustments and color correction to Compatibility renderer 2024-04-25 12:24:51 -07:00
Dario b95e18f557 Fix crash on compatibility fallback when vkCreateRenderPass2KHR is unavailable. 2024-04-25 14:03:02 -03:00
Rob Blanckaert ffe0b869f5 Add LIGHT_VERTEX to fragment shader
Adds a new variable to the fragment shader to specify
the vertex position used when calculating lighting.
2024-04-25 06:56:02 -07:00
cosparks 6d0dca76c0 Fixes SDF Collision Enable/Disable
- sets LightOccluderInstance field when sdf collision is updated
- adds check for light occluder sdf_collision field in 2d renderers
2024-04-22 20:27:56 -07:00
bruvzg c1b34672f9
[Windows] Enable crash reporter on MinGW builds, use libbacktrace to generate stack trace from DWARF symbols. 2024-04-22 16:19:37 +03:00
Rémi Verschelde 504d01b61e
Merge pull request #90403 from bruvzg/file_resize
[FileAccess] Implement `resize` method.
2024-04-22 12:51:55 +02:00
clayjohn 506e93a207 Exit light calculation early when pixel outside of light bounding rectangle
This hugely improves the performance of rendering PointLight2Ds
2024-04-19 16:10:11 -07:00
Fredia Huya-Kouadio 764de7fe31 Collapse the gdextension arguments into the `GDExtensionData` struct
This is used to reduce the number of arguments to `OS::open_dynamic_library(...)`.
2024-04-19 07:56:02 -07:00
Fredia Huya-Kouadio ede88cf59d Fix loading GDExtension dependencies on Android 2024-04-19 07:55:08 -07:00
Oxi 1815871b90 Fixed unshaded mode lightmaps 2024-04-17 10:38:54 +01:00
Rémi Verschelde 7210d6cb43
Merge pull request #90358 from KoBeWi/finding_errors_in_other_apps
Add `OS.get_process_exit_code()` method
2024-04-16 13:30:41 +02:00
kobewi dce4a3e4c2 Add get_process_exit_code() method 2024-04-16 12:46:15 +02:00
Rémi Verschelde c951421c99
Merge pull request #90268 from RandomShaper/wtp_servers
Use WorkerThreadPool for Server threads (enhanced)
2024-04-15 10:12:00 +02:00
bruvzg 88b3e68f93
[FileAccess] Implement `resize` method. 2024-04-12 19:20:49 +03:00
bruvzg 57fde36f31
[Unix / DirAccess] Fix removing directory symlinks with `remove`, ensure `erase_contents_recursive` is not following directory symlinks. 2024-04-12 10:06:49 +03:00
Rémi Verschelde e73f40e260
Merge pull request #87117 from DmitriySalnikov/rename_pdb
Add renaming of PDB files to avoid blocking them
2024-04-11 11:02:31 +02:00
Juan Linietsky 65686dedf9 Use WorkerThreadPool for Server threads
* Servers now use WorkerThreadPool for background computation.
* This helps keep the number of threads used fixed at all times.
* It also ensures everything works on HTML5 with threads.
* And makes it easier to support disabling threads for also HTML5.

CommandQueueMT now syncs with the servers via the WorkerThreadPool
yielding mechanism, which makes its classic main sync semaphore
superfluous.

Also, some warnings about calls that kill performance when using
threaded rendering are removed because there's a mechanism that
warns about that in a more general fashion.

Co-authored-by: Pedro J. Estébanez <pedrojrulez@gmail.com>
2024-04-10 18:47:42 +02:00
Pedro J. Estébanez c28f5901c7 Polish interaction between windowing, input and rendering
- Adapt GL make/release API to the current architecture.
- Fix DisplayServer being locked while dispatching input (prevent deadlocks).
2024-04-10 18:47:42 +02:00
Rémi Verschelde c59f493620
Merge pull request #89729 from jitspoe/master.shadow_distance_fade_optimization
Shadow fade for omni lights actually stops the shadow from updating while faded out to improve performance.
2024-04-10 14:21:56 +02:00
Bastiaan Olij 509d8dba2a Add reflection probe support to compatibility renderer using 2 probe approach. 2024-04-09 16:53:28 +10:00
ArthasMenethil 17e489b93d Fix OpenGL: _shadow_atlas_find_shadow: Condition "!sli" is true. 2024-04-05 09:24:15 +07:00
DmitriySalnikov b73e740786 Add renaming of PDB files to avoid blocking them 2024-04-05 00:14:23 +03:00
Rémi Verschelde a28be933ee
Merge pull request #89398 from clayjohn/visual-debugger-coverage
Increase coverage of timestamps for visual profiler
2024-04-04 14:31:19 +02:00
Rémi Verschelde b4b4919736
Merge pull request #88816 from joined72/gles3_gpuparticles2d_fixes
Fix CPU/GPUParticles2D bugs on Compatibility Rendering (GLES3) on Adreno 3XX devices.
2024-04-04 14:31:07 +02:00
Khasehemwy d950f5f838
Use Reverse Z for the depth buffer 2024-04-04 13:54:15 +02:00
clayjohn ac6c648645 Increase coverage of timestamps for visual profiler 2024-04-03 19:29:02 -07:00
joined72 4df39dc140 Fix CPU/GPUParticles2D bugs on Compatibility Rendering (GLES3) on Adreno 3XX devices. 2024-04-02 11:24:13 +02:00
bruvzg 082b420c0a
Implement `OS.execute_with_pipe` method to run process with redirected stdio.
Implement `pipe://*` path handling for creation of named pipes.
2024-03-27 11:41:16 +02:00
Hugo Locurcio 4a615924f8 Improve warning messages related to Vulkan pipeline cache
This gives better explanations on why the cache may have been invalidated,
along with usual consequences.

These messages have also been moved to verbose prints, as users
cannot do anything to resolve them specifically (so they are mostly
relevant to developers).
2024-03-26 22:42:27 +01:00
jitspoe a0969a0931 Shadow fade for omni lights actually stops the shadow from updating while faded out to improve performance. 2024-03-25 21:25:56 -04:00
ppphp d4e1a74efb Add 'override' mark to ResourceFormat class 2024-03-25 04:06:34 +08:00
Rémi Verschelde cd4e4c0fcc
Merge pull request #89111 from AThousandShips/vec_use
Use `Vector*` component-wise `min/max/clamp` functions where applicable
2024-03-24 01:14:51 +01:00
Ricardo Buring 2ed2ccc2d8 Fixed Timestep Interpolation (2D)
Adds fixed timestep interpolation to the rendering server (2D only).
Switchable on and off with a project setting (default is off).

Co-authored-by: lawnjelly <lawnjelly@gmail.com>
2024-03-23 12:28:36 +01:00
A Thousand Ships 79ba22a73f
Use `Vector*` component-wise `min/max/clamp` functions where applicable 2024-03-20 13:47:42 +01:00
Rémi Verschelde 453485aede
Merge pull request #89270 from Repiteo/enforce-typename-in-templates
Enforce template syntax `typename` over `class`
2024-03-14 22:34:37 +01:00
Thaddeus Crews 3b3e2374c9
clang-tidy: Enforce `modernize-use-nullptr` 2024-03-12 10:59:53 -05:00
Rémi Verschelde b0d07b1bc2
Merge pull request #86936 from akx/env-utf-8
Attempt parsing environment variables as UTF-8
2024-03-11 14:02:22 +01:00
AlexOtsuka 179b0786c6 Fix audio crackling issues due to incorrect WASAPI buffer size 2024-03-08 14:05:39 +01:00
Rémi Verschelde f8140a4e9a
Merge pull request #89253 from Calinou/debug-draw-modes-ignore-decals-2
Make Overdraw, Lighting and Shadow Splits debug draw modes ignore decals
2024-03-08 13:09:40 +01:00
Rémi Verschelde 1186d4a8df
Merge pull request #89094 from permelin/fix-particle-userdata-gles3
Fix `USERDATA` built-ins for GLES3 particle shaders
2024-03-08 13:09:30 +01:00
Thaddeus Crews 9903e6779b
Enforce template syntax `typename` over `class` 2024-03-07 22:39:09 -06:00
Hugo Locurcio 26a220bd31
Make Overdraw, Lighting and Shadow Splits debug draw modes ignore decals
This also makes the Overdraw and Shadow Splits debug draw modes ignore fog.
The Lighting debug draw mode still displays fog as that debug draw mode
is intended to preview scene lighting, and fog has an impact on how
lighting is perceived.
2024-03-07 17:40:49 +01:00
Rémi Verschelde ec55028f26
Merge pull request #89209 from RandomShaper/padding_for_dummies
Make shader binary alignment handling simpler and more robust
2024-03-06 13:17:09 +01:00
Pedro J. Estébanez f77b4d155b Make shader binary alignment handling simpler and more robust
Bonus:
Also simplified the rounding to block size in image size calculations.
2024-03-06 11:48:23 +01:00
Rémi Verschelde e74f4ea115
Vulkan: Don't warn about pipelines cache if missing
It used to warn when opening a new project because no cache pre-exists,
which isn't particularly helpful.

Also include the rendering method in the cache filename, as it differs
between Forward+ and Mobile for a same GPU.
2024-03-05 16:39:14 +01:00
Rémi Verschelde a369796741
Merge pull request #89168 from SlugFiller/fix-msvc-2017-gles-namespace-v2
Fix build on MSVC 2017
2024-03-05 09:56:19 +01:00
Rémi Verschelde a52e575652
Merge pull request #89134 from BastiaanOlij/fix_recursive_reflection_probes
Fix never ending loop with overlapping probes
2024-03-05 09:56:05 +01:00
Rémi Verschelde 86807721e3
Merge pull request #88787 from dsnopek/webxr-depth-draw-fix
Fix rendering issue with depth in WebXR
2024-03-05 09:55:56 +01:00
Rémi Verschelde 16fa6bc44b
Merge pull request #88540 from bruvzg/d3d12_guids2
[D3D12] Define GUIDs directly.
2024-03-05 09:55:46 +01:00
Rémi Verschelde 5d20628c31
Merge pull request #88496 from bruvzg/d3d12_dyn_load
[Windows] Make D3D12 loading dynamic to support pre-Windows 10 versions.
2024-03-05 09:55:41 +01:00
SlugFiller b999893c9d Fix build on MSVC 2017 2024-03-05 06:57:53 +02:00
Bastiaan Olij a5d3d23db4 Fix never ending loop with overlapping probes 2024-03-05 10:07:56 +11:00
David Snopek e35ccf92d0 Fix rendering issue with depth in WebXR 2024-03-04 15:13:35 -06:00
Rémi Verschelde a47e38b175
Merge pull request #89038 from RandomShaper/d3d12_sm
Direct3D 12: Fix shader model support check for devices not aware of the highest ones
2024-03-04 20:43:42 +01:00
Pedro J. Estébanez bed48f37aa Direct3D 12: Fix shader model support check for devices not aware of the highest ones 2024-03-04 13:54:28 +01:00
Rémi Verschelde 006437005d
Merge pull request #89064 from omar-polo/file-access-unix
Fix FileAccessUnix on OpenBSD where `UF_HIDDEN` isn't supported
2024-03-04 13:33:58 +01:00
Rémi Verschelde 3be5d9b01a
Merge pull request #89046 from permelin/fix-particle-aabb-recalc-with-userdata
Fix error in AABB calculation for particles with USERDATA
2024-03-04 13:33:33 +01:00
markdibarry a62870956a Add new Parallax2D node 2024-03-03 15:46:40 -05:00
Per Melin 24b58c655a Fix USERDATA built-ins for GLES3 particle shaders 2024-03-02 18:41:38 +01:00
Per Melin 853935a5c9 Fix error in AABB calculation for particles with USERDATA
Selecting "Generate AABB" on a 3D particle node in the editor would not work
and printed an error about incorrect buffer size if the particle shader used
one or more of the USERDATA build-ins.
2024-03-02 14:26:09 +01:00
Omar Polo 32877ae994 fix FileAccessUnix on OpenBSD: there is no UF_HIDDEN
Part of the joint effort with @rfht to port Godot 4 on OpenBSD.
2024-03-01 19:33:49 +00:00
Rémi Verschelde 3a08c646ee
Pre-commit: Update to clang-format 17.0.6 and black 24.2.0 2024-02-28 14:25:35 +01:00
clayjohn 2c7dd35822 Ensure proper vertex input masks are used in 2D compatibility renderer 2024-02-27 15:39:20 -08:00
Pedro J. Estébanez 3f530c7091 Direct3D 12: Implement proper fallback for format casting 2024-02-27 17:20:01 +01:00
Rémi Verschelde cfe344f12f
Merge pull request #87872 from RandomShaper/d3d12_tex_mem_is_life
Direct3D 12: Enhance management of texture data life cycle
2024-02-27 16:36:59 +01:00
Pedro J. Estébanez d47021ac6c Direct3D 12: Enhance management of texture data life cycle 2024-02-27 15:45:19 +01:00
Rémi Verschelde b38d5efd6a
Merge pull request #88873 from clayjohn/GLES3-compositor-free
Add `compositor_free` branch in Compatibility scene renderer free function
2024-02-27 10:18:35 +01:00
Rémi Verschelde 415a334f5f
Merge pull request #88745 from clayjohn/GLES3-system-fbo
Consistently use `system_fbo` instead of binding 0 as it is needed for iOS devices
2024-02-27 10:17:51 +01:00
clayjohn 57f8b885de Add compositor_free branch in Compatibility scene renderer free function 2024-02-26 17:56:55 -08:00
clayjohn 294f16c862 Consistently use system_fbo instead of binding 0 as it is needed for iOS devices 2024-02-25 13:52:41 -08:00
Robert Yevdokimov 13e82094ee Remove word duplicates in comments and strings, and fix casing and punctuation 2024-02-23 17:28:28 -05:00
Rémi Verschelde 5fd9d0891f
SCons: Add proper MinGW support to D3D12 deps install script
Fix a couple GCC warnings.
2024-02-23 22:13:22 +01:00
Rémi Verschelde 0072a0ba31
Merge pull request #88684 from clayjohn/GLES3-visibility-notifier
Implement VisibilityNotifier3D in the compatibility backend
2024-02-23 11:29:50 +01:00
clayjohn 3c2f30ed23 Implement VisibilityNotifier3D in the compatibility backend 2024-02-22 12:35:24 -08:00
Rémi Verschelde d646b7fef6
Merge pull request #88560 from DarioSamo/rdd_execute_and_present
Merge execute and present commands for RenderingDeviceDriver.
2024-02-22 11:23:19 +01:00
Alexander Hartmann e17cecf54a Fix Compatibility Rendering (GLES3) on old and low budget devices.
Co-Authored-By: joined72 <19651914+joined72@users.noreply.github.com>
2024-02-22 00:24:08 +01:00
David Snopek 1e67de5e0c Fix OpenGL on Android after adding optional depth fog 2024-02-21 09:54:38 -06:00
Rémi Verschelde 04c71d943f
Merge pull request #88573 from Arthas92t/master
Fix shader cache with transform feedback on some Android devices
2024-02-21 08:57:32 +01:00
Bastiaan Olij c2a4657a70 Change glow calculation back to max(r,g,b) 2024-02-21 11:33:10 +11:00
ArthasMenethil d31d3e503e Fix shader cache with transform feedback on some android devices 2024-02-21 07:31:40 +07:00
Rémi Verschelde 652438a395
Merge pull request #87360 from BastiaanOlij/gles_glow
Implement glow/bloom on compatibility renderer
2024-02-20 23:59:48 +01:00
Rémi Verschelde 292f4c7f97
Merge pull request #80214 from BastiaanOlij/rendering_effect
Implement hooks into renderer
2024-02-20 23:59:27 +01:00
Dario ee2d8f68ba Merge execute and present commands for RenderingDeviceDriver. 2024-02-19 13:09:03 -03:00
Rémi Verschelde 8a3a559023
Merge pull request #86620 from fbcosentino/midi_device_id
Add MIDI controller device index to `InputEventMIDI.device` property.
2024-02-19 17:06:22 +01:00
bruvzg f4ca6a856a
[Windows] Make D3D12 loading dynamic to support pre Windows 10 versions. 2024-02-19 15:08:04 +02:00
bruvzg 4d2204455f
[D3D12] Define GUIDs directly. 2024-02-19 13:45:12 +02:00
Fernando Cosentino b9fd25ea18 Add MIDI controller device index to InputEventMIDI.device property.
It is possible to query the OS for the connected MIDI controllers,
but the event messages' device field was not being used. This implements
controller index being sent in InputEventMIDI messages in the device
property, matching the index from OS.get_connected_midi_inputs().

Based on the work done by @ramdor.

Closes godotengine/godot-proposals#7733

Co-authored-by: Richie <richie_github@grange-lane.co.uk>
2024-02-19 10:23:19 +00:00
Bastiaan Olij aa260e5f3d Implement glow/bloom on compatibility renderer 2024-02-19 13:29:43 +11:00
Arman Elgudzhyan 533eab89ab Fixed reversed custom AABB null check when recalculating multimesh AABBs 2024-02-18 12:07:23 -08:00
Bastiaan Olij 5a98845655 Implement hooks into renderer 2024-02-18 21:54:21 +11:00
Eidolon 08f4560e69 Add optional depth fog 2024-02-17 22:39:34 -03:00
Rémi Verschelde 564af14eeb
Merge pull request #88361 from DarioSamo/vk_present_suboptimal_fix
Handle `VK_SUBOPTIMAL_KHR` as a valid error code to fix Android performance.
2024-02-17 00:23:56 +01:00
Rémi Verschelde 59643bdb86
Merge pull request #88325 from akien-mga/texture-formats
Export: Unify settings for PC texture formats, removed obsoleted ETC feature
2024-02-17 00:23:45 +01:00
Arman Elgudzhyan 7ac8365e11 Support custom AABB within MultiMesh resources
- Supporting custom AABB on the MultiMesh resource itself allows us to prevent costly runtime AABB recalculations.
- Should also help improve CPU Particle performance.
2024-02-15 22:37:07 -08:00
Rémi Verschelde c1ad24571a
Merge pull request #88252 from RandomShaper/d3d12_slice_of_cube
Direct3D 12: Fix cubemap slicing
2024-02-15 15:45:03 +01:00
Rémi Verschelde ef5d6ccfb7
Merge pull request #86966 from Muller-Castro/value2ref-core
Add const lvalue ref to `core/*` container parameters
2024-02-15 15:44:43 +01:00
Dario 24fcee6d67 Handle VK_SUBOPTIMAL_KHR as a valid error code to fix Android performance. 2024-02-15 10:59:36 -03:00
Anatoli Babenia e25cfffc7f Add `--no-header` option to clean output
* Do not print empty line when header is disabled
* Do not print Vulcan header
* Also add "Print header" project setting (default On)
  (suggested by @kaissouDev)
* Add docs for the project setting
  (with suggestions by @Mickeon and @akien-mga)

Co-authored-by: Micky <66727710+Mickeon@users.noreply.github.com>
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2024-02-15 14:10:11 +03:00
Rémi Verschelde e457f41f9b
Remove code relative to obsoleted ETC texture format
Co-authored-by: BlueCube3310 <53150244+BlueCube3310@users.noreply.github.com>
2024-02-14 17:16:41 +01:00
Muller-Castro a8bc9f3e78 Add const lvalue ref to core/* container parameters 2024-02-14 11:20:36 -03:00
Rémi Verschelde 5e58bcd793
Merge pull request #88205 from 0x0ACB/thread_safe_texture_rid
Make `RID_Owner<Texture>` threadsafe in `TextureStorage` for GLES3
2024-02-13 23:43:40 +01:00
Rémi Verschelde 404f226d1d
Merge pull request #88254 from bruvzg/dxil_load
[D3D12] Improve shader validation handling.
2024-02-13 11:25:14 +01:00
Rémi Verschelde d3a8ae8b86
Merge pull request #88144 from GNSS-Stylist/ConDotFix
Fix invalid file path handling in Windows when there is dot in the file name
2024-02-13 11:25:01 +01:00
GNSS-Stylist c5e1b327c6
Fix invalid file path handling in Windows when there is dot in the file name
This basically re-adds dot-removal removed by the previous commit.
2024-02-13 10:39:03 +01:00
Erik Johnson eab95698cd
Fix shadows for billboarded Sprite3D's 2024-02-13 10:36:38 +01:00
bruvzg 1a2f9741cf
[D3D12] Improve shader validation handling. 2024-02-13 11:27:48 +02:00
Pedro J. Estébanez 5a0ae10f58 Direct3D 12: Fix cubemap slicing 2024-02-12 16:08:27 +01:00
Dario 73eff10c76 Finish splitting functionality of the Vulkan and D3D12 backends into RenderingDeviceDriver. 2024-02-12 10:02:18 -03:00
Rémi Verschelde b8b0eea1f8
Merge pull request #87570 from RandomShaper/d3d12_defensive
Direct3D 12: Make format feature check more defensive
2024-02-12 13:34:09 +01:00
ACB 09d2c09434 Make `RID_Owner<Texture>` threadsafe in `TextureStorage` for gles3 2024-02-11 17:23:00 +01:00
A Thousand Ships 684752e75b
Replace error checks against `size` with `is_empty` 2024-02-09 12:50:15 +01:00
bruvzg be8f60a78d [Windows] Fix windows is_path_invalid, and apply it to directory creation. 2024-02-09 10:47:07 +02:00
Rémi Verschelde 4a30fe5e7c
Merge pull request #86564 from Giwayume/feature/canvas-item-shader-custom-data
Support CUSTOM shader attributes in 2D
2024-02-08 10:53:24 +01:00
Rémi Verschelde 7223c5b54a
Fix various typos with codespell
Using 2.2.7.dev115+g0eb441d6.

Had to add `cancelled` to the ignore list, as it's a Wayland signal which
we're handling in our code, so we don't want codespell to fix that "typo".

Also includes the typo fix from #87927.

Co-authored-by: Divyanshu Shekhar <61140213+divshekhar@users.noreply.github.com>
2024-02-07 11:09:34 +01:00
Alula ea229f5148
OpenGL: Implement 3D Texture support 2024-02-05 20:10:39 +01:00
Rémi Verschelde efa587ad36
Merge pull request #87795 from RandomShaper/d3d12_dont_leak_please
Direct3D 12: Avoid terrible leak related to command allocators
2024-02-02 12:04:25 +01:00
Pedro J. Estébanez 6057ec9b06 Direct3D 12: Avoid terrible leak related to command allocators 2024-01-31 20:00:23 +01:00
Riteo 7e0f7d3abd Add Wayland support
Not everything is yet implemented, either for Godot or personal
limitations (I don't have all hardware in the world). A brief list of
the most important issues follows:

- Single-window only: the `DisplayServer` API doesn't expose enough
information for properly creating XDG shell windows.

- Very dumb rendering loop: this is very complicated, just know that
the low consumption mode is forced to 2000 Hz and some clever hacks are
in place to overcome a specific Wayland limitation. This will be
improved to the extent possible both downstream and upstream.

- Features to implement yet: IME, touch input, native file dialog,
drawing tablet (commented out due to a refactor), screen recording.

- Mouse passthrough can't be implement through a poly API, we need a
rect-based one.

- The cursor doesn't yet support fractional scaling.

- Auto scale is rounded up when using fractional scaling as we don't
have a per-window scale query API (basically we need
`DisplayServer::window_get_scale`).

- Building with `x11=no wayland=yes opengl=yes openxr=yes` fails.

This also adds a new project property and editor setting for selecting the
default DisplayServer to start, to allow this backend to start first in
exported projects (X11 is still the default for now). The editor setting
always overrides the project setting.

Special thanks to Drew Devault, toger5, Sebastian Krzyszkowiak, Leandro
Benedet Garcia, Subhransu, Yury Zhuravlev and Mara Huldra.
2024-01-30 16:44:47 +01:00
Rémi Verschelde 6809791fee
Merge pull request #87553 from clayjohn/GLES3-shader-compilation
Significantly improve the speed of shader compilation in compatibility backend
2024-01-29 21:33:49 +01:00
Rémi Verschelde fa48a51183
Merge pull request #87688 from AThousandShips/what_is_this
Remove unnecessary `this->` expressions
2024-01-29 13:18:09 +01:00
Rémi Verschelde 6305277312
Merge pull request #87670 from RandomShaper/d3d12_16bit
Direct3D 12: Query support for 16-bit operations
2024-01-29 13:18:00 +01:00
Rémi Verschelde 604f8b093e
Merge pull request #87624 from bruvzg/dx12_old_mingw
[D3D12] Add support for building with pre-11.0.0 MinGW versions, make PIX runtime opt-in.
2024-01-29 13:17:41 +01:00
Rémi Verschelde 78680cdebc
Merge pull request #87572 from RandomShaper/d3d12_custom_dbg_print
Direct3D 12: Fix and enable custom debug printing
2024-01-29 13:17:21 +01:00
A Thousand Ships 15369fdb1d
Remove unnecessary `this->` expressions 2024-01-29 09:59:18 +01:00
Pedro J. Estébanez f77f46ebff Direct3D 12: Query support for 16-bit operations 2024-01-28 12:43:58 +01:00
bruvzg dfa303f7c4
[D3D12] Add support for building with pre-11.0.0 MinGW versions, make PIX runtime opt-in. 2024-01-26 20:43:18 +02:00
Dario 39f279710c Improve stage and slice tracking behavior of RenderingDeviceGraph to fix various synchronization issues. 2024-01-26 10:12:54 -03:00
Rémi Verschelde 184009eda6
Merge pull request #87482 from RandomShaper/d3d12_spacey
Direct3D 12: Let NIR runtime data and push constants use the same register scheme as bindings
2024-01-26 11:45:49 +01:00
Rémi Verschelde 1ce40ebb44
Merge pull request #87386 from clayjohn/GLES3-lightmap-bake
Add GLES3 infrastructure for lightmap baking in the compatibility backend
2024-01-26 11:44:37 +01:00
Rémi Verschelde cd5e973d7a
Merge pull request #86717 from mrbbbaixue/d3d12-sdk-install-python
Add a python script to install Direct3D 12 SDK components.
2024-01-26 11:43:49 +01:00
Yuri Sizov 3f7ea71e88 Merge pull request #87495 from jsjtxietian/USE_LIGHT_SHADER_CODE
Clean up outdated `USE_LIGHT_SHADER_CODE` usage
2024-01-25 16:27:14 +01:00
Yuri Sizov 1b83e8ae81 Merge pull request #87460 from BastiaanOlij/stereo_ivec
Add ivec variants to multiview_uv for stereo rendering
2024-01-25 16:27:10 +01:00
Pedro J. Estébanez 47da9f8892 Direct3D 12: Fix and enable custom debug printing 2024-01-25 10:42:39 +01:00
Pedro J. Estébanez 6807cd8673 Direct3D 12: Make format feature check more defensive 2024-01-25 10:12:07 +01:00
clayjohn efb1cbaad4 Add GLES3 infrastructure for lightmap baking in the compatibility backend 2024-01-24 17:13:30 -08:00
clayjohn f1781fe9d1 Significantly improve the speed of shader compilation in compatibility backend
Compile the unlit version by default to save on both cache size and compile time
2024-01-24 14:05:03 -08:00
Yuri Sizov 6876303c85 Merge pull request #87489 from clayjohn/GLES3-scissor
Disable scissor test after rendering batches in compatibility renderer
2024-01-24 14:08:44 +01:00
Yuri Sizov 0fa5aa5c8a Merge pull request #86677 from daustria/debug-modes-opengl
Implement overdraw, lighting, and unshaded debug draw modes for opengl
2024-01-24 14:08:03 +01:00
Yuri Sizov 2ce450f8bc Merge pull request #84894 from clayjohn/tangent-error-message
Store ArrayMesh path in RenderingServer for use in error messages
2024-01-24 14:07:47 +01:00
MrBBBaiXue ea2c6f1d0b Add a python script to install Direct3D 12 SDK components.
This makes it much faster to get started with Direct3D 12 builds,
as you only need to run `python .\misc\scripts\install_d3d12_sdk_windows.py`
then run `scons d3d12=yes`.

This installs DirectX Shader Compiler, Mesa NIR, WinPixEventRuntime
and DirectX 12 Agility SDK.

- Define a default path that uses the locations from the script.
- Now the default path is in "%LOCALAPPDATA%\Godot\build_deps\"
- Updated CI to use this new python script.

Co-Authored-By: Hugo Locurcio <hugo.locurcio@hugo.pro>
2024-01-24 20:11:43 +08:00
jsjtxietian 2004ad1ac5 Clean up outdated `USE_LIGHT_SHADER_CODE` usage 2024-01-24 12:30:27 +08:00
Giwayume bb83c4adec Add custom shader attributes to Canvas Item Shaders 2024-01-23 14:36:39 -05:00
Bastiaan Olij 1066f01607 Add ivec variants to multiview_uv for stereo rendering 2024-01-23 16:13:31 +11:00
clayjohn 062e8802b7 Disable scissor test after rendering batches in compatibility renderer 2024-01-22 14:55:20 -08:00
Yuri Sizov bf94131e41 Merge pull request #87225 from kleonc/transposed-texture-fix-2d-normals
Fix 2D normals for transposed texture
2024-01-22 20:39:04 +01:00
Yuri Sizov e95456b7f3 Merge pull request #86073 from m4rr5/add_reflection_mask
Add a reflection mask to the reflection probes
2024-01-22 20:38:37 +01:00
Pedro J. Estébanez 0a89a2db9e Direct3D 12: Let NIR runtime data and push constants use the same register scheme as bindings 2024-01-22 19:39:27 +01:00
Marcel Offermans 25f573ca63 Add a reflection mask to the reflection probes.
Co-authored-by: Bastiaan Olij <mux213@gmail.com>
2024-01-20 08:07:31 +01:00
Rémi Verschelde fa81059b9d
Merge pull request #85939 from adamscott/single-threaded-godot-4
Add `THREADS_ENABLED` macro in order to compile Godot to run on the main thread
2024-01-18 09:33:52 +01:00
Adam Scott bd70b8e1f6
Add THREADS_ENABLED macro in order to compile Godot to run on the main thread 2024-01-17 13:58:29 -05:00
Yuri Sizov 44013b88eb Merge pull request #87298 from RandomShaper/d3d12_qp
D3D12 RDD: Fix wrong argument when resolving timestamp queries
2024-01-17 18:53:37 +01:00
Pedro J. Estébanez 925263c35b D3D12 RDD: Fix wrong argument when resolving timestamp queries 2024-01-17 16:59:13 +01:00
Rémi Verschelde 7d17496535
Merge pull request #87206 from bruvzg/dx12_old_msvc
Fix DX12 build on older MSVC versions, fix missing PIX include.
2024-01-16 10:37:12 +01:00
kleonc 0fe7eead02 Fix 2D normals for transposed texture 2024-01-15 17:34:29 +01:00
Rémi Verschelde bf7e19887e
Merge pull request #87096 from jsjtxietian/save-to-cache
Add `shader_cache_dir_valid` check to `_save_to_cache`
2024-01-15 13:29:03 +01:00
Rémi Verschelde 463edd0daf
Merge pull request #87067 from moonpirates/bugfix-canvastexture-uvs-compatibility
Fix UV issues in Compatibility renderer
2024-01-15 13:28:14 +01:00
Rémi Verschelde 1248fb9c18
Merge pull request #86855 from RandomShaper/fix_vk_get_image
Fix determination of copyable layout for compressed textures in Vulkan
2024-01-15 13:25:24 +01:00
bruvzg 2893c0b475 Fix DX12 build on older MSVC versions, fix missing PIX include. 2024-01-15 11:03:16 +02:00
jsjtxietian a365c070b3 Add shader_cache_dir_valid check to _save_to_cache 2024-01-12 17:34:33 +08:00
Jordi Scharp ac87d5f9a2 Fix issue where the UV's were off in Compatibility
Fixes a bug where CanvasTexture's UVs were off when using the Compatibility mode's renderer.

Fixes #86746
2024-01-11 13:26:57 +01:00
Alessandro Famà 998078f8d7 Fix Dummy audio driver initialization issue on WASAPI output device initialization failure
`AudioDriverWASAPI::init` consistently returns `Error::OK`, even when encountering a failure during the initialization of the output device. This behaviour blocks the dummy driver from initializing in `AudioDriverManager::initialize`.
2024-01-09 17:36:13 +01:00
Rémi Verschelde a56dd6ca52
Merge pull request #86920 from griffinkh/build_warning_fix
Fix build warning with memset value being too large
2024-01-09 11:29:55 +01:00
Dominic Austria c8bdd1d774 implement overdraw, lighting, and unshaded debug draw modes for opengl 2024-01-08 17:34:09 -05:00
Dario cc4d39b0c1 Acyclic Command Graph for RenderingDevice.
Adds a new system to automatically reorder commands, perform layout transitions and insert synchronization barriers based on the commands issued to RenderingDevice.
2024-01-08 14:54:56 -03:00
Griffin Kroah-Hartman b97cb5ec59 Fix build warning with memset value being too large
Should resolve issue #83342
2024-01-08 17:26:41 +01:00
Rémi Verschelde 25011e9144
Merge pull request #84244 from BastiaanOlij/skip_present_if_needed
Skip swapchain logic if there is nothing to present (Android OpenXR)
2024-01-08 14:52:07 +01:00
Rémi Verschelde c10d268974
Merge pull request #86787 from ryevdokimov/code-spell-check
Fix various spelling errors across engine solution
2024-01-08 11:55:55 +01:00
Bastiaan Olij d6caa69e11 Skip swapchain logic if there is nothing to present (Android OpenXR) 2024-01-08 21:51:04 +11:00
Rémi Verschelde 774c4631fd
Merge pull request #84733 from clayjohn/GL-CanvasGroup-performance
Only copy the relevant portion of the screen when copying to backbuffer in Compatibility backend
2024-01-08 11:50:12 +01:00
Aarni Koskela a4c5dae8cb Attempt to parse environment variables as UTF-8 2024-01-07 19:53:43 +02:00
Pedro J. Estébanez e1c7c18ead Fix determination of copyable layout for compressed textures in Vulkan 2024-01-06 00:06:28 +01:00
Rémi Verschelde e72e63a6b5
Merge pull request #85837 from akien-mga/clang-format-16
Style: Mark clang-format 16 as supported for pre-commit hook
2024-01-05 12:04:44 +01:00
Rémi Verschelde d1b7c60afc
Merge pull request #77712 from nklbdev/Fix_lossless_formats_in_PortableCompressedTexture2D
Fix lossless formats in PortableCompressedTexture2D
2024-01-05 12:02:14 +01:00
nklbdev 47d991678d Fix lossless formats in PortableCompressedTexture2D
Update scene/resources/portable_compressed_texture.cpp

Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2024-01-05 00:11:01 +05:00
Rémi Verschelde 5d44c85d4c
Merge pull request #84107 from BlueCube3310/file-access-optimization
Use platform-specific methods for FileAccess reading and writing
2024-01-04 16:39:47 +01:00
Robert Yevdokimov f9826a1dd7 Fix various spelling errors 2024-01-04 09:56:43 -05:00
Rémi Verschelde c921b6587c
Merge pull request #84469 from time-killer-games/patch-1
Fix NetBSD executable path
2024-01-04 14:25:46 +01:00
Rémi Verschelde 6c390b620d
Merge pull request #84445 from Rubonnek/add-const-references-clang-tidy
Add const references detected by clang-tidy
2024-01-04 14:25:33 +01:00
Rémi Verschelde 37df2ff387
Merge pull request #86682 from Daylily-Zeleen/daylily-zeleen/distinguish_between_dynamic_libaray_not_found_and_can't_open
Distinguish between dynamic library not found and can't be opened.
2024-01-02 18:06:17 +01:00
bruvzg 126a763f7a
[D3D12] Dynamically load Agility SDK. 2024-01-02 17:15:59 +02:00
Rémi Verschelde f3df5f7d37
Merge pull request #86435 from jsjtxietian/fix-fp-unsupport
Add `RD_ENABLED` when `VULKAN_ENABLED` or `D3D12_ENABLED` is added
2024-01-02 15:09:05 +01:00
EddieBreeg 8747c67d9e
Fix potential integer underflow in rounded up divisions
A new `Math::division_round_up()` function was added, allowing for easy
and correct computation of integer divisions when the result needs to
be rounded up.

Fixes #80358.

Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2024-01-02 14:14:47 +01:00
Daylily-Zeleen fe6b073811 Distinguishs between dynamic library not found and can't be opened. 2024-01-01 20:01:57 +08:00
jsjtxietian 89d7a2f0a5 Fix incorrect CAMERA_DIRECTION_WORLD calculation 2023-12-26 14:09:44 +08:00
jsjtxietian 078bfae6a4 Add RD_ENABLED when VULKAN_ENABLED or D3D12_ENABLED is added 2023-12-25 11:13:01 +08:00
Yuri Sizov 7d03a22329 Merge pull request #86405 from warriormaster12/pipeline-message-fix
Fix wrong error message when graphics pipeline creation fails
2023-12-22 17:20:15 +01:00
Yuri Sizov 44ded3eaa4 Merge pull request #86316 from clayjohn/RD-BFN-normals
Use best fit normals for storing screen space normals
2023-12-22 17:19:58 +01:00
clayjohn 43cf21cb71 Use best fit normals for storing screen space normals 2023-12-21 14:41:29 -07:00
warriormaster12 e729d511df Fix wrong error message when graphics pipeline creation fails 2023-12-21 22:32:58 +02:00
Pedro J. Estébanez 12a519bae2 Split RenderingDevice into API-agnostic and RenderingDeviceDriver parts
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>
2023-12-20 19:18:08 +01:00
Wilson E. Alvarez a3cb1b096f
Add const references detected by clang-tidy 2023-12-16 13:36:44 -05:00
Rémi Verschelde 5088cd8ab7
Merge pull request #86018 from BastiaanOlij/fix_gles_stereo_sky
Fix radiance for sky in GLES stereo rendering
2023-12-13 10:32:23 +01:00
Rémi Verschelde 41365c6c8b
Merge pull request #70315 from RandomShaper/d3d12_mesa
Direct3D 12 Rendering Driver (Mesa NIR approach)
2023-12-12 21:58:57 +01:00
Pedro J. Estébanez 2f47c57385 Add Direct3D 12 RenderingDevice implementation 2023-12-12 19:10:04 +01:00
Rémi Verschelde 342531597b
Merge pull request #85811 from clayjohn/2D-render-info
Implement render info counters for the 2D renderer
2023-12-12 10:41:06 +01:00
Bastiaan Olij e06ac4d40c Fix radiance for sky in GLES stereo rendering 2023-12-12 13:35:39 +11:00
Rémi Verschelde ae7c533937
Merge pull request #84686 from dsnopek/webxr-msaa
Add MSAA support for WebXR
2023-12-12 00:17:16 +01:00
Rémi Verschelde 4943b6e6b3
Merge pull request #84451 from ShirenY/FixSkeletonMeshCulling
Transform mesh's AABB to skeleton's space when calculating mesh's bounds
2023-12-12 00:16:51 +01:00
David Snopek 275c496bc8 Add MSAA support for WebXR 2023-12-11 09:01:24 -06:00
clayjohn 777d6ae1c6 Ensure that 2D meshes use a proper input mask
The input mask was wrongly ignored in earlier versions. Now it is actually used so the input mask variable needs to be a valid number
2023-12-09 12:15:59 -07:00
ShirenY 27f71c4e78 Transform mesh's AABB to skeleton's space when calculate mesh's bounds. 2023-12-09 11:41:15 +08:00
Yuri Sizov 36f260babe Merge pull request #85778 from HolySkyMin/weird_box_killer_try2
GLES3: Skip batches with zero instance count while rendering canvas
2023-12-08 16:58:49 +01:00
Yuri Sizov c2151bbfbf Merge pull request #85621 from daustria/opengl-compatibility-wireframe
Add wireframe for compatibility mode
2023-12-08 15:23:41 +01:00
Yuri Sizov b0339b68ff Merge pull request #85532 from RandomShaper/kill_redund_clear
Apply some low-hanging fruit optimizations to Vulkan RD
2023-12-08 15:23:36 +01:00
Yuri Sizov 44d544fc98 Merge pull request #85120 from dsnopek/gl-lightmap
OpenGL: Implement rendering of lightmaps
2023-12-08 15:23:27 +01:00
Rémi Verschelde a311a4b162
Merge pull request #83976 from BastiaanOlij/gles3_msaa_scaler
Add 3D MSAA and scaling support to GLES3
2023-12-07 14:36:42 +01:00
clayjohn 528b4a3283 Implement render info counters for the 2D renderer
This provides information for the debug monitors
2023-12-06 14:39:33 -07:00
Rémi Verschelde 49f4860ce3
Style: Mark clang-format 16 as supported for pre-commit hook
It only introduced a difference in a .glsl file, which I've worked
around by removing an empty line. This keeps formatting consistent
between clang-format 15 and 16.

Also added a change in the 3-to-4 project converter to fix bogus
formatting in clang-format < 17.
2023-12-06 13:26:53 +01:00
HolySkyMin 51dcb38840 GLES3: Skip batches with zero instance count while rendering 2023-12-05 18:49:59 +09:00
David Snopek 749f60ee36 OpenGL: Implement rendering of lightmaps 2023-12-04 18:34:06 -06:00
Bastiaan Olij caddce14dd Add 3D MSAA and scaling support to GLES3 2023-12-05 10:01:00 +11:00
Rémi Verschelde 74e49b7271
Merge pull request #85092 from clayjohn/GL-vertex-input-mask
Use vertex input mask for creating vertex arrays
2023-12-04 23:10:26 +01:00
Rémi Verschelde a9ba8695d4
Merge pull request #84852 from Alex2782/fix_vulkan_buffer_android
Vulkan: Fix incorrect access to the buffers on Android
2023-12-04 23:06:04 +01:00
Rémi Verschelde 6f16e3f257
Merge pull request #84416 from jsjtxietian/shadow_disabled
Add `shadows_disabled` macro in Compatibility renderer
2023-12-04 23:03:10 +01:00
Rémi Verschelde 6f4da7a976
Merge pull request #83736 from darksylinc/matias-broken_buffer_update
Fix buffer updates going to the wrong cmd buffer if barriers were 0
2023-12-04 22:58:24 +01:00
Rémi Verschelde 1749ea8d00
Merge pull request #82804 from BlueCube3310/compat_correct_normals
Automatically ensure correct normals in Compatibility renderer
2023-12-04 22:57:59 +01:00
Dominic bae6f86257 Add wireframe for compatibility mode 2023-12-02 13:09:56 -05:00
Pedro J. Estébanez 72bf8dfecf Remove superfluous locking in RID owners in Vulkan RD 2023-12-01 16:12:21 +01:00
Pedro J. Estébanez 4964d9a083 Remove redundant explicit clears in the Vulkan RD 2023-12-01 16:11:59 +01:00
Rémi Verschelde bd74d92ef7
Merge pull request #84957 from BastiaanOlij/fix_msaa2d_when_no_2d
Ensure 2D MSAA resolve is performed when 3D content but no 2D content in scene
2023-11-22 21:56:23 +01:00
clayjohn c0c1efc5da Use vertex input mask for creating vertex arrays
Also fix bug in creation of vertex input mask
2023-11-19 16:32:55 +01:00
Bastiaan Olij 47983e30c5 Ensure 2D MSAA resolve is performed when 3D content but no 2D content in scene 2023-11-16 13:34:34 +11:00
Gabor Koncz 0198eedb06 Remove incorrect system_fbo overwrite 2023-11-16 01:56:20 +01:00
Alexander Hartmann 04a142cf71 Vulkan: Fix incorrect access to the buffers on Android 2023-11-15 14:46:25 +01:00
clayjohn ead36fdcc4 Store ArrayMesh path in RenderingServer for use in error messages 2023-11-14 16:27:10 +01:00
Rémi Verschelde 787e98e955
Merge pull request #84752 from akien-mga/gles3-shaderdata-initialize
GLES3: Ensure all ShaderData is properly initialized in `set_code`
2023-11-13 12:20:33 +01:00
Rémi Verschelde ef2cc1cc2b
Merge pull request #84741 from lawnjelly/bogus_shader_log
[GLES3] Protect against bogus `glGetShaderInfoLog` return values.
2023-11-12 12:15:31 +01:00
Rémi Verschelde ba713c80df
Fix various typos with codespell
Using 2.2.7.dev51+geb4a58fe.
2023-11-11 23:01:24 +01:00
Rémi Verschelde 0e04203293
GLES3: Ensure all ShaderData is properly initialized in set_code
Fixes #84418.
2023-11-11 15:13:23 +01:00
lawnjelly 593cdf00ff [GLES3] Protect against bogus `glGetShaderInfoLog` return values.
On some buggy drivers `GL_INFO_LOG_LENGTH` returns incorrect values, which may lead to incorrectly filling in the log string. This could lead to uninitialized data being attempted to be printed and a crash.
This PR zeros the array to ensure uninitialized data is not used.
2023-11-11 06:56:46 +00:00
clayjohn e69968b794 Only copy the relevant portion of the screen when copying to backbuffer in Compatibility backend 2023-11-11 00:17:26 +01:00
clayjohn 9c5adac342 Properly rename INSTANCE_ID and VERTEX_ID in canvas item shaders in the compatibility backend 2023-11-07 17:55:51 +01:00
jsjtxietian 716fd3edfc Add shadows_disabled macro in Compatibility renderer 2023-11-07 18:55:26 +08:00
Samuel Venable 52da1e9b6b Fix NetBSD Executable Path 2023-11-06 06:33:36 -08:00
Rémi Verschelde 95b8a75aaf
Merge pull request #84288 from bruvzg/angle_detect_2
[macOS] Improve ANGLE support detection.
2023-11-02 09:11:55 +01:00
Rémi Verschelde 44a54f4500
Merge pull request #84252 from clayjohn/ensure_tangents
Enhance checks and user experience around tangent arrays in meshes.
2023-11-02 09:11:32 +01:00
clayjohn d1043a5f93 Enhance checks and user experience around tangents.
Ensure `ensure_tangents` option actually creates tangent array. Even if it is just a dummy array.

Allow mesh to generate its own tangents when using compression. This allows users to compress meshes without tangents.

Warn users if they are trying to read from tangents without providing tangents.
2023-11-01 22:40:42 +01:00
bruvzg 4c74c7d11a
[macOS] Improve ANGLE support detection.
Try opening EGL display when checking if ANGLE is supported.
2023-11-01 08:34:35 +02:00
David Snopek 67d8102f95 Fix WebXR on desktop emulator by reseting active texture unit 2023-10-31 16:18:38 -05:00
David Snopek a039d0b61a Linux: Disable RTLD_DEEPBIND mode for dlopen() in sanitizer builds 2023-10-30 16:16:08 -05:00