Commit Graph

3985 Commits

Author SHA1 Message Date
A Thousand Ships
955d5affa8
Reduce and prevent unnecessary random-access to List
Random-access access to `List` when iterating is `O(n^2)` (`O(n)` when
accessing a single element)

* Removed subscript operator, in favor of a more explicit `get`
* Added conversion from `Iterator` to `ConstIterator`
* Remade existing operations into other solutions when applicable
2024-05-04 16:08:55 +02:00
Bastiaan Olij
9042ddf19f Improvements to VRS/Foveated rendering 2024-05-03 17:20:30 +10:00
clayjohn
8eae822b54 Ensure that environment is available before checking for BCS 2024-05-02 11:34:48 -07:00
Rémi Verschelde
0b6c29f2d2
Merge pull request #89114 from AThousandShips/vec_elem_scalar
[Core] Add scalar versions of `Vector*` `min/max/clamp/snap(ped)`
2024-05-02 12:46:22 +02:00
A Thousand Ships
308dbb8c63
[Core] Add scalar versions of Vector* min/max/clamp/snap(ped)
Convenience for a number of cases operating on single values
2024-05-02 10:31:13 +02:00
semensanyok
e378083fa5 fix typo in e41064388e breaking gles3 2024-05-02 00:32:39 +02:00
Rémi Verschelde
f91db3dc58
Merge pull request #91399 from QbieShay/qbe/fix-pmul-name
Revert premul alpha to spell without the T
2024-05-01 23:47:46 +02:00
QbieShay
e41064388e reverted naming to premul alpha (no T)
Initially 3d had premulT alpha as a keyword.
Since Canvas item uses mixed premul and premult as keywords,
3D is changed as well to keep consistency with 2D.
Unfortunately this keeps inconsistency with the internal ENUM.
2024-05-01 22:24:49 +02:00
Chris Clyne
44364faee5 Ensure global shader sampler parameters are initialized when loading the editor 2024-05-01 18:12:46 +01:00
QbieShay
41a2b0e83e Added premult alpha blending to 3D (spatial) shaders.
Co-authored-by: jitspoe <jitspoe@yahoo.com>
Co-authored-by: Clay John <claynjohn@gmail.com>
2024-05-01 00:53:29 +02:00
bruvzg
986d297ed3
Fix arm64/Windows build. 2024-04-30 16:26:42 +03:00
Rémi Verschelde
32070144af
Merge pull request #91100 from bruvzg/x_finks
Add symlink API support for Windows, expose symlink methods.
2024-04-29 13:00:37 +02:00
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