Commit graph

2070 commits

Author SHA1 Message Date
clayjohn
a5399ab5af Reduce the number of samplers used by the scene shaders
The hard limit for Apple devices is 16 samplers per stage. So we need to ensure we use less than that
2023-12-15 17:13:44 -07:00
Bastiaan Olij
22cd145177 Merge passes in Vulkan mobile renderer 2023-12-16 09:51:35 +11:00
Yuri Sizov
4269a57b0c Merge pull request #85387 from jsjtxietian/fix-forward-plus-crash
Use render method from OS instead of project settings in compositor RD
2023-12-14 17:38:43 +01:00
jsjtxietian
453c2246b6 Use render method from OS in compositor RD; Update related UI 2023-12-14 11:38:46 +08:00
Wilson E. Alvarez
80fb8db31f
Remove unnecessary assignments
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
2023-12-13 11:06:26 -05: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
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
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
5c95fd5905 Merge pull request #85793 from Lasuch69/expose-compute
Expose `copy_effects` compute shader in Mobile backend
2023-12-08 18:46:03 +01:00
Yuri Sizov
74b6fad3c8 Merge pull request #85822 from bruvzg/maco_dbl
Fix CanvasOcclusionShaderRD format error with double precision build.
2023-12-08 16:58:59 +01:00
Yuri Sizov
ee1bf15924 Merge pull request #84637 from clayjohn/RD-sampler-bias
Use render pass uniform set to store viewport samplers.
2023-12-08 15:23:18 +01:00
Yuri Sizov
dfe0f584b4 Merge pull request #82953 from jsjtxietian/document-forcedraw-can-only-be-called-from-main-thread
Add thread guard for `force_draw` and update related documentation
2023-12-08 15:22:53 +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
bruvzg
c0a1c5ae61
Fix CanvasOcclusionShaderRD format error with double precision build. 2023-12-06 23:03:12 +02:00
Lasuch
608d41a969 Expose copy_effects copy compute shader in Mobile backend 2023-12-05 21:22:46 +01:00
Rémi Verschelde
4c3d95e02c
Merge pull request #85635 from clayjohn/RD-ReflectionProbes-mobile
Set ReflectionProbe frame before mapping id in mobile renderer
2023-12-04 23:20:47 +01:00
Rémi Verschelde
7113050e0b
Merge pull request #84241 from jsjtxietian/fix-render-method-crash-on-bad-input
Fix bad parameter for `rendering_method` crashes Godot
2023-12-04 23:02:21 +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
clayjohn
394edf8288 Set ReflectionProbe frame before mapping id in mobile renderer 2023-12-01 16:52:50 -07: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
e2a5d2bf46 Enable non-multiview advanced shader group whenever advanced shaders are requested
This is needed because xr_enabled does not guarantee that we won't use the non-multiview variants
2023-11-21 15:16:25 -07:00
Rémi Verschelde
c2f8fb3015
Merge pull request #85039 from RandomShaper/mingwthreads
Use mingw-std-threads in MinGW builds
2023-11-21 15:44:18 +01:00
Pedro J. Estébanez
5c25fa4c78 Fix potential double-close of draw command label 2023-11-20 18:59:06 +01:00
Rémi Verschelde
ac29e8e3fe
Merge pull request #85086 from clayjohn/shaders-amount-ratio
Make `AMOUNT_RATIO` constant in the shader language specification.
2023-11-20 14:14:46 +01:00
clayjohn
8a95b2956f Make AMOUNT_RATIO constant in the shader language specification.
Writing to it doesn't do anything and will crash the compatibility backend.
2023-11-19 14:36:26 +01:00
Pedro J. Estébanez
fe4850c0d0 Use mingw-std-threads in MinGW builds 2023-11-18 11:56:05 +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
Alistair Leslie-Hughes
367079ffee Renderer Viewport correct sizeof usage.
The current usage.

In viewport_find_from_screen_attachment
- Allocates a list of pointers, eg sizeof(RID*) * ridcount.

We need fill that buffer
viewport_owner.fill_owned_buffer(rids);
...
 p_rid_buffer[idx] = _make_from_id((validator << 32) | i);

_make_from_id returns an RID object, not a pointer.

Since there isn't a copy constructor, a bitwise copy of the object occurs.

This issue will only present itself under 32bit builds.
sizeof(RID)  : 8
sizeof(RID*) : 4

