Commit Graph

2584 Commits

Author SHA1 Message Date
Yuri Rubinsky
03641a425f
Merge pull request #93650 from Chaosus/shader_stage_custom_funcs
Allow using stage functions inside custom shader functions
2024-10-24 09:32:04 +03:00
m-pranav-r
fcea158927 Fixed light culling mask behavior in Mobile and Compat renderers 2024-10-23 08:38:56 +05:30
Matias N. Goldberg
668c9b74e2 Fix race conditions in breadcrumbs
Adds "--accurate-breadcrumbs" CLI command

Additionally, leave out breadcrumbs code in non-debug, non-dev builds.
Fix regression introduced in #98388 where command_insert_breadcrumb() is
called even in non-debug builds.

Fixes #98338
2024-10-22 22:08:46 -03:00
Travis Lange
2e1fc241f9 fix headless import attempting to load graphics driver 2024-10-22 16:17:09 -04:00
Clay John
533c616cb8
Merge pull request #98391 from RandomShaper/rd_thread_switch
Implement thread ownership change for RenderingDevice
2024-10-22 13:10:32 -07:00
Thaddeus Crews
7815ccbdd5
Merge pull request #98294 from Calinou/texture-placeholders-use-shared-copy
Use a shared copy of placeholder textures, tweak placeholder appearance
2024-10-21 16:39:29 -05:00
Thaddeus Crews
1a9628f937
Merge pull request #98267 from Chaosus/shader_pp_error
Add `#error` preprocessor directive to shading language
2024-10-21 16:39:23 -05:00
Thaddeus Crews
a14e9e99e5
Merge pull request #98388 from DarioSamo/sync-fixes
Improve synchronization of rendering after changes from transfer queues.
2024-10-21 16:39:21 -05:00
Thaddeus Crews
178342b058
Merge pull request #98258 from LainAmongYou/fix-bgra
Add support for BGRA textures with Texture*RD
2024-10-21 16:39:20 -05:00
Thaddeus Crews
291e4b78e2
Merge pull request #98237 from dustdfg/os_transitive_image_headers_refactor
Don't include `core/io/image.h` in `core/os/os.h`
2024-10-21 16:39:15 -05:00
Thaddeus Crews
c145e85011
Merge pull request #98226 from m-pranav-r/fix-volumetric-shadows
Fix incorrect depth comparison used to calculate volumetric fog shadowing
2024-10-21 16:39:11 -05:00
Thaddeus Crews
5e65747d90
Merge pull request #97925 from huwpascoe/lightmap_dynamic_bugfix
Fix updating dynamic objects in LightmapGI
2024-10-21 16:39:04 -05:00
Pedro J. Estébanez
d5d509bbd6 Implement thread ownership change for RenderingDevice 2024-10-21 20:56:42 +02:00
Dario
4ad424234f Improve synchronization of rendering commands after changes from transfer queues.
Fix an error where barriers are expected to be inserted for the swap chain textures.
Add the relevant synchronization stages and accesses to resources between frames.
Fix an error where debug labels weren't finished correctly between frames.
Breadcrumbs are now behind an optional macro as they currently lead to synchronization errors which are harmless.
2024-10-21 11:27:56 -03:00
clayjohn
62516df757 Precompute projection matrices when rendering 2D shadows 2024-10-18 11:55:00 -07:00
Yevhen Babiichuk (DustDFG)
af6d260c17 Don't include core/io/image.h in core/os/os.h
`core/os/os.h` doesn't use `core/io/image.h`. It just brings
transitive dependencies. Lots of dependencies because `core/os/os.h`
is transitively included in almost every file of godot

Also added `core/io/image.h` into files^1 where `Ref<Image>` and `core/os/os.h`
were used to prevent obscure errors involving `Ref<Image>`

^1 except those which include `core/io/image_loader.h` or `core/io/image.h` by
corresponding .h file with the same name

Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
2024-10-18 19:04:19 +03:00
Hugo Locurcio
35a20fa96a Use a shared copy of placeholder textures, tweak placeholder appearance
This reduces memory usage a bit in case multiple placeholders were
requested, e.g. when using multiple NoiseTextures with no noise property
defined.

