1
0
Fork 0
Commit Graph

5614 Commits

Author SHA1 Message Date
Rémi Verschelde d0a0f5834e
Merge pull request #97571 from j20001970/camerafeed-virtual
Add `activate_feed` and `deactivate_feed` virtual bind to CameraFeed
2024-12-18 00:39:38 +01:00
Rémi Verschelde 190ae9f9dc
Merge pull request #100302 from clayjohn/light2d-optimize
Optimize PointLight2D shadow rendering by reducing draw calls and RD state changes
2024-12-17 22:59:54 +01:00
clayjohn 7c61252dd7 Optimize PointLight2D shadow rendering by reducing draw calls and RD state changes.
This dramatically reduces the CPU time spent on rendering shadows for PointLight2Ds
2024-12-17 07:41:09 -08:00
Rémi Verschelde d60c0e21a6
Merge pull request #88313 from wagnerfs/run-time-anisotropic-filtering
Allow changing the anisotropic filter level at run-time per Viewport
2024-12-17 16:18:38 +01:00
Rémi Verschelde d701bc0032
Merge pull request #83917 from Calinou/directionallight3d-add-specular
Implement per-light Specular property in DirectionalLight3D
2024-12-17 16:18:29 +01:00
Jason Kuo 3720de4b6f Add `activate_feed` and `deactivate_feed` virtual bind to CameraFeed 2024-12-17 10:48:10 +08:00
Andrew_Shobbrook e42def12d0
Implement per-light Specular property in DirectionalLight3D 2024-12-16 19:18:18 +01:00
Alex Threlfo 34ebec3748 fix: crash in scenes with more than 8 shadowed directional lights 2024-12-15 19:13:07 +11:00
Rémi Verschelde ffe53cba3c
Merge pull request #100374 from hpvb/fix-rendering-ubsan
Fix ubsan reported errors in rendering
2024-12-14 18:25:46 +01:00
Rémi Verschelde e271b2ca08
Merge pull request #99145 from dsnopek/xr-lock-camera
XR: Allow locking the camera to the `XROrigin3D` for benchmarking or automated testing
2024-12-14 18:25:21 +01:00
Thaddeus Crews dc5f1b7a28
Merge pull request #100319 from Flarkk/fix_light_shadow_range
Fix shadows of long range `OmniLight3D` and `SpotLight3D`
2024-12-13 16:19:39 -06:00
Thaddeus Crews 9ecdeb3723
Merge pull request #98747 from tetrapod00/standardize-renderer-strings
Standardize terms for renderers in error strings
2024-12-13 16:19:37 -06:00
Thaddeus Crews 6594a6364e
Merge pull request #100213 from DarioSamo/pipeline-hash-map-thread-safety
Improve thread-safety of pipeline hash map.
2024-12-13 16:19:34 -06:00
Thaddeus Crews 9f0c6231c7
Merge pull request #100236 from Flarkk/fix_spot_clustering
Fix wide `SpotLight3D` clustering
2024-12-13 16:19:26 -06:00
Thaddeus Crews f2c8f17906
Merge pull request #100325 from hpvb/fix-rendering-alignment
Fix several ubsan reported misaligned accesses
2024-12-13 16:19:20 -06:00
HP van Braam 062d74bb9c Fix ubsan reported errors in rendering
This allows the TPS demo to run without an ubsan reports from any of the
rendering code.
2024-12-13 21:27:37 +01:00
HP van Braam e674379764 Fix several ubsan reported misaligned accesses
These misaligned accesses are shown in all of our CI hooks. It turned
out to not be difficult to fix.

