Commit graph

1310 commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
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
Dario
c3d1b52254 Fix mismatch between surface vertex array generation inside the function and the caller.
Fixes #82446.
2023-09-27 14:02:48 -03:00
Pedro J. Estébanez
f84c3d4477 Avoid trying to free null RIDs in FSR2 teardown 2023-09-27 16:07:41 +02:00
bitsawer
898d1a2d5f Fix errors when freeing GPUParticles 2023-09-27 11:46:31 +03:00
Rémi Verschelde
92ac0e54fe
Merge pull request #82353 from RPicster/optimizing-glow
Optimizing glow behaviour
2023-09-26 16:36:53 +02:00
Raffaele Picca
de42258154 Optimizing glow behaviour 2023-09-26 11:56:28 +02:00
A Thousand Ships
fdd3d36c6d [Servers] Replace ERR_FAIL_COND with ERR_FAIL_NULL where applicable 2023-09-25 18:45:30 +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
Rémi Verschelde
8788b20ea0
Merge pull request #81775 from darksylinc/matias-taa-msaa
Fix massive validation errors when enabling TAA + MSAA
2023-09-24 23:32:31 +02:00
Rémi Verschelde
525c72ec6d
Merge pull request #81350 from DarioSamo/mipmap-bias
Fix mipmap bias behavior by refactoring how samplers are created by Material Storage.
2023-09-22 22:04:22 +02:00
bitsawer
dda8846dea Fix LightmapGI shading sometimes being unlit or black 2023-09-20 01:41:32 +03: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
4de0ed4adf Fix massive validation errors when enabling TAA + MSAA
TAA + MSAA would make Godot request unnecessary flags for an MSAA
velocity texture. flags that were not even actually needed.

This was causing:
 1. Unsupported GPUs to fail completely (e.g. Intel Arc 770)
 2. Wrong codepaths to be followed (causing validation errors, possibly
crashes or glitches)
 3. Unnecessary performance impact in all GPUs.

