1
0
mirror of https://github.com/godotengine/godot synced 2024-07-03 08:00:09 +00:00
Commit Graph

3841 Commits

Author SHA1 Message Date
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
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
Rémi Verschelde
dcbee437f7
Merge pull request #84197 from bruvzg/opengl_utf8
Parse OpenGL and Vulkan strings as UTF-8.
2023-10-30 17:47:51 +01:00
bruvzg
25dc729dd4
Parse OpenGL and Vulkan strings as UTF-8. 2023-10-30 17:24:31 +02:00
Rémi Verschelde
acbc341a58
OpenGL: Fix uninitialized memory usage for GPUPartciles interp_to_end
Fixes #84072.
2023-10-30 15:08:24 +01:00
BlueCube3310
6ed1731746 Use platform-specific methods for FileAccess reading and writing 2023-10-29 17:34:18 +01:00
Rémi Verschelde
c5c90fd7b7
Merge pull request #83998 from chybby/83380-soft-shadows
Fix reading shadow filter quality from project settings in compatibility
2023-10-26 16:02:08 +02:00
Rémi Verschelde
2dafd06114
Merge pull request #83906 from clayjohn/GL-vertex-padding
Add padding to normal attribute in Compatibility renderer to match the RD renderers
2023-10-26 16:00:56 +02:00
Rémi Verschelde
253711ec98
Merge pull request #82430 from RandomShaper/fix_gles3_tex_free
[GLES3] Avoid freeing proxy textures clearing onwer's data
2023-10-26 15:58:55 +02:00
Adam Chyb
b9446dde7e Fix reading shadow filter quality from project settings in compatibility
Fixes #83380.
2023-10-26 23:57:42 +11:00
Rémi Verschelde
46cb7f94f7
Merge pull request #83988 from bruvzg/egl_static
Fix macOS and Windows build with statically linked ANGLE/EGL.
2023-10-26 12:10:56 +02:00
Rémi Verschelde
815b24d280
Merge pull request #83491 from jsjtxietian/pass-screen-size-when-render-shadow
Pass viewport size to shadow pass instead of using Vector2i(1,1)
2023-10-26 12:09:21 +02:00
bruvzg
2d0cd5f2cd
Fix macOS and Windows build with statically linked ANGLE/EGL. 2023-10-26 12:15:59 +03:00
jsjtxietian
26d32554bd Pass viewport size to shadow pass instead of using vector2i(1,1) 2023-10-26 15:25:22 +08:00
Rémi Verschelde
1b3e00dc29
Merge pull request #83930 from underdoeg/feature-support-egl-1-4
Add support for EGL 1.4
2023-10-26 08:58:46 +02:00
Philip Whitfield
249aed43bf add support for EGL 1.4 2023-10-25 12:08:48 +02:00
Rémi Verschelde
f021d33940
Merge pull request #81167 from bitsawer/fix_sdfgi_editor_change
Reset SDFGI when changing editor scene tabs
2023-10-25 10:27:03 +02:00
clayjohn
a88e519f18 Add padding to normal attribute in Compatibility renderer to match the RD renderers 2023-10-24 22:32:34 +02:00
Rémi Verschelde
261fe7ce6a
Merge pull request #83704 from clayjohn/misc-mesh-fixes
Some more fixes for compressed meshes
2023-10-24 10:54:23 +02:00
Rémi Verschelde
64f80295e5
Merge pull request #83199 from Repiteo/texture-storage-default-scale
Fix `TextureStorage` not assigning default scale
2023-10-24 10:53:56 +02:00
clayjohn
8f9cd4e1e3 Some more fixes for compressed meshes
This cleans up a few more cases of uint32_t->uint64_t

