Commit graph

2602 commits

Author SHA1 Message Date
Rémi Verschelde
b193713612 Style: Ensure consistent formatting with clang-format 15
(cherry picked from commit f9b91d8d24)
2022-09-21 13:35:34 +02:00
lawnjelly
66f519bc87 Prevent drawing MultiMesh with zero instance count
Issuing a driver drawcall for MultiMesh with zero instances crashes some drivers.

(cherry picked from commit a300505066)
2022-09-20 10:24:30 +02:00
lawnjelly
b44d47f582 Fix GLES directional shadow uninitialized data
Valgrind shows directional_shadow.fbo accessed when uninitialized in directional_shadow_create.

(cherry picked from commit 9b294b298e)
2022-09-09 14:29:55 +02:00
lawnjelly
5800615be7 Batching - fix uninitialized color read
Valgrind was showing a read from uninitialized memory. r_fill_state.curr_batch->color is unset (for performance reasons), so can contain random data.

This actually doesn't matter in practice, since logically this uninitialized state can only occur when change_batch is set, and the only side effect is that change_batch is set. Hence why no bugs occur in practice.

This PR prevents this read from uninitialized data. It is likely free in terms of performance after optimization, and keeps the Valgrind logs clearer, so why not.

(cherry picked from commit 23fedc0d1a)
2022-09-09 14:28:58 +02:00
bitsawer
75a3af4d3c Fix Windows list dir handle leak
(cherry picked from commit 40325006b6)
2022-08-30 11:21:31 +02:00
Jordan Schidlowsky
6a6d595286 workaround for angle project issue 7245, safari, iOS
(cherry picked from commit 1ed1a3067b)
2022-08-30 11:20:16 +02:00
Pedro J. Estébanez
519bc3a1e8 Make audio thread control flags safe
(cherry picked from commit c92ceca5ce)
2022-08-30 11:16:44 +02:00
Haoyu Qiu
1ea8b9d2b7 Fix Time.get_unix_time_from_system() not including msecs
(cherry picked from commit 1be078ebcb)
2022-08-08 16:32:16 +02:00
Pedro J. Estébanez
e44c18ecc0 Fix GI probes not working in the ubershader
(cherry picked from commit edb140839e)
2022-08-08 16:25:37 +02:00
Pedro J. Estébanez
0af799d2a7 Fix emission not working in the ubershader
(cherry picked from commit ea6ed9658d)
2022-08-08 16:25:37 +02:00
Pedro J. Estébanez
f3adb06938 Fix shadow flickering with async shader compilation
This mostly reverts the approach in #62628, which now the problem is better scoped, looks overengineered and instead focuses on the few cases where there's something to take care of.

(cherry picked from commit a2ed82d3b2)
2022-08-08 16:25:37 +02:00
lawnjelly
ec82655ca0 Fix skeleton 2D stale bounding rect
Adds special logic for handling skeleton bounding rect updates. Previously these were never being updated because the canvas item is never set to "rect_dirty".

(cherry picked from commit 18bb668a2e)
2022-08-08 13:35:18 +02:00
Rémi Verschelde
818f1eed31 Code quality: Fix header guards consistency
Adds `header_guards.sh` bash script, used in CI to validate future
changes. Can be run locally to fix invalid header guards.
2022-07-25 14:53:37 +02:00
Hugo Locurcio
b03ceaba2f
Document support limitations for OmniLight cubemap shadows in GLES2 2022-07-18 22:18:56 +02:00
Markus
4abe07c811 Apply S3TC Android/iOS fix to GLES3 2022-07-11 12:12:17 +02:00
Pedro J. Estébanez
65a83785fd Avoid GL undefined behavior in ubershaders 2022-07-02 19:54:02 +02:00
Rémi Verschelde
772d071863 SCons: Properly track codegen script dependency for generated GLES headers 2022-07-02 15:52:42 +02:00
ne0fhyk
24e3b3b88d Add full support for Android scoped storage.
This was done by refactoring directory and file access handling for the Android platform so that any general filesystem access type go through the Android layer.
This allows us to validate whether the access is unrestricted, or whether it falls under scoped storage and thus act appropriately.
2022-06-26 16:53:02 -07:00
Pedro J. Estébanez
a46da9311e Fix shadows not casted by async hidden materials 2022-06-26 21:21:07 +02:00
lawnjelly
9482998a03 Synchronous shaders in editor
The old style synchronous shaders allow the project manager and editor to load faster.
2022-06-22 14:14:32 +01:00
Pedro J. Estébanez
0868122aad Fix change to singed shader conditional flags
This change was missing from commit d3d8ccea60.
2022-06-20 17:02:40 +02:00
Pedro J. Estébanez
d3d8ccea60 Use signed integers for async shader conditionals 2022-06-19 20:16:27 +02:00
Rémi Verschelde
118302d01c GLES3: Fix async shader compilation after #62021
Fixes #62047.
2022-06-15 13:40:58 +02:00
Pedro J. Estébanez
1d01acb486 Fix issues with unsigned types in GL ES 3 shader class 2022-06-14 11:43:58 +02:00
Pedro J. Estébanez
f46d7583ff Add INFO_SHADER_COMPILES_IN_FRAME to GL ES 3 render info 2022-06-13 18:53:15 +02:00
bruvzg
11a7997a67 [Windows, 3.x] Add support for handling network share paths. 2022-06-13 09:24:35 +03:00
lawnjelly
f8df04ed50 More low priority redraw request cases
Some more cases of textures etc causing continuous updates in vital updates only mode are fixed.
2022-06-12 06:44:59 +01:00
clayjohn
f92141be13 Disable Alpha throughout Glow and FXAA code in order to avoid issues with transparent viewports 2022-05-26 11:15:35 -07:00
clayjohn
9927515254 Disable alpha in post process when using opaque framebuffer 2022-05-24 14:11:09 -07:00
clayjohn
027ec28126 Disable writing to alpha with opaque framebuffer 2022-05-24 10:30:49 -07:00
clayjohn
3374bae953 Fixed Bug where DoF incorrectly wrote to alpha channel amd bug with tonemap shaders 2022-05-18 13:19:42 -07:00
Hugo Locurcio
3762b40de7
Merge pull request #54585 from Kinwailo/fix_viewport_transparent_bg
Fix viewport with transparent bg changed to solid black if enable fxaa or debanding.
2022-05-16 08:28:36 +02:00
Kinwailo
b1a50ad805 fix post procressing with transparent bg and keep alpha channel of the tonemap shader output 2022-05-12 16:32:31 +08:00
Rémi Verschelde
3649382b37
Merge pull request #60829 from clayjohn/GLES2-html5-blendshapes
[GLES2] Unpack blend shape arrays when necessary
2022-05-06 22:08:31 +02:00
clayjohn
b0b1e44bc1 Unbind vertex buffer before calculating blend shapes 2022-05-06 12:21:35 -07:00
clayjohn
33d825c50b Unpack blend shape arrays when necessary
Blend shapes need to be unpacked if the vertex array is being unpacked
2022-05-06 10:36:18 -07:00
mdavisprog
53fb0440d3 Add OS::is_process_running function.
Adds the is_process_running function to the native OS class and exposes it to script.