whereas 64bit builds they are both 8.
2023-11-16 11:02:12 +11:00
Bastiaan Olij
b1c4d4e55b Ensure optional variants are loaded last. 2023-11-15 14:31:25 +11:00
jsjtxietian
b88b84ce18 Add thread guard for force_draw and update relared doc
force_draw must be called from main thread
2023-11-10 18:57:31 +08:00
jsjtxietian
b6bee1c21e Fix bad parameter of rendering_method crashes Godot
Print error and default to forward plus
2023-11-10 10:38:12 +08:00
clayjohn
2b9e6d2972 Use render pass uniform set to store viewport samplers.
This fixes a bugs where per-viewport samplers were being used for internal texture fetches (probes, sky, etc.).

This also fixes a bug when using multiple viewports in the same scene.

This also fixes a bug where the texture bias would override the bias from 3D scale.
2023-11-08 23:26:08 +01:00
clayjohn
a74cfc2629 Use default samplers in base uniform set when rendering to reflection probes 2023-11-07 17:46:05 +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
Rémi Verschelde
2bc35308fc
Merge pull request #81494 from jsjtxietian/Fix-int-to-uint-implicit-cast-error-when-use-uniform-mat3-in-gles3
Fix int to uint implicit cast error when use mat3 uniform in compatibility renderer
2023-10-31 20:14:14 +01:00
Bastiaan Olij
e3b8af723e Fix cubemap downsampler logic 2023-10-31 10:36:42 +11:00
clayjohn
57ba7ded87 Fix bug with alpha to coverage by enabling depth discard when using alpha to coverage 2023-10-30 23:07:30 +01:00
jsjtxietian
967e0e6485 Fix int to uint implicit cast error when use uniform mat in gles3 2023-10-27 10:46:52 +08: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
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
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
9f49da24da
Merge pull request #83830 from jsjtxietian/fix-varying-assign-swizzle-check
Fix assign with swizzle in shader not doing varying validation check
2023-10-25 10:30:22 +02:00
Rémi Verschelde
4cc8f0f36d
Merge pull request #83649 from BastiaanOlij/no_2d_stereo
Skip 2D rendering if stereo enabled and fix couple of MSAA issues
2023-10-25 10:29:09 +02:00
Rémi Verschelde
9798ae3d6a
Merge pull request #82974 from mrjustaguy/Split-fix
Directional 2 Split Shadow Stabilization Fix
2023-10-25 10:28:21 +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
17aa5c5170
Merge pull request #83780 from jsjtxietian/prevent-null-variant-crash
Prevent `_allocate_placeholders` crash if `p_version->variants` is null
2023-10-23 12:42:04 +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
jsjtxietian
089e7f473d Fix assign with swizzle in shader not doing varying validation check 2023-10-23 17:52:50 +08:00
jsjtxietian
5f85a042b6 Prevent _allocate_placeholders crash if p_version->variants is null 2023-10-22 23:19:00 +08:00
Hugo Locurcio
0012478ecb
Add property hint for 2D shadow size project setting
Previously, it was possible to use zero or negative values, which are
invalid.