Importantly this fixes an edge case in the axis-angle compression by
using the pre-existing Basis methods instead
2023-10-24 09:38:12 +02:00
Rémi Verschelde
50d17f6b8c
Merge pull request #83613 from clayjohn/surface_upgrade_tool
Add an editor tool to automatically upgrade and re-save meshes
2023-10-24 00:10:37 +02:00
clayjohn
318ef8461f Implementation of tool to automatically upgrade and re-save meshes 2023-10-23 22:39:48 +02:00
Rémi Verschelde
814de86494
Merge pull request #83493 from clayjohn/light-pair-bug
Ensure that only visible paired lights are used
2023-10-23 12:40:07 +02:00
BlueCube3310
f31371c04e Automatically ensure correct normals in Compatibility renderer 2023-10-22 15:00:11 +02:00
David Snopek
58775a6c67 Fix GPUParticles3D on the Meta Quest 2 with OpenGL renderer 2023-10-21 16:49:24 -05:00
Matias N. Goldberg
c9ec1f7727 Fix buffer updates going to the wrong cmd buffer if barriers were 0
From what I could see only SSAO & SSIL were affected when they both
call:

int zero[1] = { 0 };
RD::get_singleton()->buffer_update(ssao.importance_map_load_counter, 0,
sizeof(uint32_t), &zero, 0);

int zero[1] = { 0 };
RD::get_singleton()->buffer_update(ssil.importance_map_load_counter, 0,
sizeof(uint32_t), &zero, 0);

Also documented what setup_command_buffer & draw_command_buffer are for.
2023-10-21 13:14:38 -03:00
Pedro J. Estébanez
7e598642d2 Bump version of Vulkan RD binary shader format 2023-10-18 17:45:10 +02:00
Clay
623a050269 Ensure that only visible paired lights are used
This is a longstanding issue in both the Mobile and GL Compatibility renderer.