It is likely that this will improve performance for aarch64.
2024-12-13 15:32:35 +01:00
Florent Guiocheau 02f05cf0ac Fix wide angle spotlight clustering 2024-12-13 11:28:42 +01:00
clayjohn 356fa37f89 Small fixups for the new reflection probe blending 2024-12-12 17:29:21 -08:00
Thaddeus Crews bfc66f0608
Merge pull request #100282 from devloglogan/motion-vectors-openxr
Add renderer motion vectors API for use with OpenXR
2024-12-12 16:13:36 -06:00
Thaddeus Crews 7c015a768f
Merge pull request #99958 from lander-vr/reflection-probe-blend-property
Add Blend Distance property to ReflectionProbe
2024-12-12 16:13:32 -06:00
Thaddeus Crews b7501d219c
Merge pull request #100322 from darksylinc/matias-tf-comment-fix
Fix grammar / spelling in comments
2024-12-12 16:13:25 -06:00
Matias N. Goldberg a1b44ec7a7 Fix grammar / spelling in comments
Minor fixes for changes introduced in #99257 that could not be fixed in
time as the PR needed to be expedited.
2024-12-12 12:47:08 -03:00
Florent Guiocheau 5125adf40b Fix large range point lights shadows 2024-12-12 15:37:38 +01:00
Rémi Verschelde 562dd1ad85
Merge pull request #100305 from clayjohn/directional-light-2d-mask
Remove positional light mask from directional lights in Canvas Item shaders.
2024-12-12 14:10:24 +01:00
Rémi Verschelde 0e5c337453
Merge pull request #85653 from BlueCube3310/lightmap-gi-shadowmask
Implement LightmapGI shadowmasks
2024-12-12 14:09:30 +01:00
BlueCube3310 189c8eb671 Implement shadowmasks for LightmapGI
Co-authored-by: dearthdev <nathandearthdev@gmail.com>
2024-12-12 11:00:28 +01:00
clayjohn f8827271d7 Remove positional light mask from directional lights in Canvas Item shaders. 2024-12-12 00:20:07 -08:00
Thaddeus Crews 3dacc5fb7f
Merge pull request #95737 from Chaosus/shader_fix_varyings
Fix shader crash when using varyings with non-`flat` integer type
2024-12-11 17:36:06 -06:00
Thaddeus Crews ef3086bcdb
Merge pull request #94947 from ChrisBase/issue_94946
Change some image error messages to output the file path
2024-12-11 17:35:58 -06:00
Thaddeus Crews 572e1d6643
Merge pull request #100289 from bruvzg/token_name
[Shader Language] Add missing token name.
2024-12-11 17:35:44 -06:00
Thaddeus Crews b773fff5a4
Merge pull request #99622 from Chaosus/shader_fix_global_empty_type
Add `samplerExternalOES` type to shader globals
2024-12-11 17:35:40 -06:00
Thaddeus Crews 153ef23483
Merge pull request #100129 from smix8/pathunspaghettification
Despaghettify NavigationServer path queries
2024-12-11 17:35:38 -06:00
Thaddeus Crews 23afda44e4
Merge pull request #100257 from darksylinc/matias-minimize-leak
Keep processing Graphics if there are pending operations
2024-12-11 17:35:35 -06:00
Thaddeus Crews db2088b0cd
Merge pull request #100126 from dsnopek/gdextension-missing-gdvirtual-bind
Add missing `GDVIRTUAL_BIND()` for `AudioStream::_has_loop()` and `::_get_bar_beats()`
2024-12-11 17:35:33 -06:00
Thaddeus Crews c5e6f6276b
Merge pull request #100110 from DarioSamo/rd-get-data-async
Implement `RD::buffer_get_data_async()` and `RD::texture_get_data_async()`
2024-12-11 17:35:29 -06:00
smix8 476479419b Despaghettify NavigationServer path queries
Despaghettify NavigationServer path queries.
2024-12-11 22:29:48 +01:00
Dario 054891de04 Implement buffer_get_data_async and texture_get_data_async. 2024-12-11 11:55:23 -08:00
Pāvels Nadtočajevs 133471afb0 [Shader Language] Add missing token name. 2024-12-11 21:05:14 +02:00
Matias N. Goldberg acf439e96d Keep processing Graphics if there are pending operations
Fixes #90017
Fixes #90030
Fixes #98044

This PR makes the following changes:

# Force processing of GPU commands for frame_count frames

The variable `frames_pending_resources_for_processing` is added to track
this.

The ticket #98044 suggested to use `_flush_and_stall_for_all_frames()`
while minimized.

Technically this works and is a viable solution.

However I noticed that this issue was happening because Logic/Physics
continue to work "business as usual" while minimized(\*). Only Graphics
was being deactivated (which caused commands to accumulate until window
is restored).