The placeholder texture's appearance was also changed from a plain magenta
color to a checkerboard alternating between magenta and black pixels.
This makes it easier to spot when the placeholder texture ends up
being used in a complex scene (usually by accident).
The texture's dimensions remain identical to keep the physical size
identical in 2D.
2024-10-18 14:51:51 +02:00
Dario
8c3e46b13b Move transitions of textures initialized by transfer workers to the main graphics queue.
Also adds a new possible texture layout and API trait to support a particular behavior in D3D12 where only the COMMON layout is supported in copy queues. Fixes #98158.
2024-10-18 09:15:25 -03:00
Chaosus
155cf6a5b6 Add #error preprocessor directive to shading language 2024-10-18 10:56:58 +03:00
Clay John
0ce4d8fcd3
Merge pull request #98086 from DarioSamo/transfer-queues-semaphores
Rewrite semaphore handling for transfer workers.
2024-10-17 16:54:43 -07:00
Clay John
a2117f5796
Merge pull request #98187 from EnlightenedOne/98102
Fix Mobile Renderer - Shadow Disabled and User Vertex Lighting flags
2024-10-17 16:37:09 -07:00
Dario
7a936e8bac Rewrite semaphore handling for transfer workers. 2024-10-17 14:07:08 -03:00
yesfish
274076c5be Lightmap Dynamic Bugfix 2024-10-17 16:27:30 +01:00
Yuri Rubinsky
ad7e7a51b2 Allow usage of discard inside custom shader functions 2024-10-17 16:06:33 +03:00
Yuri Rubinsky
74c000db17 Allow using stage functions inside custom shader functions 2024-10-17 15:47:01 +03:00
Lain
4e6d9813b2 Add support for BGRA textures with Texture*RD
This adds the ability to use BGRA textures created with RenderingDevice
with classes such as Texture2DRD.
2024-10-16 22:31:43 -07:00
Rudolph Bester
ed3f990952 Alternative fix to occlusion culling where all math is based on Euclidean distance. 2024-10-17 05:59:37 +02:00
m-pranav-r
c12001a9dc Fix incorrect depth comparison used to calculate volumetric fog shadowing 2024-10-16 14:55:41 +05:30
kleonc
8d3e9aa7ae Revert incorrect rounding when 2D transform snapping 2024-10-15 10:43:42 +02:00
EnlightenedOne
cef515506b Move preprocessor to end of line for iterator, remove redeclaration incompatible with ubershader method definitions 2024-10-14 22:19:16 +01:00
Thaddeus Crews
af77100e39
Merge pull request #92441 from Chaosus/shader_custom_func_overloads
Implement custom function overloading in shading language
2024-10-14 14:09:59 -05:00
Thaddeus Crews
32cc2feba2
Merge pull request #93025 from kleonc/y-sort-physics-interpolation
Account for physics interpolation and transform snapping when Y-sorting
2024-10-14 14:09:30 -05:00
Thaddeus Crews
bb20444998
Merge pull request #97744 from Nazarwadim/use_local_vector_for_skeleton
Use `LocalVector` for skeleton
2024-10-10 18:13:19 -05:00
Yuri Rubinsky
1c86feee0a Implement custom function overloading in shading language 2024-10-08 15:54:00 +03:00
Clay John
842f982397
Merge pull request #96819 from clayjohn/GLES3-instance-uniforms
Implement instance uniforms in Compatibility renderer
2024-10-07 13:41:47 -06:00
DarioSamo
fa1aacb455 Configure MSAA properly in canvas renderer's pipelines. 2024-10-04 10:45:59 -03:00
clayjohn
65f3df5923 Properly utilize surface information when creating pipelines and vertex arrays in canvas renderer 2024-10-03 16:27:14 -07:00
Dario
e2c6daf7ef Implement asynchronous transfer queues, thread guards on RenderingDevice. Add ubershaders and rework pipeline caches for Forward+ and Mobile.
- Implements asynchronous transfer queues from PR #87590.
- Adds ubershaders that can run with specialization constants specified as push constants.
- Pipelines with specialization constants can compile in the background.
- Added monitoring for pipeline compilations.
- Materials and shaders can now be created asynchronously on background threads.
- Meshes that are loaded on background threads can also compile pipelines as part of the loading process.
2024-10-02 15:11:58 -03:00
Nazarii
1ba168fcbc Use local vector for skeleton 2024-10-02 20:38:40 +03:00
Patrick Owen
d720eb80e1 Clamp UV-coordinates to centers of outermost texels when configured to do so
In addition, fix region_filter_clip_enabled documentation to be consistent with AtlasTexture.xml, since that is the option whose behavior was fixed
2024-09-29 05:57:19 -04:00
Rémi Verschelde
285ebed828
Merge pull request #83360 from ywmaa/vertex_shading
Implement vertex shading
2024-09-29 00:46:48 +02:00
ywmaa
0a9ad8f9de
Implement vertex shading
This adds support in all backends, but the Compatibility renderer works the best.
Mobile and Forward+ can only support one directional light shader (the first in the tree)
While the Compatibility renderer supports any number of shadows.