Meshes pair with all lights that touch them, and then at draw time, we send all paired lights indices to the shader (even if that light isn't visible). The problem is that non-visible lights aren't uploaded to the GPU and don't have an index. So we end up using a bogus index
2023-10-17 13:02:46 +02:00
Rémi Verschelde
348c1ff96b
Merge pull request #83266 from bruvzg/linux_case_check
[Linux] Implement DirAccess.is_case_sensitive for EXT4 and F2FS.
2023-10-13 22:19:24 +02:00
Rémi Verschelde
a19f05604e
Merge pull request #83252 from mrjustaguy/opengl-fade-fix
Fix OpenGL Directional Shadow Last Split Fading
2023-10-13 22:18:13 +02:00
bruvzg
54eae6221a
[Linux] Implement DirAccess.is_case_sensitive for EXT4 and F2FS. 2023-10-13 15:48:03 +03:00
Rémi Verschelde
51f81e1c88
Merge pull request #82957 from bruvzg/fs_case_check
Add method to check if filesystem is case sensitive.
2023-10-13 12:55:35 +02:00
mrjustaguy
09a2a7c54e Remove PSSM Fade 2023-10-13 12:01:23 +02:00
Thaddeus Crews
9ee41c707e
Fix texture storage not assigning default scale
• Print errors if an invalid value is passed
2023-10-12 12:02:24 -05:00
Rémi Verschelde
b1371806ad
Merge pull request #82431 from bitsawer/fix_gpuparticles_free
Fix errors when freeing GPUParticles
2023-10-12 00:22:33 +02:00
Rémi Verschelde
775ab4e983
Merge pull request #83141 from BastiaanOlij/fix_shadow_size
Fix compatibility shadow size not being initialised
2023-10-11 18:30:55 +02:00
Bastiaan Olij
59cd86f89d Fix compatibility shadow size not being initialised 2023-10-11 22:02:38 +11:00
Rémi Verschelde
4b7cc99bc1
Merge pull request #79169 from reduz/debug-canvas-item-redraw
Debug CanvasItem redraw
2023-10-11 08:40:05 +02:00
Rémi Verschelde
55282ddc10
Merge pull request #79527 from QbieShay/qbe/particles-rework
Particle internal refactor and additions for more artistic control
2023-10-10 22:48:50 +02:00
QbieShay
c228fe1a0d Particle internal refactor and additions for more artistic control
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
Co-authored-by: Raul Santos <raulsntos@gmail.com>
Co-authored-by: Mew Pur Pur <85438892+MewPurPur@users.noreply.github.com>
Co-authored-by: Clay John <claynjohn@gmail.com>
2023-10-10 20:03:35 +02:00
Rémi Verschelde
49495293c7
Merge pull request #82973 from dsnopek/gdextension-linux-favor-local-symbols
On Linux, favor local symbols when loading a shared library
2023-10-10 12:33:06 +02:00
Rémi Verschelde
a28dab7e82
Merge pull request #79711 from adamscott/web-non-blocking-main-thread
Add `proxy_to_pthread` option to `platform=web`
2023-10-09 23:22:22 +02:00
Adam Scott
78c2a08fae
Add proxy_to_pthread option to platform=web
Co-authored-by: Fabio Alessandrelli <fabio.alessandrelli@gmail.com>
2023-10-09 11:50:01 -04:00
Rémi Verschelde
a1d7c62df7
Merge pull request #83003 from AThousandShips/null_check_extra
Replace `ERR_FAIL_COND` with `ERR_FAIL_NULL` where applicable
2023-10-09 15:37:14 +02:00
bruvzg
97bcd8a631 Add method to check if filesystem is case sensitive. 2023-10-09 11:00:15 +03:00
A Thousand Ships
f18aa00e85 Replace ERR_FAIL_COND with ERR_FAIL_NULL where applicable 2023-10-08 17:23:33 +02:00
A Thousand Ships
034c0f1624 Replace sanity with safety for checks 2023-10-08 16:22:24 +02:00
David Snopek
7f4e700bf7 On Linux, favor local symbols when loading a shared library 2023-10-07 11:06:56 -05:00
Rémi Verschelde
c05f521e16
Merge pull request #82892 from clayjohn/tangent-binormal-transform
Only perform modelview transform on tangent and binormal when vertex shader is in local space
2023-10-06 12:53:05 +02:00
clayjohn
af1d81d95a Only perform modelview transform on tangent and binormal when vertex shader is in local space 2023-10-05 22:08:36 -06:00
clayjohn
04846c1d6d Avoid default fallback material when using world_vertex_coords
This avoids z-fighting between the opaque shader and the depth prepass shader
2023-10-05 19:11:48 -06:00
Rémi Verschelde
68926d5919
Merge pull request #81827 from darksylinc/matias-vkfeatures-opt-in
Opt-in to Vulkan features we actually use.
2023-10-05 22:49:21 +02:00
clayjohn
51ed3aef63 Vertex and attribute compression to reduce the size of the vertex format.
This allows Godot to automatically compress meshes to save a lot of bandwidth.

In general, this requires no interaction from the user and should result in
no noticable quality loss.

This scheme is not backwards compatible, so we have provided an upgrade
mechanism, and a mesh versioning mechanism.

Existing meshes can still be used as a result, but users can get a
performance boost by reimporting assets.
2023-10-05 12:02:23 -06:00
Rémi Verschelde
b42aa5ad9d
Merge pull request #81575 from bitsawer/fix_gles_instancing
Fix GLES3 instanced rendering color and custom data defaults
2023-10-05 10:06:39 +02:00
Rémi Verschelde
146d87c230
Merge pull request #82679 from lyuma/workaround_xr_off_crash
Workaround crash due to null shader when running XR project with `--xr-mode` off
2023-10-04 15:36:22 +02:00
Lyuma
1d34033143 Workaround crash due to null shader when running XR project with --xr-mode off 2023-10-02 06:12:01 -07:00
Thaddeus Crews
e9b2af91cf
check_c_headers from tuple array to dictionary 2023-10-01 14:09:39 -05:00
bitsawer
6f88ed73be Fix GLES3 instanced rendering color and custom data defaults 2023-09-29 11:44:37 +03:00
Yuri Sizov
7ae0fa1083 Merge pull request #77496 from clayjohn/GLES3-shadows
Implement 3D shadows in the GL Compatibility renderer
2023-09-28 20:03:53 +02:00
clayjohn
cb7200b028 Implement 3D shadows in the GL Compatibility renderer 2023-09-28 09:39:26 +02:00
SlugFiller
d468582ef8 Fix build on MSVC 2017 2023-09-27 19:49:59 +03:00
bitsawer
898d1a2d5f Fix errors when freeing GPUParticles 2023-09-27 11:46:31 +03:00
Pedro J. Estébanez
a67559931b [GLES3] Avoid freeing proxy textures clearing onwer's data 2023-09-27 10:44:56 +02:00
A Thousand Ships
517e9f8aef [Modules] Replace ERR_FAIL_COND with ERR_FAIL_NULL where applicable 2023-09-26 16:44:52 +02:00
Rémi Verschelde
36945dad07
Merge pull request #82359 from bitsawer/add_gles3_device_cache_key
Add device info to GLES3 shader cache key hash
2023-09-26 16:36:57 +02:00
Rémi Verschelde
a4bca12336
Merge pull request #82304 from akien-mga/windows-remove-redundant-MSVC-define
Windows: Remove `MSVC` define redundant with `_MSC_VER`
2023-09-26 13:45:26 +02:00
Rémi Verschelde
48bee5c8ef
Merge pull request #82221 from Riteo/linux-ogl-no-vsync-override
Linux/OpenGL: Don't force vsync in the editor
2023-09-26 13:45:12 +02:00
bitsawer
f1062f25eb Add device info to GLES3 shader cache key hash 2023-09-26 13:01:31 +03:00
Rémi Verschelde
814ab59c37
Windows: Remove MSVC define redundant with _MSC_VER
Cleanup unused MSVC code in FileAccessUnix.
2023-09-26 11:11:45 +02:00
Dario
057367bf4f Add FidelityFX Super Resolution 2.2 (FSR 2.2.1) support.
Introduces support for FSR2 as a new upscaler option available from the project settings. Also introduces an specific render list for surfaces that require motion and the ability to derive motion vectors from depth buffer and camera motion.
2023-09-25 10:37:47 -03:00
Matias N. Goldberg
d5f913ce1d Opt-in to Vulkan features we actually use. 2023-09-24 21:05:48 -03:00
Riteo
4fd6777cf4 Linux/OpenGL: don't force vsync in the editor
I couldn't tell whether this has an actual purpose and it feels more
like a debug remnant.

We also need to be able to disable vsync in the editor for the WIP
Wayland backend (in the EGL driver) as it does manual frame throttling.
2023-09-24 04:36:58 +02:00
Shawn Wallace
b12ed82c04 Expose texture_create_from_extension to GDExtension 2023-09-23 16:57:12 -04:00
bruvzg
1887a9df19
[macOS/Windows] Add optional ANGLE backed OpenGL renderer support. Add EGL_ANDROID_blob_cache caching.
Co-authored-by: Riteo <riteo@posteo.net>
2023-09-21 14:21:00 +03:00
Pedro J. Estébanez
bda6fc5d2f Polish a few things in Vulkan RD 2023-09-19 18:10:46 +02:00
Rémi Verschelde
9a1b4f338b
Merge pull request #81160 from paddy-exe/canvas-uv-world-space
Add render mode to use world coordinates in canvas item shader
2023-09-19 09:03:18 +02:00
Matias N. Goldberg
cfeccc2146 Fix validation error when using pipeline cache control
PR #80296 introduced a regression because it checks if the
VK_EXT_pipeline_creation_cache_control extension has been enabled before
using it, but turns out the process is a bit more convoluted than that
(a Vulkan driver may support the extension but then say the feature is
not supported)
2023-09-16 18:59:04 -03:00
Yuri Sizov
48e1c19dea Merge pull request #81583 from AThousandShips/null_check_drivers_platform
[Drivers,Platform] Replace `ERR_FAIL_COND` with `ERR_FAIL_NULL` where applicable
2023-09-15 19:48:18 +02:00
bitsawer
af7b870e2a Improve GLES3 scene renderer compatibility with older devices 2023-09-14 16:34:29 +03:00
A Thousand Ships
3565d1bf7e [Drivers,Platform] Replace ERR_FAIL_COND with ERR_FAIL_NULL where applicable 2023-09-12 20:13:32 +02:00
Rémi Verschelde
3815b2f98e
Merge pull request #81315 from conorlawton/z-billboard-y-velocity-no-scale
Fix z-billboard + y to velocity transform alignment to correctly respect non-uniform scale
2023-09-08 23:14:27 +02:00
Conor Lawton
9ecafcc491 Fixed z-billboard-y-velocity to correctly respect non-uniform scale instead of averaging scale 2023-09-08 20:01:57 +01:00
Rémi Verschelde
cfd292939c
Haiku: Remove remnants of past WIP platform port
The Haiku platform port was never finalized, and moved to a separate repo in
Godot 3.2 days: https://github.com/godotengine/godot-platform-haiku

Sadly it didn't garner more interest there and is bitrotting. It was never
ported to Godot 4 so the bits of Haiku support left in Mono aren't useful.
2023-09-07 16:37:51 +02:00
Rémi Verschelde
8de6405288
UWP: Remove platform port, needs to be redone from scratch for 4.x
The UWP platform port was never ported to the Godot 4.0+ API,
and it's now accumulating bitrot as it doesn't compile, and thus
we no longer propagate platform changes in it.

So we finally remove to acknowledge this state. There's still some
interest in reviving the UWP port eventually, especially as support
for Direct3D 12 will soon be merged, but when that happens it will
be easiest to redo it from scratch.
2023-09-07 15:01:59 +02:00
Rémi Verschelde
8f3042ed46
Merge pull request #81395 from jsjtxietian/fix-clear-color-alpha-value-affect-2d-editor-in-compatibility
Fix clear color's alpha value will affects 2D editor in Compatibility mode
2023-09-07 13:54:10 +02:00
jsjtxietian
e21a485dbc Fix clear color's alpha value will affects 2D editor in Compatibility mode
When the rt's transparency is false, force the alpha of the clear color to one
2023-09-07 12:56:34 +08:00
Milan Gruner
45a33cc749 Implement render mode fog_disabled and BaseMaterial3D setting Disable Fog 2023-09-05 18:15:02 +02:00
Rémi Verschelde
497ca8c433
Merge pull request #80296 from RandomShaper/overhaul_vk_pso_cache
Enhance Vulkan PSO caching
2023-09-03 00:20:40 +02:00
bitsawer
836705d7a9 Reset SDFGI when changing editor scene tabs 2023-08-30 19:50:05 +03:00
Patrick
c98ab5aba3 Add option to use world coordinates in canvas item shader
By using the render mode `world_vertex_coords` you can automatically use the vertex coordinates in world space
2023-08-30 15:32:18 +02:00
Rémi Verschelde
56b13b6865
Merge pull request #81001 from RandomShaper/win_safe_save
Make Windows' safe save more resilient
2023-08-30 12:16:06 +02:00
Pedro J. Estébanez
bcf33cfbd1 Enhance Vulkan PSO caching 2023-08-30 12:00:54 +02:00
Rémi Verschelde
9be010cde4
Merge pull request #81059 from darksylinc/matias-vk-barrier-early_fragment_depth
Fix missing `EARLY_FRAGMENT_TESTS_BIT` barrier flags
2023-08-29 12:45:56 +02:00
Rémi Verschelde
fd7b27a473
Merge pull request #80909 from adamscott/web-fix-max-uniform-buffer-size-overflow
Fix integer value for `GL_MAX_UNIFORM_BLOCK_SIZE` overflowing
2023-08-28 15:03:50 +02:00
Juan Linietsky
407b16ab00
Debug CanvasItem redraw
I wanted to add this tool for years and always forget. This command line option:

```
$ godot.exe -e --debug-canvas-item-redraw
```

Allows to see when a canvas item is redrawn. This helps find out if something
in the UI is refreshing in a way it should not. Examples as such:

* Signals causing more of the UI to redraw.
* Container resizing causes more UI elements to redraw.
* Something using a timer is redrawing all time time, which can go unnoticed.

To my surprise, the editor UI is redrawing very efficiently. There is some
weird stuff with the scene tabs, redrawing when the inspector changes but most
things for the most part are fine.
2023-08-28 12:53:56 +02:00
Matias N. Goldberg
677d2d6fb0 Fix missing EARLY_FRAGMENT_TESTS_BIT barrier flags 2023-08-27 19:38:34 -03:00
jsjtxietian
d48b95a305 fix glMapBufferRange return null when r_index + last_item_index > max_instances 2023-08-27 18:00:35 +08:00
Pedro J. Estébanez
49177b6eeb Make Windows' safe save more resilient 2023-08-25 18:28:35 +02:00
Adam Scott
9c7db7397f
Fix integer value for GL_MAX_UNIFORM_BLOCK_SIZE overflowing 2023-08-25 10:19:25 -04:00
Rémi Verschelde
fef62a6860
Merge pull request #80781 from bitsawer/fix_vulkan_texture_upload
Fix Vulkan texture update
2023-08-21 19:32:12 +02:00
A Thousand Ships
6cb28e481f Fix memory access error for MultiMesh with GLES3
Buffer was incorrectly assigned when invalid data was provided
2023-08-19 16:01:21 +02:00
bitsawer
3daa19dd95 Fix Vulkan texture update 2023-08-19 12:18:54 +03:00
Rémi Verschelde
1537452aa9
Merge pull request #78013 from Calinou/cli-add-audio-output-latency-argument
Add a `--audio-output-latency` command-line argument
2023-08-17 15:43:14 +02:00
Hugo Locurcio
ce57c2379c
Abort on startup with a visible alert if required Vulkan features are missing 2023-08-17 14:48:36 +02:00
Hugo Locurcio
6f1152bdbe
Add a --audio-output-latency command-line argument
This allows optimizing the audio output latency on higher-end CPUs,
especially in projects that do not expose a way to override this setting.
2023-08-17 14:45:17 +02:00
Rémi Verschelde
c1dbc3dd04
Merge pull request #80288 from pkpro/memcpy_into_nullptr
Vulkan: Fix sanitizers error with empty shader name
2023-08-17 12:29:29 +02:00
Rémi Verschelde
5541567c1a
Merge pull request #80151 from WhalesState/Dev1
Fix GLES3 changing 2D shadow atlas size is broken
2023-08-17 11:23:24 +02:00
Mounir Tohami
2987dd0c71 fix GLES3 changing 2d shadow atlas size is broken 2023-08-16 15:58:23 +00:00
Rémi Verschelde
9d9043a9c8
Merge pull request #80654 from bitsawer/fix_global_uniform_texture_set
Fix global shader uniform texture loading
2023-08-16 09:17:25 +02:00
Rémi Verschelde
d1b8e9abd6
Merge pull request #80571 from darksylinc/matias-resize-window-fix
Fix validation error when resizing window
2023-08-16 09:13:53 +02:00
Rémi Verschelde
04c2bc5a37
Merge pull request #80424 from DarioSamo/rd-buffer-copy-vulkan
Add `buffer_copy` method to RenderingDevice
2023-08-16 09:13:06 +02:00
Matias N. Goldberg
0b09fdd96c Fix validation error when resizing window
Sometimes when resizing the window we may get the following validation
error:

ERROR: VALIDATION - Message Id Number: -370888023 | Message Id Name:
VUID-vkAcquireNextImageKHR-semaphore-01286
	Validation Error: [ VUID-vkAcquireNextImageKHR-semaphore-01286 ]
Object 0: handle = 0xdcc8fd0000000012, type = VK_OBJECT_TYPE_SEMAPHORE;
| MessageID = 0xe9e4b2a9 | vkAcquireNextImageKHR: Semaphore must not be
currently signaled or in a wait state. The Vulkan spec states: If
semaphore is not VK_NULL_HANDLE it must be unsignaled
(https://vulkan.lunarg.com/doc/view/1.2.198.1/linux/1.2-extensions/vkspec.html#VUID-vkAcquireNextImageKHR-semaphore-01286)

In VulkanContext::prepare_buffers the problem was that
vkAcquireNextImageKHR returned VK_SUBOPTIMAL_KHR but it already signaled
the semaphore (because it is possible to continue normally with a
VK_SUBOPTIMAL_KHR result).

Then we recreate the swapchain and reuse the
w->image_acquired_semaphores[frame_index] which is in an inconsistent
state.

Fixed by recreating the semamphores along the swapchain.

Fix #80570
2023-08-15 20:57:49 -03:00
bitsawer
41def3740a Fix global shader uniform texture loading 2023-08-15 14:18:26 +03:00
sakrel
80a36ff985 Add support for GLSL source-level debugging with RenderDoc (--generate-spirv-debug-info) 2023-08-12 14:56:49 +02:00
Dario
0d7deca4e2 Add buffer_copy method to RenderingDevice interface and an implementation for the Vulkan driver.
Direct buffer copies are required to perform certain operations more efficiently, as the only current alternative is to download the buffer to the CPU and upload it again. As the first use case, the new function is used when enabling motion vectors on multimeshes.
2023-08-12 09:38:39 -03:00
Pavel Kraynyukhov
77b02359c9
Vulkan: Fix sanitizers error with empty shader name
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2023-08-09 12:12:56 +02:00
bruvzg
8aa6f29b56
[FileAccess] Add methods to get/set "hidden" and "read-only" attributes on macOS/BSD and Windows. 2023-08-08 21:51:32 +03:00
Rémi Verschelde
1163dac9e3
Merge pull request #80215 from clayjohn/HDR-2D
Add option to enable HDR rendering in 2D
2023-08-08 16:57:33 +02:00
Rémi Verschelde
048a164083
Merge pull request #79693 from bruvzg/com_ath
[Windows] Initialize COM as apartment-threaded.
2023-08-07 14:48:40 +02:00
clayjohn
57eb762bae Add option to enable HDR rendering in 2D
This is needed to allow 2D to fully make use of 3D effects (e.g. glow), and can be used to substantially improve quality of 2D rendering at the cost of performance

Additionally, the 2D rendering pipeline is done in linear space (we skip linear_to_srgb conversion in 3D tonemapping) so the entire Viewport can be kept linear.
This is necessary for proper HDR screen support in the future.
2023-08-07 11:24:03 +02:00
Rémi Verschelde
cc6a60913a
Merge pull request #78325 from akien-mga/libpng-moar-intrinsics
libpng: Enable intrinsics on x86/SSE2, ppc64/VSX, and all arm/NEON
2023-08-04 17:04:07 +02:00
Rémi Verschelde
2c9b7fc7a8
libpng: Enable intrinsics on x86/SSE2, ppc64/VSX, and all arm/NEON 2023-08-04 14:57:21 +02:00
Luke Hubmayer-Werner
9e844cc0c8 PulseAudio: Remove get_latency() caching 2023-08-04 15:35:13 +09:30
clayjohn
558f4b7559 Initialize shader placeholders up front
Then use the placeholder to create the shader instead of swapping RIDs
This fixes a false positive that reported leaked shaders
2023-08-03 16:13:33 +02:00
Yuri Sizov
eda04c5658 Merge pull request #80071 from darksylinc/matias-fixes2
Fix validation layer warnings
2023-08-01 17:26:04 +02:00
Yuri Sizov
bffbc5dd3e Merge pull request #80070 from clayjohn/GLES3-depth-prepass
Enable depth writes during shadow pass and depth pass. Disable during color pass
2023-08-01 17:26:00 +02:00
Yuri Sizov
1c40263665 Merge pull request #79606 from clayjohn/ShaderRD-compilation-groups
Shader rd compilation groups
2023-08-01 17:25:16 +02:00
Yuri Sizov
8b12849fef Merge pull request #79876 from LRFLEW/mobalpha
Fix transparent viewport backgrounds with custom clear color
2023-07-31 21:01:32 +02:00
Matias N. Goldberg
4ce41495b1 Fix validation layer warnings
1. Validation layers on Windows were complaining w/
VUID-VkSwapchainCreateInfoKHR-surface-01270 that we were not calling
vkGetPhysicalDeviceSurfaceSupportKHR before vkCreateSwapchainKHR.

2. Godot was only calling vkGetPhysicalDeviceSurfaceSupportKHR at
startup, but it should be doing this for every window w/ a new surface
it wants to create, not just the first one.
- In practice this will likely not make a difference. If
vkGetPhysicalDeviceSurfaceSupportKHR returns false after initialization,
there's nothing we can do about it and it is likely because something
else went terribly wrong, which is why the error message is worded like
that.
- This is mostly to shut up validation layers. Though technically,
the layers are right.

3. Do not call vkGetPhysicalDeviceSurfaceSupportKHR on queues we don't
even plan on ever using. We don't know how drivers will react to that
(e.g. they may preemptetively allocate resources to support presentation
on exotic queues, instead of just saying no). Just behave like every
other Vulkan app out there.
2023-07-30 17:07:27 -03:00
clayjohn
b986afed46 Enable depth writes during shadow pass and depth pass. Disable during color pass
This fixes an unreported performance bug. Basically, without this change, the depth prepass did nothing
2023-07-30 21:59:28 +02:00
LRFLEW
6effd3cde7 Fix transparent viewport backgrounds with custom clear color 2023-07-30 06:19:47 -05:00
Matias N. Goldberg
472226422e Fix uninitialized variable ending up sent to Vulkan
The first time a shader is compiled Godot performs the following:

```cpp
for (uint32_t i = 0; i < SHADER_STAGE_MAX; i++) {
	if
(spirv_data.push_constant_stages_mask.has_flag((ShaderStage)(1 << i))) {
		binary_data.push_constant_vk_stages_mask |=
shader_stage_masks[i];
	}
}
```

However binary_data.push_constant_vk_stages_mask is never initialized to
0 and thus contains garbage data or'ed with the good data.

This value is used by push constants (and many other things) thus it can
be a big deal.

Fortunately because the relevant flags are always guaranteed to be set
(but not guaranteed to be unset), the damage is restricted to:

1. Performance (unnecessary flushing & over-excessive barriers)
2. Overwriting push descriptors already set (this would be serious,
doesn't seem to be an issue)
3. Driver implementations going crazy when they see bits set they don't
expect (unknown if this is an issue)

This uninitialized value is later saved into the binary cache.

Valgrind is able to detect this bug on the first run, but not on the
subsequent ones because they data comes from a file.

cache_file_version has been bumped to force rebuild of all cached
shaders. Because the ones generated so far are compromised.
2023-07-29 18:28:33 -03:00
Yuri Sizov
1fe49e7271 Merge pull request #79142 from BastiaanOlij/register_render_buffers
Expose RenderSceneBuffers(RD) through ClassDB
2023-07-27 15:22:27 +02:00