This also prevents crashing the engine by setting a shadow size of
0 or lower from a script.
2023-10-22 00:28:19 +02: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
Rémi Verschelde
2a995c09ac
Merge pull request #83639 from stoofin/frustum-buffer-size
Fix shadow map debug visualization camera frustum index buffer size
2023-10-20 15:12:34 +02:00
Bastiaan Olij
425e943576 Skip 2D rendering if stereo enabled and fix MSAA2D with 3D issue. 2023-10-20 14:02:55 +11:00
stoofin
1a2b66d4fc Fix shadow debug frustum index buffer size 2023-10-19 13:48:11 -07:00
Dario
4890e96556 Add an extra backbuffer color texture that can be used when an upscaler is in use.
Fixes issue #83152. Due to how BLUR_0 is reused for multiple purposes and requires being at native resolution for some post-processing effects to work, FSR2 will use an alternate texture at internal size to use as the screen texture read by shaders instead. The rendering pipeline will prefer using this texture if it exists.
2023-10-17 13:36:27 -03: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
bitsawer
f0a178cbdb Fix Mobile renderer shader instance uniform access 2023-10-15 18:09:54 +03: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
09b92a144d
Merge pull request #79921 from mandryskowski/ssr_transparency
Make Fresnel darken SSR instead of blending with specular
2023-10-11 22:37:02 +02:00
mandryskowski
5b2e54c17b Fresnel should darken the SSR reflections instead of blending them with specular light. 2023-10-11 18:58:22 +01:00
kobewi
41fa6c32b4 Disable update spinner when debug redraw is active 2023-10-11 13:21:29 +02: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
b4214b1686
Merge pull request #83004 from Chaosus/shader_language_fix_typo
Fix typo in `shader_language.cpp`
2023-10-09 23:23:35 +02: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
Yuri Rubinsky
f4bc779c4e Fix typo in shader_language.cpp 2023-10-08 18:55:40 +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
mrjustaguy
45948dc2c9 Directional 2 Split Shadow Stabilization Fix 2023-10-07 17:55:26 +02: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
f2ba8ec6ca
Merge pull request #81124 from bitsawer/fix_voxelgi_static_lights
Fix VoxelGI static light pairing
2023-10-06 00:24:29 +02:00
Rémi Verschelde
d351d40e29
Merge pull request #82877 from tomissj2/master
Fog shader: Fix undeclared identifier `global_variables`
2023-10-05 22:51:48 +02:00
Rémi Verschelde
950139e489
Merge pull request #82546 from viksl/volumetric-fog-spot-light-artifacts
Fix cluster artifacts and negative light
2023-10-05 22:50:12 +02:00
Rémi Verschelde
f02695cc04
Merge pull request #81138 from clayjohn/attribute-compression
Vertex and attribute compression
2023-10-05 22:48:55 +02:00
Rémi Verschelde
7ee2eb5c92
Merge pull request #80992 from viksl/volumetric-fog-NaN-issues
Fix volumetric fog NaN values in textures from starting at a zero Vector2.
2023-10-05 22:48:31 +02:00
tomissj2
e906eb8433
Fog Shader bugfix: 'global_variables' : undeclared identifier
If user try to use a global shader variable in a fog type shader we are getting shader error. The reason of this there is a typo in the fog.cpp. I other well working shaders types like sky the "action.global_buffer_array_variable" is "global_shader_uniforms.data". 
The investigation tracked here:
https://discord.com/channels/212250894228652034/1158918161337434172
2023-10-05 22:12:50 +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
kobewi
09b30be86d Add vararg call() method to C++ Callable 2023-10-05 11:35:29 +02:00
Rémi Verschelde
829d9bb6ba
Merge pull request #82451 from DarioSamo/mesh-storage-vertex-array-taa-fix
Fix mismatch between surface vertex array generation inside the function and the caller.
2023-10-05 10:08:34 +02:00
Rémi Verschelde
c255acebe8
Merge pull request #81607 from Rindbee/fix-UPDATE_WHEN_VISIBLE-not-work-in-exported-project
Fix `SubViewport` with `UPDATE_WHEN_VISIBLE` not working properly in exported project
2023-10-05 10:07:16 +02:00
Rémi Verschelde
ccbb91137f
Merge pull request #82766 from BastiaanOlij/fix_debanding_issue
Forgot to add debanding to config object
2023-10-04 15:45:39 +02:00
Rémi Verschelde
03ff9fedb6
Merge pull request #82101 from bruvzg/x11_gles
[X11] Add support for using EGL/GLES instead of GLX.
2023-10-04 15:35:05 +02:00
Rémi Verschelde
5680d729f2
Merge pull request #80939 from RandomShaper/fix_onion
Revive onion skinning
2023-10-04 15:33:25 +02:00
bruvzg
af00c4a54a
[X11] Add support for using EGL/GLES instead of GLX. 2023-10-04 14:15:36 +03:00
Bastiaan Olij
480fe5767e Forgot to add debanding to config object 2023-10-04 16:24:09 +11:00
Rémi Verschelde
24c166dfe2
Merge pull request #81619 from Chaosus/fix_shader_const
Re-allows constants in global space to be initialized with function call
2023-10-03 17:20:23 +02:00
Pedro J. Estébanez
77d8372285 Fix drawing of viewports without swapping buffers 2023-10-03 13:51:47 +02:00
mrjustaguy
dd3d380a01 Improve Split Blending
Improve Split Blending Logic
2023-10-02 13:22:51 +02:00
viksl
8a2d345a85 Fixes spotlight's cluster artifacts and negative light. 2023-10-01 09:13:30 +02:00
Dario
1e2c28b7fe Use internal texture at internal resolution for calculating luminance.
Fixes an error where the exposure was calculated incorrectly if a lower resolution scale was used while using FSR2. Now the behavior is consistent regardless of the resolution scale.
2023-09-29 13:41:40 -03:00