Commit Graph

2007 Commits

Author SHA1 Message Date
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
Johan Aires Rastén 6e1f68109b Support shader preprocessor concatenation symbol 2023-08-08 10:56:20 +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
Rémi Verschelde ff70ce158c
Merge pull request #80315 from darksylinc/matias-ssil-validation-fix
Fix validation error when enabling SSIL alone
2023-08-07 14:55:10 +02:00
Rémi Verschelde 40ca09364d
Merge pull request #80311 from darksylinc/matias-fullscreen-tri
Use fullscreen tri instead of quad
2023-08-07 14:54:21 +02:00
Rémi Verschelde f01290fa91
Merge pull request #80257 from DarioSamo/taa_double_precision_fix
Fix motion vectors being corrupted when using `precision=double`
2023-08-07 14:51:35 +02:00
Rémi Verschelde faaf27f284
Fix various typos with codespell
Also includes typo fixes from #79993, #80068, #80276, and #80303.

Co-authored-by: betalars <contact@betalars.de>
Co-authored-by: spaceyjase <429978+spaceyjase@users.noreply.github.com>
Co-authored-by: Swarkin <102416174+Swarkin@users.noreply.github.com>
Co-authored-by: Raul Santos <raulsntos@gmail.com>
2023-08-07 13:09:47 +02:00
Bastiaan Olij 414df467cd Fix issue with four subpasses always been requested in mobile renderer 2023-08-07 20:26:48 +10:00
clayjohn 57eb762bae Add option to enable HDR rendering in 2D
This is needed to allow 2D to fully make use of 3D effects (e.g. glow), and can be used to substantially improve quality of 2D rendering at the cost of performance

Additionally, the 2D rendering pipeline is done in linear space (we skip linear_to_srgb conversion in 3D tonemapping) so the entire Viewport can be kept linear.
This is necessary for proper HDR screen support in the future.
2023-08-07 11:24:03 +02:00
Matias N. Goldberg e783e32108 Fix integer underflow when rounding up in VoxelGI
The code wanted to divide and round up:
 - 0 / 64 = 0
 - 63 / 64 = 1
 - 64 / 64 = 1
 - 65 / 64 = 2

However when the dividend was exactly 0 it would underflow and produce
67108864 instead.

This caused TDRs on empty scenes or extremely slow performance

Fix #80286
2023-08-06 23:21:58 -03:00
Chia-Hsiang Cheng 0cf57e1927 Ensure POINT_SIZE takes effect 2023-08-06 16:44:16 +08:00
Matias N. Goldberg 666e91b9ff Fix validation error when enabling SSIL alone 2023-08-05 20:57:26 -03:00
Matias N. Goldberg 79c9edab3b Draw sky as a fullscreen triangle 2023-08-05 17:55:43 -03:00
Matias N. Goldberg 6e7d87fb25 Use fullscreen tri instead of quad 2023-08-05 17:09:06 -03:00
Dario 77776f5313 Fix motion vectors being corrupted when using precision=double and resulting in the TAA pass being completely broken.
See Issue #69528. When building with precision=double, the TAA pass would break due to the motion vectors being corrupted. It was apparent the origin of the camera itself was corrupted in the UBO for the previous frame because the camera origin was only being split correctly for the current block but not for the previous block (to effectively support the double precision float on the shader).
2023-08-04 11:42:06 -03:00
Rémi Verschelde f9f5041675
Merge pull request #80222 from clayjohn/Shader-rid-init
Initialize shader placeholders up front
2023-08-03 18:33:59 +02:00
clayjohn 558f4b7559 Initialize shader placeholders up front
Then use the placeholder to create the shader instead of swapping RIDs
This fixes a false positive that reported leaked shaders
2023-08-03 16:13:33 +02:00
Rémi Verschelde 858e8748e8
Fix or workaround recent extension API compatibility issues
- Add compatibility methods for `RenderingDevice::shader_create_from_bytecode`
  and `CodeEdit::get_text_for_symbol_loopup`.
- Silence errors which now have compatibility methods.
- Acknowledge GraphEdit/GraphNode compat breakage, intended and WIP.
2023-08-03 12:07:21 +02:00
Hugo Locurcio 037975f6b6
Remove debugging print from shader cache 2023-08-01 17:55:44 +02:00
Yuri Sizov cc1ee3e599 Merge pull request #79911 from BastiaanOlij/fix_barrier_breakage
Add exceptions for breakage introduced in RD barriers
2023-08-01 17:25:40 +02:00
Yuri Sizov 13307e7efc Merge pull request #79776 from LRFLEW/mobilefog
Mobile: Uncomment code required for fog rendering on clear color
2023-08-01 17:25:29 +02:00
Yuri Sizov 1c40263665 Merge pull request #79606 from clayjohn/ShaderRD-compilation-groups
Shader rd compilation groups
2023-08-01 17:25:16 +02:00
Yuri Sizov 8b12849fef Merge pull request #79876 from LRFLEW/mobalpha
Fix transparent viewport backgrounds with custom clear color
2023-07-31 21:01:32 +02:00
Yuri Sizov 79d3468246 Merge pull request #79696 from reduz/call-on-render-thread
Add ability to call code on rendering thread
2023-07-31 21:01:21 +02:00
LRFLEW 6effd3cde7 Fix transparent viewport backgrounds with custom clear color 2023-07-30 06:19:47 -05:00
Matias N. Goldberg 472226422e Fix uninitialized variable ending up sent to Vulkan
The first time a shader is compiled Godot performs the following:

```cpp
for (uint32_t i = 0; i < SHADER_STAGE_MAX; i++) {
	if
(spirv_data.push_constant_stages_mask.has_flag((ShaderStage)(1 << i))) {
		binary_data.push_constant_vk_stages_mask |=
shader_stage_masks[i];
	}
}
```

However binary_data.push_constant_vk_stages_mask is never initialized to
0 and thus contains garbage data or'ed with the good data.

This value is used by push constants (and many other things) thus it can
be a big deal.

Fortunately because the relevant flags are always guaranteed to be set
(but not guaranteed to be unset), the damage is restricted to:

1. Performance (unnecessary flushing & over-excessive barriers)
2. Overwriting push descriptors already set (this would be serious,
doesn't seem to be an issue)
3. Driver implementations going crazy when they see bits set they don't
expect (unknown if this is an issue)

This uninitialized value is later saved into the binary cache.

Valgrind is able to detect this bug on the first run, but not on the
subsequent ones because they data comes from a file.

cache_file_version has been bumped to force rebuild of all cached
shaders. Because the ones generated so far are compromised.
2023-07-29 18:28:33 -03:00
Bastiaan Olij 10f796dae3 Add exceptions for breakage introduced in RD barriers and prevent future breakage 2023-07-28 14:21:34 +10:00
Yuri Sizov 1fe49e7271 Merge pull request #79142 from BastiaanOlij/register_render_buffers
Expose RenderSceneBuffers(RD) through ClassDB
2023-07-27 15:22:27 +02:00
Bastiaan Olij 4874b96033 Expose RenderingSceneBuffers through ClassDB 2023-07-26 23:48:30 +10:00
Bastiaan Olij 63d6e9c557 Add custom texture create function 2023-07-26 20:46:34 +10:00
Juan Linietsky c7fb6cea3d Add ability to call code on rendering thread
As more users use compute in Godot 4, the way they do is most likely incompatible when running
on separate threads and will start erroring soon as we improve the thread safety of the render thread.

To properly run code on the render thread, this function was added. Use like this:

```GDScript

func initialize_compute_code():
	....

func update_compute_code(custom_data):
	...

func _ready():
	RenderingServer.call_on_render_thread( initialize_compute_code )

func _process():
	RenderingServer.call_on_render_thread( update_compute_code.bind(with_data) )

```
2023-07-26 12:28:00 +02:00
Yuri Sizov 3f2e901633 Merge pull request #79865 from clayjohn/discard-shader
Fix use of discard in shaders
2023-07-25 21:26:27 +02:00
Yuri Sizov 08cffc128f Merge pull request #79812 from ParsleighScumble/parsleigh/init-sky-scene-state
Use defaults to initialize sky data in case of no sky
2023-07-25 21:26:23 +02:00
Yuri Sizov 0e9e373b87 Merge pull request #79603 from bitsawer/fix_instance_uniform_update
Fix instance uniform data buffer update delay
2023-07-25 21:26:02 +02:00
Clay 7c812cd7e9 Fix use of discard in shaders
discard was being included in all shaders set to depth pass opaque, which is the majority of shaders

Instead it should only be used with alpha prepass materials
2023-07-24 23:21:04 +02:00
Parsleigh Scumble 67c13fe4eb Use defaults to initialize sky data in case of no sky 2023-07-24 10:41:13 -07:00
Yuri Sizov 360633089c Merge pull request #79590 from 0010200303/master
Fix bad LOD selection when Camera in Mesh AABB
2023-07-24 19:32:54 +02:00
Yuri Sizov 372e9abcfc Merge pull request #79459 from MoltenCoffee/fix-shader-arguments-error
Add error for undefined function in shader
2023-07-24 19:32:46 +02:00
LRFLEW db17415df8 Mobile: Uncomment code required for fog rendering on clear color 2023-07-24 08:46:45 -05:00
Yuri Sizov 1e856b61ae Merge pull request #79624 from mandryskowski/patch-1
Revert the change of the limit for interpolation of F0 for dielectrics and metals for Screen Space Reflections
2023-07-21 17:54:50 +02:00
clayjohn e970f5249c Add Shader compile groups to RD Shader system
This allows us to specify a subset of variants to compile at load time and conditionally other variants later.

This works seamlessly with shader caching.

Needed to ensure that users only pay the cost for variants they use
2023-07-21 16:42:30 +02:00
Yuri Sizov dd05012122
Merge pull request #79528 from univeous/video_adapter_fix
Fix crash when calling `get_video_adapter_*` in a thread
2023-07-20 16:28:47 +02:00
Jonas Schönbrodt 26c4644b38 Fix bad LOD selection when Camera in Mesh AABB
Fixed an issue where a bad LOD would be selected although the Camera being inside the Meshes AABB.
2023-07-19 18:07:37 +02:00
univeous 0a64abe891 Fix crash when calling get_video_adapter_* in a thread
co-authored-by: Clay John <claynjohn@gmail.com>
2023-07-19 23:31:27 +09:00
mandryskowski 33e46aac13
Revert the change of the limit for interpolation of R0 with respect to metallic and SSR
Commit 2c000cb72f changed the interpolation limits from (0.04, 1.0) to (0.04, 0.37). This is incorrect, as we want to have an F0 of 0.04 for dielectrics (materials with metalness of 0.0) and an F0 of 1.0 for metals.
The Schlick approximation uses an F0 of 0.04 for all dielectrics and it's good enough.
Having it lower than 1.0 leads to an incorrect application of the Fresnel effect for metals and leads to bugs like #79549
2023-07-18 19:18:19 +02:00
bitsawer 7a9783737a Fix instance uniform data buffer update delay 2023-07-18 12:19:15 +03:00
MoltenCoffee 16c3f4be2d
Add error for undefined function in shader 2023-07-18 10:01:29 +02:00
Clay John f880892c3d
Merge pull request #79402 from Haydoggo/repeat-filter-autocomplete
Add autocomplete for filter/repeat hints on uniform arrays
2023-07-17 11:32:20 +02:00
Bastiaan Olij a22f495a3c Split raster barrier into vertex and fragment barrier 2023-07-15 12:30:32 +10:00
Hayden Leete fc7063b2e2 Add autocomplete for filter/repeat hints on uniform arrays 2023-07-13 11:27:28 +12:00
Yuri Sizov 0fa808ba5e Merge pull request #77085 from BastiaanOlij/visualise_direction_shadowmap_frustum
Draw frustum splices ontop of direction shadow atlas for debug purposes
2023-07-12 21:02:25 +02:00
Yuri Sizov bb15241e06 Merge pull request #77740 from ChibiDenDen/simplify_vulkan
Replace sampler arrays with constant sampler elements, simplify and reuse code for all shaders
2023-07-12 17:16:12 +02:00
Yuri Sizov 5dff3c4484 Merge pull request #78538 from Sauermann/fix-code-simplifications
Remove unnecessary value assignments throughout the codebase
2023-07-12 15:09:26 +02:00
Yuri Sizov 65cc4db0ae Merge pull request #79100 from KoBeWi/[filter,_filter,_filter,_filter,_filter,_filter]
Allow more hint types for uniform arrays
2023-07-12 14:18:34 +02:00
Rémi Verschelde 7030ac555f
Merge pull request #79270 from clayjohn/particle-trails-error
Unify error condition for particles trail lifetime
2023-07-10 10:38:34 +02:00
clayjohn 78ecdb17f9 Unify error condition for particles trail lifetime 2023-07-10 10:17:27 +02:00
Rémi Verschelde 46cd84b362
Merge pull request #78839 from lewiji/normal_roughness_mobile_fix
Fix invalid shader compilation when using `hint_normal_roughness_texture` in mobile backend
2023-07-08 18:19:49 +02:00
Rémi Verschelde ea3aaeac05
Merge pull request #78624 from puchik/canvas-background-specular-ghosting
Clear specular buffer if sky mode is canvas and screen space effects are used
2023-07-08 18:16:05 +02:00
Rémi Verschelde b2ada1b690
Merge pull request #78972 from bitsawer/fix_shader_float_precision
Fix shader language float literal precision truncation
2023-07-07 08:32:09 +02:00
Rémi Verschelde 25ec523596
Merge pull request #78906 from Chaosus/shader_allow_hex_uint
Fix using uint suffix at the hex number declaration in shaders
2023-07-07 08:29:17 +02:00
kobewi 8ae2e6681e Allow more hint types for uniform arrays 2023-07-06 15:05:26 +02:00
bitsawer 356297f909 Fix shader language float literal precision truncation 2023-07-03 12:48:33 +03:00
Yuri Roubinski 1994c25701 Fix using uint suffix at the hex number declaration in shaders 2023-07-01 14:33:48 +03:00
clayjohn 35ed7c770b Initialize particles instance buffer in case it is used before being updated 2023-06-29 13:24:40 -07:00
lewiji 2a93681334 Return shader parse error when using 'hint_normal_roughness_texture' and not using the Forward+ backend 2023-06-29 16:18:31 +01:00
K. S. Ernest (iFire) Lee 39dfa8436e Varying mismatch causing shaders to fail. 2023-06-23 21:36:38 -07:00
Arman Elgudzhyan af9d1743f3 Clear specular buffer if bg mode is canvas and ss effects are used
Explicitly clear the separate specular buffer when the background mode is canvas and screen space effects (and thus a separate specular buffer) are used.
2023-06-23 12:16:52 -07:00
bitsawer ef00de99b4 Fix error spam when a mesh with bone weights has an invalid skeleton 2023-06-22 15:58:52 +03:00
ChibiDenDen 35715e510f replace sampler arrays with constant sampler elements 2023-06-22 01:11:57 +03:00
Markus Sauermann 890fdd56df Code simplifications
CPPcheck found most of them.

no need to assign the variable twice:
- AnimationTrackEditTypeAudio
- SSEffects

variable is assigned in all if-else clauses:
- EditorHelp
- AndroidInputHandler
- MenuBar
- ShaderCompiler

same if clause:
- ItemList

clearing an empty bitfield has no effect:
- Viewport
2023-06-21 22:37:26 +02:00
Bastiaan Olij 952b4b3f38 Apply reprojection in multiview for our cluster lookup 2023-06-21 11:17:01 +10:00
Rémi Verschelde dca1e0bef7
Merge pull request #78436 from BastiaanOlij/fix_stereo_fog
Fix volumetric fog in stereo by projection vertex in combined space
2023-06-20 09:21:39 +02:00
Bastiaan Olij 66272ea26e Fix volumetric fog in stereo by projection vertex in combined space 2023-06-20 14:36:14 +10:00
bitsawer dab0871d41 Fix invalid RID errors when freeing a mesh with blend shapes 2023-06-19 11:07:15 +03:00
clayjohn 36a005fafc
Add RENDERING_INFO parameters to GL Compatibility renderer
This also fixes RENDERING_INFO_TOTAL_PRIMITIVES_IN_FRAME for the RD renderers as it was incorrectly reporting vertex/index count at times

This also adds memory tracking to textures and buffers to catch memory leaks.

This also cleans up some memory leaks that the new system caught.
2023-06-16 09:10:00 +02:00
Rémi Verschelde 16c2fede71
Merge pull request #78200 from prominentdetail/patch-3
Properly handle wireframe mode in RendererRD pipeline cache
2023-06-14 09:27:10 +02:00
Rémi Verschelde e0651ed4b5
Merge pull request #78199 from clayjohn/detect_3d
Ensure that "detect 3D" is only called when using 3D shaders
2023-06-14 09:26:47 +02:00
Rémi Verschelde 41776634b6
Merge pull request #78161 from BastiaanOlij/expose_texture_native_handle
Expose `RD::texture_get_native_handle`
2023-06-14 09:25:59 +02:00
Alex f74464b767
Properly handle wireframe mode in RendererRD pipeline cache
Makes wireframe get cached properly so that it doesn't keep being recreated.
Fixes #76237.
2023-06-14 09:14:34 +02:00
Bastiaan Olij 6dd47e232b Expose RD::texture_native_handle 2023-06-14 09:58:08 +10:00
clayjohn 0b7e2dfdfc Ensure that "detect 3D" is only called when using 3D shaders 2023-06-13 13:20:11 -07:00
Rémi Verschelde 2d6b880987
i18n: Sync translations with Weblate (now tracking 4.1 strings) 2023-06-12 14:57:08 +02:00
kleonc bbb2a889d8 Fix Y-sort modulate for top-most Y-sorted CanvasItem 2023-06-12 13:33:26 +02:00
Bastiaan Olij d9eb9665da Draw frustum splices ontop of direction shadow atlas for debug purposes 2023-06-11 11:48:11 +10:00
Rémi Verschelde 7c71844999
Merge pull request #77703 from RandomShaper/fix_vol_fog_thingy
Fix management of life cycle of vol. fog related uniform sets
2023-06-09 11:05:11 +02:00
Rémi Verschelde 9ce42d176d
Merge pull request #76977 from manueldun/light-shader-builtins
Enable the use of all supported builtins on the light shader
2023-06-09 11:04:46 +02:00
Rémi Verschelde 166643df32
Merge pull request #74937 from bitsawer/fix_uniform_storage
Fix shader uniform storage conversions and crash
2023-06-09 11:04:16 +02:00
Manuel Dun e2321c21db Enable the use of all builtins on the light shader
When using the light process in spatial shader,
the built-ins work as spected, now they work in forward+,
mobile and compatibility renderer.
2023-06-08 14:14:14 -04:00
Hugo Locurcio 0f82a0f569
Document the InitialAction enum in RenderingDevice
This also improves the documentation for the FinalAction enum,
and fixes an incorrect comment in the RenderingDevice header.
2023-06-08 03:54:38 +02:00
Rémi Verschelde 46c4068821
Merge pull request #77170 from lawnjelly/scu_build_master
Add support for single compilation unit builds
2023-06-06 17:58:09 +02:00
lawnjelly b69c8b4791 Single Compilation Unit build.
Adds support for simple SCU build (DEV_ENABLED only).
This speeds up compilation by compiling multiple cpp files within a single translation unit.
2023-06-06 15:36:51 +01:00
Arman Elgudzhyan 7bcc849143 Use depth pass mode with normals if required even if Environment is null
If using normal buffer debugging or if the normal texture was used, we should use PASS_MODE_DEPTH_NORMAL_ROUGHNESS regardless of whether there is a valid Environment or not. Otherwise, shaders reading the normal texture will not work without a valid Environment (and possibly other problems).
2023-06-03 07:56:47 -07:00
Pedro J. Estébanez f08f67308e Fix management of life cycle of vol. fog related uniform sets 2023-05-31 19:54:28 +02:00
bitsawer 23c375d6b4 Fix shader uniform storage conversions and crash 2023-05-29 15:17:13 +03:00
bitsawer 67038471ff Fix shader preprocessor cyclic include handling 2023-05-29 12:05:22 +03:00
Yuri Sizov f6dcd7f51a
Merge pull request #75181 from dalexeev/fix-light-only-mode
Fix "Light Only" mode of `CanvasItemMaterial`
2023-05-27 17:28:29 +02:00
Allen Pestaluky 4e19f34856 Changed Subtract blend mode of Forward+ and Mobile renderers to match behaviour of the Godot 3 and Compatibility renderers
The OpenGL implementation has used GL_FUNC_REVERSE_SUBTRACT for a long time, but the new RenderingDevice abstraction used by the Vulkan renderers had been mistakenly set to BLEND_OP_SUBTRACT instead of BLEND_OP_REVERSE_SUBTRACT.

Fixes #77448
2023-05-26 10:50:35 -04:00
Rémi Verschelde ba557aaf55
Merge pull request #77294 from puchik/lod-resolution-scaling
Take 3D resolution scaling into account for mesh LOD
2023-05-24 08:48:38 +02:00
Rémi Verschelde 0821262167
Merge pull request #77079 from kleonc/y_sort_fix_modulation_propagation
Fix modulation propagation for Y-sorted CanvasItems
2023-05-24 08:47:50 +02:00
Rémi Verschelde 852740a627
Merge pull request #76053 from MightiestGoat/fix-sky-auto-exposure
Fix the grainy sky while using debanding.
2023-05-24 08:46:28 +02:00
Rémi Verschelde 6d88c83611
Merge pull request #71684 from kleonc/draw_polyline_simplify_antialiased
`RendererCanvasCull` Simplify drawing antialiased polyline
2023-05-24 08:44:19 +02:00
Rémi Verschelde d5c1b9f883
Merge pull request #77327 from BastiaanOlij/fix_gi_and_fog_free
Conditionally free GI and FOG resources, they may not have been created
2023-05-22 22:37:12 +02:00
Rémi Verschelde c3c1909429
Merge pull request #77326 from BastiaanOlij/fix_material_dependencies
Properly clear material slots on mesh instance when material is freed
2023-05-22 22:36:48 +02:00
Bastiaan Olij 1a128fcccd Properly clear material slots on mesh instance when material is freed 2023-05-22 23:00:00 +10:00
Rémi Verschelde 1086375785
Merge pull request #77266 from Rindbee/fix-bugs-in-TextureStorage-texture_3d_update
Fix calling `TextureStorage::texture_3d_update()` could cause a crash
2023-05-22 13:49:23 +02:00
Rémi Verschelde 05ddc822fb
Merge pull request #77265 from lyuma/aabb_bone_lod_inside
Fix calculation of skinned AABB for unused bones.
2023-05-22 13:49:19 +02:00
Bastiaan Olij 57f343ab21 Conditionally free GI and FOG resources, they may not have been created 2023-05-22 12:59:34 +10:00
Rindbee ebd2b9e299 Fix calling `TextureStorage::texture_3d_update()` could cause a crash 2023-05-22 06:24:13 +08:00
Arman Elgudzhyan ac4ca89000 Take 3D resolution scaling into account for mesh LOD 2023-05-20 16:40:16 -07:00
Lyuma 791d8001db Fix AABB for unused bones
Fixes bug where bounding box of 1 unit was used in some skinned models and had wrong LODs.
(this could become very large if the mesh is scaled, such as FBX conversions)
Also fixes a mistake in calcualting bone index.
2023-05-19 19:47:52 -07:00
Markus Grafen 8a3e829930 (Re-)Implemented Light3D's property "shadow_reverse_cull_face"
The parameter shadow_reverse_cull_face is now passed to the shadow pass so that the mesh back-faces are used for shadow map calculation.
2023-05-19 19:22:10 +02:00
Bastiaan Olij dae58dd187 Fix a typo in the debug shadow split renderer 2023-05-18 10:36:12 +10:00
Rémi Verschelde b42cea1373
Merge pull request #77089 from DearthDev/lightmapgi-dynamic-objects
LightmapGI dynamic object lighting fix
2023-05-17 11:25:25 +02:00
dearthdev 53903f07dc Correctly insert lightmap captures and geometries. 2023-05-15 03:05:19 -05:00
Yuri Rubinsky d7211b371c
Merge pull request #77086 from Chaosus/shaders_fix_render_mode_completion 2023-05-15 10:58:23 +03:00
Rémi Verschelde 9ecb929da6
Merge pull request #76565 from clayjohn/debug-PSSM-splits
Re-implement the PSSM_SPLITS debug option
2023-05-15 09:33:01 +02:00
Yuri Rubinsky 719741b0eb Exclude incorrect completion options for `render_mode` in shaders 2023-05-15 08:21:16 +03:00
kleonc 5d8219b4fd Fix modulation propagation for Y-sorted CanvasItems 2023-05-15 01:32:41 +02:00
Danil Alexeev 43b0702a02
Fix "Light Only" mode of `CanvasItemMaterial` 2023-05-13 09:06:09 +03:00
Ninni Pipping 71ee65dc57 Enable shadow warnings and fix raised errors 2023-05-11 16:00:59 +02:00
Rémi Verschelde 564d1b34e0
Merge pull request #74711 from BastiaanOlij/add_texture_native_handle
Provide access to internal graphics handles for textures
2023-05-09 19:28:26 +02:00
Bastiaan Olij c328676d96 For GDExternal use, provides access to internal graphics handles for textures 2023-05-09 13:47:22 +10:00
Pedro J. Estébanez 6465432570 Save cluster render shader from being optimized out entirely 2023-05-08 18:39:49 +02:00
Rémi Verschelde 3e6a731904
Merge pull request #76418 from reduz/method-bind-validated-call
Add ValidatedCall to MethodBind
2023-05-08 13:52:42 +02:00
Clay John 610877e326
Merge pull request #72288 from MewPurPur/use-string-repeat
Use `String.repeat()` to optimize several String methods
2023-05-05 09:56:48 -07:00
Max Hilbrunner 39d85308fd
Merge pull request #76109 from paddy-exe/fix-node-position-view 2023-05-05 14:35:41 +02:00
Max Hilbrunner d481fca986
Merge pull request #75517 from BastiaanOlij/expose_render_target 2023-05-05 14:28:01 +02:00
Max Hilbrunner fa451ead91
Merge pull request #74883 from dalexeev/fix-thin-multiline-colors 2023-05-05 14:26:37 +02:00
Johan Aires Rastén 8452e6cdb3 Add SPECULAR_AMOUNT spatial light shader built-in
Light3D has a light_specular property which is used to set the
intensity of specular contributed by this light source, but it was
previously only used by the default material light shader, and not
possible to use in a custom light() shader.
2023-05-04 09:15:12 +02:00
Max Hilbrunner ba32279cd0
Merge pull request #76550 from RandomShaper/vk_gi_take_2
Fix voxel GI issues (2)
2023-05-03 20:24:05 +02:00
Patrick e35bbd76a3 Fix Rotation Issue with NODE_POSITION_VIEW Visual Shader Node 2023-05-03 19:59:43 +02:00
Pedro J. Estébanez c58e50adcc Fix additional cases of breakage of rendering effects 2023-05-03 11:57:54 +02:00
clayjohn fb77021559 Use proper UV in cubemap downsampler raster
This removes bias in cubemap downsampling shader that resulted in the bottom of cubemaps being over represented
2023-05-03 01:06:34 -07:00
VolTer 6b84e258d2 Use String.repeat() in more places 2023-05-01 02:27:46 +02:00
Juan Linietsky 1c93606e47 Add ValidatedCall to MethodBind
* This should optimize GDScript function calling _enormously_.
* It also should simplify the GDScript VM considerably.

NOTE: GDExtension calling performance has most likely been affected until going via ptrcall is fixed.
2023-04-30 20:01:26 +02:00
clayjohn ca23d06a31 Re-implement the PSSM_SPLITS debug option
This uses a render_mode instead of shadow_color to avoid adding a cost to the basic shader
2023-04-28 17:53:56 -07:00
Samuele Panzeri 4aaa2e6477 Fix wait for thread not started 2023-04-27 20:28:22 +02:00
Rémi Verschelde 5a1d4bd8ab
Merge pull request #76479 from bitsawer/fix_preprocessor_line_number
Fix Shader Preprocessor line numbering when disabled
2023-04-27 08:19:30 +02:00
Pedro J. Estébanez 09aa1bbdb3 Fix unsupported sampler filter used for voxel GI 2023-04-26 20:54:06 +02:00
bitsawer 34896d8e89 Fix Shader Preprocessor line numbering when disabled 2023-04-26 16:48:23 +03:00
Pedro J. Estébanez 2beed0d5dc Fix breakages of volumetric fog on voxel GI changes 2023-04-26 10:24:03 +02:00
Johan Aires Rastén 14a8124ffe Add LIGHT_IS_DIRECTIONAL built-in for spatial shaders 2023-04-20 14:33:30 +02:00
clayjohn ab603e347f Clamp normal when calculating 2D lighting to avoid artifacts 2023-04-18 17:26:17 -07:00
mightygoat 69f634ac78 Fix the grainy sky while using debanding 2023-04-15 10:43:46 +05:30
Rémi Verschelde 0ec2be1213
Merge pull request #76003 from clayjohn/double-particle-offset
Don't store instance transform origin in RD 3D renderer unless requested
2023-04-13 09:56:41 +02:00
Rémi Verschelde 34a842b5d1
Merge pull request #75462 from joao-pedro-braz/use_modelview_for_vertex_transform_when_double_precision_is_enabled
Use MODELVIEW_MATRIX when on double precision
2023-04-13 09:53:54 +02:00
Rémi Verschelde e6e52f9154
Merge pull request #75162 from ecmjohnson/gpuparticles_inf_translate
GPUParticles3D: Translate inactive particles to -INF
2023-04-13 09:53:04 +02:00
Erik Johnson 6229c2a1f9 Translate inactive particles to -INF 2023-04-12 19:32:39 -04:00
clayjohn 29edd277e4 Don't store instance transform in RD 3D renderer unless requested
Previously, when using doubles builds of the engine, instance transform was stored no matter what which caused world space particles to accumulate the instance transform twice
2023-04-12 14:41:17 -07:00
clayjohn 9be0a73294 Add EXPOSURE built in to spatial shaders
This allows users to restore light values to pre-pre-exposure amounts
2023-04-12 10:35:13 -07:00
Rémi Verschelde 5e34a28bd7
Merge pull request #73313 from clayjohn/particles-split
Properly calculate lifetime_split for particles
2023-04-12 17:01:17 +02:00
Rémi Verschelde 1b14e1a293
Merge pull request #75908 from Calinou/compute-pipeline-fix-typo
Fix `compute_pieline` typo in `RenderingDevice.compute_pipeline_is_valid()`
2023-04-12 09:07:43 +02:00
Yuri Rubinsky 1433c98e9f
Merge pull request #75831 from Chaosus/shader_fix_texture_array_hint_completion 2023-04-12 08:58:59 +03:00
Rémi Verschelde ef17794d17
Merge pull request #75812 from RandomCatDude/sky-fog-luminance-fix
Move sky luminance scaling to before fog is applied
2023-04-11 19:40:36 +02:00
Rémi Verschelde 347a8e20ae
Merge pull request #69324 from RedMser/advanced-settings-errors
Make it easier to solve warnings/errors referring to project settings
2023-04-11 19:39:53 +02:00
Hugo Locurcio 8eb0d0e665
Fix `compute_pieline` typo in `RenderingDevice.compute_pipeline_is_valid()` 2023-04-10 22:32:04 +02:00
Yuri Rubinsky 12142f2b50 Fix completion of `source_color` hint for texture arrays in shaders 2023-04-08 20:13:26 +03:00
RandomCatDude c118314fe8 Apply sky fog after luminance multiplier 2023-04-08 12:52:33 +05:00
Yuri Sizov cbb2e17369
Merge pull request #75368 from MightiestGoat/fix-limit-interpolation-R0
Fix the limit for interpolation of R0 with respect to metallic and the calculation of the cos theata in the Fresnel Shlick term in SSR
2023-04-07 12:40:33 +02:00
Yuri Sizov 08c1b55862
Merge pull request #74891 from jmattspartacus/OccluderPolygon2D_memLeak_53722
Fix for OccluderPolygon2D memory leak
2023-04-07 12:37:51 +02:00
mightygoat 2c000cb72f Fix the limit for interpolation of R0 with respect to metallic and SSR
Shlick term
2023-04-06 23:14:47 +05:30
Bastiaan Olij 901cd7e3fe Fix framebuffers in sky not being created on mobile renderer 2023-04-05 09:43:03 +10:00
Yuri Sizov 9dcfdc2051
Merge pull request #75366 from Chaosus/shader_compiler_fix_operator
Fix to some operators in shaders are not compiled properly
2023-04-03 22:32:31 +02:00
Rémi Verschelde 154a29d33a
Merge pull request #74808 from bradc6/feature/AllowCustomOutputShaderGenFilepaths
Allow for shaders to be generated outside of the source tree
2023-04-03 16:01:32 +02:00
Bastiaan Olij ab60d3b65c Expose viewports render targer RID 2023-03-31 11:34:09 +11:00
João Pedro Braz 63c6f0b93c Use MODELVIEW_MATRIX for vertex transform when double precision is enabled
This commit updates the double precision vertex transform code from
using the MODEL_MATRIX to now use the MODELVIEW_MATRIX instead.

This can be made possible by transforming the MODELVIEW_MATRIX
back into model space (ie, same space as the MODEL_MATRIX) and then using it as if it were the MODEL_MATRIX.

With this in place we now properly handle VERTEX transformations that
a Material Shader might do, such as billboard-ing.
2023-03-29 10:37:30 -03:00
RedMser ed960453b7 Make solving project setting errors easier
Show full project setting path in error messages.
Force filtering for advanced settings if filter is not empty.
2023-03-27 08:10:35 +02:00
Yuri Rubinsky 575e352a61 Fix to some operators in shaders are not compiled properly 2023-03-26 20:50:02 +03:00
Bradley Clemetson 2302c7102f
Allow for external python scripts to call the build python headers via external scripts
Change GLES3 to not use a relative path
Make the parameters more explicit and ensure the shaders generated are not using relative paths
2023-03-19 21:18:52 -07:00
Yuri Sizov ded38c5d75
Merge pull request #73839 from clayjohn/OUTPUT_IS_SRGB
Clean up OUTPUT_IS_SRGB redefinitions
2023-03-16 13:03:37 +01:00
James Christie 68149328f1 Set value of line_point_count outside of initialization 2023-03-16 01:20:41 -04:00
Danil Alexeev ba985ecf3f
Fix `draw_multiline_colors()` for `width < 0` 2023-03-14 09:43:56 +03:00
Rémi Verschelde 0333b4a266
Merge pull request #74708 from BastiaanOlij/fix_rd_texture
Merge duplicate rd_texture functions
2023-03-10 22:48:19 +01:00
Rémi Verschelde 0511da260f
Merge pull request #74019 from BastiaanOlij/split_last_effects
Move roughness limiter and sort into their own classes
2023-03-10 14:02:14 +01:00
Bastiaan Olij 70dca9ff55 Merge duplicate rd_texture functions 2023-03-10 21:37:01 +11:00
Bastiaan Olij a8ec72cf94 Move roughness limiter and sort into their own classes 2023-03-09 21:58:55 +11:00
Rémi Verschelde d150bb84a6
Merge pull request #74566 from clayjohn/GL-canvas-texture
Avoid copying CanvasTexture when updating proxy
2023-03-08 08:59:04 +01:00
Rémi Verschelde 23bbf6b37c
Merge pull request #74533 from SlugFiller/fix-clip-no-children
Fixes a canvas item set to clip children being drawn as black if no children are visible
2023-03-08 08:57:00 +01:00
Rémi Verschelde a0ff87f48d
Merge pull request #74416 from SlugFiller/fix-skeleton2d-aabb
Fix AABB calculation for meshes using Skeleton2D
2023-03-08 08:56:12 +01:00
Rémi Verschelde 1a5239ff1e
Merge pull request #74349 from JohanAR/fix-instance-uniforms
Fix instance uniforms breaking when setting a new mesh.
2023-03-08 08:55:48 +01:00
clayjohn 84482ef90b Avoid copying CanvasTexture when updating proxy 2023-03-07 12:48:32 -08:00
SlugFiller f25508befb Fixes a canvas item set to clip children being drawn as black if no children are visible 2023-03-07 09:53:26 +02:00
SlugFiller 06a1fe0364 Fix AABB calculation for meshes using Skeleton2D 2023-03-05 08:21:08 +02:00
Johan Aires Rastén 26aecbfe57 Fix instance uniforms breaking when setting a new mesh.
Fixes #58113
2023-03-04 11:49:18 +01:00
Fabio Iotti 528e0d095e Error on hint_normal_roughness_texture and hint_depth_texture outside of spatial shader 2023-03-03 21:36:48 +01:00
Rémi Verschelde 61d2c85511
Merge pull request #74269 from clayjohn/RD-more-timestamps
Add a few more rendering timestamps
2023-03-03 11:09:27 +01:00
clayjohn 1adc4e5875 Add a few more rendering timestamps 2023-03-02 18:15:21 -08:00
Rémi Verschelde 31eccb5501
Merge pull request #74150 from BastiaanOlij/fix_mobile_msaa_2d
Use MSAA 2D texture in multipass tonemapper
2023-03-02 11:42:13 +01:00
Rémi Verschelde 29723da272
Merge pull request #73919 from RandomCatDude/volumefog-spotlight-fix
Fix spotlight shadows in volumetric fog
2023-03-02 11:23:24 +01:00
Bastiaan Olij 903aa0e385 Use MSAA 2D texture in multipass tonemapper 2023-03-01 18:59:59 +11:00
Rémi Verschelde 0cd1483132
Merge pull request #73959 from clayjohn/GL-mobile-warnings
Add warnings for unsupported features in mobile and gl_compatibility backends
2023-02-26 21:39:06 +01:00
clayjohn c69b14e96e Add warnings for unsupported features in mobile and gl_compatibility backends 2023-02-26 12:28:02 -08:00
bitsawer 35c970f4f6 Fix shader preprocessor include resource check 2023-02-26 13:59:29 +02:00
RandomCatDude 59c31004f8 fix spotlight shadows in volumetric fog 2023-02-25 16:28:06 +05:00
Bastiaan Olij 4c2f33cfae Fixing issues with SSIL artifacts 2023-02-24 16:13:18 +11:00