Co-authored-by: Clay John <claynjohn@gmail.com>
2024-09-29 00:36:09 +02:00
clayjohn
4d635b7a3a Combine texture and instance data into one uniform set in the 2D renderer
Co-authored-by: Stuart Carnie <stuart.carnie@gmail.com>
2024-09-27 11:05:46 -07:00
Rémi Verschelde
a4c1804cab
Merge pull request #97483 from akien-mga/clang-format-19.1.0
CI: Update `clang-format` pre-commit hook to 19.1.0
2024-09-26 12:46:04 +02:00
Rémi Verschelde
b64b464ba7
Merge pull request #97481 from Chaosus/shader_fix_void_return
Fix shader crash when return a void function call
2024-09-26 12:46:01 +02:00
Rémi Verschelde
bfe74eca3b
Merge pull request #97428 from clayjohn/shadow-filter-jitter-rebase
Jitter shadow map dithering pattern across frames when TAA is enabled
2024-09-26 12:45:50 +02:00
Rémi Verschelde
991e6c92ab
Merge pull request #96923 from Repiteo/style/warning-admonition
Style: Add `WARNING:` as new comment admonition
2024-09-26 12:45:38 +02:00
Rémi Verschelde
c92a6c7e27
CI: Update clang-format pre-commit hook to 19.1.0 2024-09-26 11:46:12 +02:00
Chaosus
3828d45e31 Fix shader crash when return a void function call 2024-09-26 11:20:39 +03:00
Thaddeus Crews
32c83a228d
Style: Add WARNING: as new comment admonition 2024-09-25 09:44:42 -05:00
Thaddeus Crews
9f9ee0c813
SCons: Add unobtrusive type hints in SCons files 2024-09-25 09:34:35 -05:00
Rémi Verschelde
73bf121ceb
Merge pull request #93786 from alvinhochun/viewport-pixel-snap-fix
Apply "snap 2D transforms to pixel" to viewport
2024-09-25 12:39:10 +02:00
Rie
5efa6ba489
Fix incorrect Reinhard tonemap operator 2024-09-25 12:34:23 +02:00
Hugo Locurcio
0eb06da057 Jitter shadow map dithering pattern across frames when TAA is enabled
This improves shadow quality by reducing the visibility of the noisy
pattern caused by dithering.

This jittering also applies when FSR2 is enabled, as it provides its own
form of temporal antialiasing.

Co-authored-by: Clay John <claynjohn@gmail.com>
2024-09-24 15:52:07 -07:00
Alvin Wong
1bd66af54c Apply snap 2D transforms to pixel to viewport
We shall not leave the viewport transform to be rounded by the code for
rounding canvas items. Since the viewport transform is inverse to the
camera transform, we get incorrect rounding at the halfway point that
misaligns the viewport and the canvas item which the camera is
following.