To continue this behavior of "business as usual", I decided that GPU
work should also "continue as usual" by buffering commands in a double
or triple buffer scheme until all commands are done processing (if they
ever stop coming). This is specially important if the app specifically
intends to keep processing while minimized.

Calling `_flush_and_stall_for_all_frames()` would fix the leak, but it
would make  Godot's behavior different while minimized vs while the
window is presenting.

\* `OS::add_frame_delay` _does_ consider being minimized, but it just
throttles CPU usage. Some platforms such as Android completely disable
processing because the higher level code stops being called when the app
goes into background. But this seems like an implementation-detail that
diverges from the rest of the platforms (e.g. Windows, Linux & macOS
continue to process while minimized).

# Rename p_swap_buffers for p_present

**This is potentially a breaking change** (if it actually breaks
anything, I ignore. But I strongly suspect it doesn't break anything).

"Swap Buffers" is a concept carried from OpenGL, where a frame is "done"
when `glSwapBuffers()` is called, which basically means "present to the
screen".

However it _also_ means that OpenGL internally swaps its internal
buffers in a double/triple buffer scheme (in Vulkan, we do that
ourselves and is tracked by `RenderingDevice::frame`).

Modern APIs like Vulkan differentiate between "submitting GPU work" and
"presenting".

Before this PR, calling `RendererCompositorRD::end_frame(false)` would
literally do nothing. This is often undesired and the cause of the leak.
After this PR, calling `RendererCompositorRD::end_frame(false)` will now
process commands, swap our internal buffers in a double/triple buffer
scheme **but avoid presenting to the screen**.

Hence the rename of the variable from `p_swap_buffers` to `p_present`
(which slightly alters its behavior).
If we want `RendererCompositorRD::end_frame(false)` to do nothing, then
we should not call it at all.

This PR reflects such change: When we're minimized **_and_**
`has_pending_resources_for_processing()` returns false, we don't call
`RendererCompositorRD::end_frame()` at all.

But if `has_pending_resources_for_processing()` returns true, we will
call it, but with `p_present = false` because we're minimized.

There's still the issue that Godot keeps processing work (logic,
scripts, physics) while minimized, which we shouldn't do by default. But
that's work for follow up PR.
2024-12-11 14:13:29 -03:00
Rémi Verschelde 44dfa7e710
Merge pull request #99895 from mihe/jolt-physics
Add Jolt Physics as an alternative 3D physics engine
2024-12-11 14:53:57 +01:00
Mikael Hermansson d470c2ac6a Add Jolt Physics as an alternative 3D physics engine
Co-authored-by: Jorrit Rouwe <jrouwe@gmail.com>
2024-12-11 13:57:25 +01:00
devloglogan 3deb5884d7 Renderer agnostic motion vector rendering/OpenXR changes 2024-12-10 15:59:17 -06:00
Thaddeus Crews cf038deb10
Merge pull request #100222 from DarioSamo/partial-coverage-fix
Fix incorrect return value on partial coverage detection.
2024-12-10 14:16:13 -06:00
Thaddeus Crews 69c67ede17
Merge pull request #88950 from bruvzg/excap
[macOS, Windows] Add support for excluding windows from a screenshot.
2024-12-10 14:16:10 -06:00
Thaddeus Crews 25122e7dd3
Merge pull request #100081 from clayjohn/rd-clearcoat
Ensure schlick is available when using clearcoat with GGX
2024-12-10 14:16:07 -06:00
Thaddeus Crews 66dea152b5
Merge pull request #99257 from darksylinc/matias-TheForge-pr04-excluded-ubo+render_opt
Improvements from TheForge
2024-12-10 14:15:55 -06:00
Thaddeus Crews ef0d1e0eb9
Merge pull request #100001 from clayjohn/rd-uniform-set-cache
Increase the size of the uniform set cache to 4096 to avoid cache thrashing from projects with high numbers of unique textures
2024-12-10 14:15:48 -06:00
Thaddeus Crews a167afd70a
Merge pull request #96771 from clayjohn/RD-static-lighting
Avoid calculating dynamic lights when lights are already baked using the static bake mode in the Forward+ renderer
2024-12-10 14:15:41 -06:00
bruvzg 9fece033ab [macOS, Windows] Add support for excluding windows from a screenshot. 2024-12-10 11:00:13 +02:00