See
https://github.com/godotengine/godot/issues/71929#issuecomment-1722274359
2023-09-16 19:31:04 -03:00
风青山
59d0fdbacc Fix SubViewport with UPDATE_WHEN_VISIBLE not working properly in exported project
The issue is primarily due to `RSG::texture_storage->render_target_was_used()`
returning inconsistent results in the editor and exported projects.
2023-09-13 16:02:10 +08: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
Dario
9b91750fb1 Fix mipmap bias behavior by refactoring how samplers are created by Material Storage.
Introduces a new structure to store samplers created with certain parameters instead of storing a 'custom' set of samplers. Allows viewports to correctly configure the mipmap bias and use it when rendering the scene.
2023-09-06 11:24:19 -03:00
Yuri Sizov
c5562d1058 Merge pull request #81288 from darksylinc/matias-index16
Use 16-bit index buffers instead of 32 when unnecessary
2023-09-06 14:49:20 +02:00
Milan Gruner
45a33cc749 Implement render mode fog_disabled and BaseMaterial3D setting Disable Fog 2023-09-05 18:15:02 +02:00
Matias N. Goldberg
53837adc00 Use 16-bit index buffers instead of 32 when unnecessary 2023-09-03 19:59:10 -03:00
Rémi Verschelde
aa9f3583e8
Merge pull request #80933 from ChibiDenDen/clear_color_mobile_fix
Fix clear color on mobile renderer
2023-08-31 08:53:41 +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
ChibiDenDen
df25e87842 fix clear color on mobile renderer 2023-08-30 00:57:59 +03:00
Rémi Verschelde
7792f9e6ef
Merge pull request #81081 from RandomShaper/fixup_cluster_special
Fixup special case of cluster render
2023-08-29 12:47:07 +02:00
Rémi Verschelde
a6c72f9829
Merge pull request #81074 from DarioSamo/flip-motion-vectors
Flip convention of motion vectors.
2023-08-29 12:46:44 +02:00
Rémi Verschelde
9d74c24232
Merge pull request #80723 from DarioSamo/debug-motion-vectors
Improve visual feedback when using the motion vectors debug view option
2023-08-29 12:44:45 +02:00
Rémi Verschelde
4b69e8be85
Merge pull request #80688 from DarioSamo/gpu-particles-motion-vectors
Add motion vector support for GPU 3D Particles
2023-08-29 12:43:58 +02:00
viksl
00c2fb4a08 Instead of Vector2() start volumetric fog at frustum_near_size to avoid INF and NaN in shaders. 2023-08-28 21:56:23 +02:00
Rémi Verschelde
22b7fcabc6
Merge pull request #80889 from bitsawer/fix_sdfgi_texture_clear
Clear SDFGI textures when created
2023-08-28 20:37:34 +02:00
Pedro J. Estébanez
e9b4d25f20 Fixup special case of cluster render 2023-08-28 18:59:07 +02:00
Dario
293302ccd8 Add motion vector support for GPU 3D Particles.
Add the capability of resizing the transforms buffer for particles to be double its size and alternate where the current output is written to. Only works for particles that use index as their draw order.
2023-08-28 10:56:02 -03:00
Dario
e7d3a7c2aa Improve visual feedback when using the motion vectors debug view option.
Replaces the current method of showing the raw values of the motion vectors buffer to display a grid of lines instead with a new shader.
2023-08-28 10:14:21 -03:00
Dario
f14c944c21 Flip convention of motion vector to point from current pixel to the previous pixel. 2023-08-28 09:30:20 -03:00
bitsawer
09c887ce82 Clear SDFGI textures when created 2023-08-28 14:13:36 +03: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
Bastiaan Olij
8449331f13 Fix missing decal mask in mobile renderer 2023-08-23 11:14:10 +10:00
bitsawer
d6f45e4f14 Fix Vulkan crash with many Omni/SpotLights, Decals or ReflectionProbes 2023-08-21 12:46:15 +03:00
Rémi Verschelde
10b1f823bc
Merge pull request #80323 from garychia/canvas_point_size
Ensure `POINT_SIZE` takes effect in the canvas item shader
2023-08-21 08:21:14 +02:00
Dario
e2984af013 Add motion vector support for animated surfaces like skeletons or blend shapes.
Extends mesh instances that required custom vertex buffers to create two alternating buffers that are written to and binds them to use them as the previous vertex buffer when generating motion vectors.
2023-08-16 11:37:42 -03: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
623156a05c
Merge pull request #80651 from clayjohn/RD-2D-HDR-MSDF
Fallback to linear color texture when using 2D HDR and MSDF font
2023-08-16 09:17:01 +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
bitsawer
41def3740a Fix global shader uniform texture loading 2023-08-15 14:18:26 +03:00
clayjohn
40d70bf9b8 Fallback to linear color texture when using 2D HDR and MSDF font 2023-08-15 11:08:29 +02:00
Dario
420f3890b0 Fix incorrect error checking and notifications introduced in PR #80414.
There was an error in the other branch of the refactored function where the size of the array was not properly multiplied by the size of the float to check against the buffer size. This was only an error in the error-checking itself and not the functionality. There was also an error where the proper notification was not emitted whenever the buffer for the multimesh is recreated to invalidate the previous references the renderer might've created to it. This fixes CPU Particles getting corrupted when they're created without emission being enabled.
2023-08-13 09:08:20 -03: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
Bastiaan Olij
715ebcc3f1 Fix tonemapper, incorrect vertex count was specified 2023-08-11 10:07:16 +10:00
Dario
5155870d64 Improve handling of motion vectors for multimesh instances.
Fixes #67287. There was a subtle error where due to how enabling motion vectors for multi-meshes was handled, only the first instance would have a valid transforms buffer and the rest would point to an invalid buffer. This change moves over the responsibility of enabling motion vectors only when changes happen to the individual 3D transforms or the entire buffer itself. It also fixes an unnecessary download of the existing buffer that'd get overwritten by the current cache if it exists. Another fix is handling the case where the buffer was not set, and enabling motion vectors would not cause the buffer to be recreated correctly.
2023-08-09 08:17:07 -03:00
Rémi Verschelde
00de140d46
Merge pull request #80368 from BastiaanOlij/fix_mobile_error_on_scale
Fix issue with four subpasses always been requested in mobile renderer
2023-08-08 16:58:47 +02: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
8a3a3aaebe
Merge pull request #80356 from darksylinc/voxelgi-dispatch-underflow
Fix integer underflow when rounding up in VoxelGI
2023-08-07 14:55:33 +02:00