This is implemented on Windows and Unix platforms. A stub is provided for other platforms that do not support this function.

Documentation is updated to reflect new API function.

(cherry picked from commit f3c1232c59)
2022-05-05 15:02:46 +02:00
Pedro J. Estébanez
41fc0abf77 Fix handling of async hidden render mode
- Mute errors when conditioned shader is not ready yet
- Avoid depth pre-pass on meshes that would end up black
2022-04-12 20:11:20 +02:00
Rémi Verschelde
3eee2f45a3
Merge pull request #57674 from RandomShaper/fix_ubershader_android
Improve ubershader compatibility
2022-03-13 00:53:48 +01:00
Ansraer
2fb998bfbc Fix alpha scissor support 2022-03-11 16:18:19 +01:00
Rémi Verschelde
b6a6c90ea2
Merge pull request #58855 from akien-mga/3.x-gles2-fix-VersionKey-comparison 2022-03-07 14:31:43 +01:00
Rémi Verschelde
2dec5db5df
Merge pull request #58357 from BastiaanOlij/fix_external_viewport_texture 2022-03-07 13:18:33 +01:00
Rémi Verschelde
76df26b110 GLES2: Fix VersionKey comparison in ShaderGLES2::bind()
This was comparing arrays, GCC 12 raises a warning for it:

```
drivers/gles2/shader_gles2.cpp: In member function 'bool ShaderGLES2::bind()':
drivers/gles2/shader_gles2.cpp:80:71: error: comparison between two arrays [-Werror=array-compare]
   80 |         if (active != this || !version || new_conditional_version.key != conditional_version.key) {
      |                                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gles2/shader_gles2.cpp:80:71: note: use unary '+' which decays operands to pointers or '&'component_ref' not supported by dump_decl<declaration error>[0] != &'component_ref' not supported by dump_decl<declaration error>[0]' to compare the addresses
```
2022-03-07 09:30:22 +01:00
Omar El Sheikh
733a84f7a4 GLES2 Compression on Blend Shapes Fix
When compressed vertex positions are used in a blend shapes mesh, we
need to make sure we set the w-component of the position vector to 1.0

When octahedral compression is used on normals/tangents, they need to be
converted to cartesian floats to be used for blend shapes

This conversion also changes the number of components of that vertex
attribute, which caused issues because previously there was an
assumption that you had the same number of components in the blend shape
buffer as you did in the original mesh's buffer (which is not true for
oct norm/tang)
2022-03-06 10:57:05 -05:00
Omar El Sheikh
9988739332 Fix shader state caching when blend shapes used
Previously, conditionals set on the shader would change outside of the
_render_list function when blend shapes were used

This is an issue because the function keeps track of the previous shader
state to try to minimize state changes

Now we keep all this shader state change within the _render_list
function to ensure the saved previous state is correct
2022-03-05 16:33:17 -05:00
Bastiaan Olij
7e2c4aac7e Fix external textures not working correctly with viewport texture 2022-02-22 14:24:34 +11:00
lawnjelly
522bce1159 Fixed Timestep Interpolation (3D)
Adds fixed timestep interpolation to the visual server.
Switchable on and off with project setting.

This version does not add new API for set_transform etc, when nodes have the interpolated flag set they will always use interpolation.
2022-02-16 09:41:23 +00:00
lawnjelly
3dc0e97d05 Fix incorrect buffer upload size in GLES2 draw_gui_primitive
The buffer upload size appears to have been incorrect for quite some time, which causes uploading from undefined memory.
2022-02-15 17:24:51 +00:00
lawnjelly
614dc363ab Fix GL buffer upload size bugs
Wrapper functions for uploading buffers to OpenGL take all sizes and offsets in bytes. Some buffer sizes are specified as units (e.g. float) so require conversion to bytes when calling the buffer upload functions.

Two such bugs have been fixed in blendshapes, and parameter names and comments have been changed to emphasize that sizes should be in bytes.

In addition DEV_ASSERTS in the upload wrappers have been changed to ERR_FAIL.
2022-02-14 10:56:06 +00:00
Rémi Verschelde
d0b446c6d5
Merge pull request #45372 from Firepal/prepass-nightmares 2022-02-11 15:19:26 +01:00