Instead, reintroduce viewport rounding, but do it in a way that matches
the rounding of canvas items. Also take into account the half-pixel
offset of the centre point when viewport dimension is not divisible by
two.  For `CanvasLayer`s that follows viewport, take into account the
scale when rounding. Overall this should work better compared to the
rounding in Godot 4.2 (and earlier).
2024-09-23 20:34:11 +08:00
Jiang Yiheng
864d4fb32a Fix hash calculation for NTSliceKey
A bug was introduced from 057367bf by adding FSR 2.2.1 support.
Which increases hash collision and hurts performance.
2024-09-22 21:08:18 +08:00
Rémi Verschelde
5f5c690481
Merge pull request #97260 from clayjohn/pixel_snap
Calculate pixel snap in canvas space instead of world space
2024-09-21 11:50:52 +02:00
clayjohn
e75900e1ad Calculate pixel snap in canvas space instead of world space
This ensures that you are actually snapping to pixels in the viewport and not an arbitrary amount
2024-09-20 17:43:33 -07:00
David Snopek
1a6f8512bc Add external texture support (GLES3)
Co-authored-by: Fredia Huya-Kouadio <fhuyakou@gmail.com>
Co-authored-by: Mauricio Narvaez <nvz@meta.com>
2024-09-20 10:48:32 -05:00
Rémi Verschelde
34dd5e0c37
Merge pull request #97217 from stuartcarnie/97185_subpixel_rendering
Metal: Fix subpixel blending; fix inconsistent blend state
2024-09-20 16:07:03 +02:00
Thaddeus Crews
b37fc1014a
Style: Apply new clang-format changes 2024-09-20 08:09:48 -05:00
Stuart Carnie
e826ab9ba9
[2D,Metal]: Fix subpixel blending; fix inconsistent blend state in Metal 2024-09-20 15:16:31 +10:00
Rémi Verschelde
b1b4c5da4b
Merge pull request #96928 from dsnopek/rename-and-expose-texture-create-external
Expose a function to create textures from a native handle in the compatibility renderer
2024-09-19 17:13:27 +02:00
David Snopek
7d56b09f23 Expose a function to create textures from a native handle in the compatibility renderer 2024-09-19 09:05:32 -05:00
Stuart Carnie
5b5dc00c52
2D: Remove redundant assignment 2024-09-17 06:32:49 +10:00
Rémi Verschelde
8c6210a3eb
Merge pull request #92290 from clayjohn/LOD-fixes
Use distance to AABB surface to calculate Mesh LOD instead of using supports
2024-09-16 13:34:04 +02:00
Stuart Carnie
c113e5b143
2D: Fix use-after-free in batch rendering
Closes #96960
Fixes regression of #95574 using fix from #95666
2024-09-14 07:50:39 +10:00
Chaosus
4a16a0d60c Fix broken sky shader 2024-09-13 08:53:26 +03:00
Rémi Verschelde
573badf150
Merge pull request #96875 from stuartcarnie/sgc/small_optimisations
[Editor, Servers] Minor optimizations
2024-09-12 09:25:53 +02:00
Rémi Verschelde
8d9a446397
Merge pull request #95473 from Chaosus/shader_fix_switch_bugs
Fix shader incorrectly expects `int` on `uint` and vice-versa in cases
2024-09-12 09:17:43 +02:00
clayjohn
7ff106f828 Use distance to AABB surface to calculate Mesh LOD instead of using supports 2024-09-11 14:17:09 -07:00
Stuart Carnie
5cfacc8767
[Editor,Servers]: Minor optimizations 2024-09-12 06:22:04 +10:00
Stuart Carnie
a657ea42f1
2D: Add batching to RendererCanvasRenderRD 2024-09-12 05:26:06 +10:00
Chaosus
7d9ced5311 Fix shader crash when using unary minus in expression 2024-09-11 16:46:09 +03:00
Chaosus
b2611c198e Fix shader incorrectly expects int on uint and vice-versa in cases 2024-09-11 09:22:27 +03:00
clayjohn
29df589632 Implement instance uniforms in Compatibility renderer 2024-09-10 12:20:47 -07:00
Rémi Verschelde
bc4c60c933
Merge pull request #94893 from rune-scape/no-const-cast-mesh-storage
Avoid `const_cast` in `mesh_storage.h`
2024-09-10 09:51:22 +02:00
Rémi Verschelde
27552a2f26
Merge pull request #96758 from RandomShaper/fix_the_shift_must_go_on
RenderingDevice: Fix uncapped mipmap sizes causing div-by-zero
2024-09-09 17:52:03 +02:00
Pedro J. Estébanez
7f1989bac1 RenderingDevice: Fix uncapped mipmap sizes causing div-by-zero 2024-09-09 17:10:47 +02:00
Yuri Rubinsky
af92fdb0ac Add basic support to evaluate operator value in shader language 2024-09-09 15:12:11 +03:00
Rémi Verschelde
aa07333abe
Merge pull request #96114 from BlueCube3310/sh-lightmap-packing
LightmapGI: Pack L1 SH coefficients for directional lightmaps
2024-09-06 22:38:29 +02:00
BlueCube3310
a89f4fa5a9 LightmapGI: Pack L1 SH coefficients for directional lightmaps 2024-09-05 22:46:58 +02:00
kleonc
c170f1afd2 Don't recalculate final render transforms for Y-sorted canvas items 2024-09-05 17:45:38 +02:00
kleonc
029045bcb6 Account for physics interpolation and transform snapping when Y-sorting 2024-09-05 17:45:37 +02:00
Rémi Verschelde
82d7531a2e
Merge pull request #95990 from Breush/76166-sky-auto-radiance
Sky: Adapt radiance size if `AUTOMATIC_MODE` resolves to `REALTIME`
2024-09-04 17:12:02 +02:00
Alexis Breust
44e526d3d5 Sky: No more auto-selecting REALTIME mode if radiance is not 256 2024-09-04 10:54:08 +02:00
Rémi Verschelde
49ed6c558c
Merge pull request #86809 from clayjohn/TAA-disocclusion
Tune TAA disocclusion scale to avoid rejecting all samples during motion.
2024-09-03 16:13:26 +02:00
Rémi Verschelde
d1c27f239d
Merge pull request #96486 from ComycSans/black_sky
Fix `SkyRD::Sky::free()` freeing shared material
2024-09-03 11:44:05 +02:00
Rémi Verschelde
63a8548693
Merge pull request #96426 from clayjohn/RD-reflection-probe-roughness
Use non-linear mapping for ReflectionProbe mip levels to match sky
2024-09-03 11:43:52 +02:00
Rémi Verschelde
a2b64ed544
Merge pull request #95961 from RadiantUwU/fix-mesh-recursion
Fix shadow mesh recursion.
2024-09-03 11:43:16 +02:00
Rémi Verschelde
032235b6fc
Merge pull request #95503 from clayjohn/instance_none_crash
Avoid indexing instances without a base in scene cull phase
2024-09-03 11:43:08 +02:00
Rémi Verschelde
667778cf4d
Merge pull request #93448 from clayjohn/transmittance-fixes
Various fixes for transmittance effect
2024-09-03 11:42:57 +02:00
ComycSans
09e59fbec5 Fix SkyRD::Sky::free() freeing material 2024-09-02 18:59:31 +02:00
Rémi Verschelde
f546bf6aea
Merge pull request #96431 from viksl/fix-alpha-reflections-cull-order
Fix alpha material's reverse cull order.
2024-09-02 12:13:57 +02:00
Rémi Verschelde
f50ead48b0
Merge pull request #96128 from BlueCube3310/vram-profiler-texture-mem
Fix incorrect parameters for layered textures in VRAM texture memory profiler
2024-09-02 12:13:11 +02:00
viksl
929c69bad8 Fixes alpha materials being rendered with a reverse cull which is visible in reflections from reflection probes. 2024-09-01 12:10:04 +02:00
BlueCube3310
e74bc3079a Fix incorrect parameters for layered textures in Video RAM texture memory profiler 2024-09-01 11:49:30 +02:00
clayjohn
64f5443b14 Use non-linear mapping for ReflectionProbe mip levels to match sky 2024-09-01 01:40:42 -07:00
Radiant
70860aafd8 Fix shadow mesh recursion. 2024-08-31 22:31:43 +03:00
rune-scape
f04a9bb630 Avoid const_cast in mesh_storage.h 2024-08-28 14:46:03 -07:00