Commit graph

3582 commits

Author SHA1 Message Date
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
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
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