Commit Graph

990 Commits

Author SHA1 Message Date
Yuri Rubinsky 5d1e7e509d [3.x] Implement glow map effect 2024-09-24 20:47:32 +03:00
lawnjelly ecd0680b11 Fix fragcolor write locations in scene shaders 2024-05-20 19:31:38 +01:00
Rémi Verschelde dc776e46b6
Merge pull request #60246 from Calinou/directional-light-add-fade-start-3.x
[3.x] Backport DirectionalLight `fade_start` property
2024-02-07 09:49:21 +01:00
Rémi Verschelde 991e922877
Merge pull request #86786 from lawnjelly/calinou_sdf_fixed
[3.x] Fix signed distance field font rendering
2024-02-07 09:40:59 +01:00
Rémi Verschelde 2a1917482a
Merge pull request #86744 from Listwon/custom-shader-compilation-determinism
[3.x] Prevent shuffling custom shader functions (shader cache requires determinism)
2024-02-07 09:40:36 +01:00
lawnjelly bc607fb607 Fix signed distance field font rendering
This fix works in both GLES3 and GLES2.

The rendering formula in the shader was adjusted to further improve the
sharpness/antialiasing quality balance.

Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
2024-02-05 17:50:33 +00:00
Rémi Verschelde 30b81a4bd9
Merge pull request #84529 from lawnjelly/gles2_gl_fragcolor
[3.x] GLES2 & GLES3 - Use `gl_FragColor` temporary
2024-01-29 23:28:19 +01:00
Caroline Joy Bell 9c0bd332a5
Fix `#if *_ENABLED` inconsistencies, should check if defined
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2024-01-17 10:21:40 +01:00
Bartłomiej T. Listwon 73793ab89c Prevent shuffling custom shader functions (shader cache requires determinism) 2024-01-03 13:12:48 +01:00
Rémi Verschelde 02e4e208ef
Fix various GCC 13 warnings
Fixes occurrences of `-Wtype-limits`, `-Wmaybe-uninitialized`,
`-Wduplicated-branches`.
2023-12-08 15:32:59 +01:00
Hugo Locurcio 4fefb136ea
Backport DirectionalLight `fade_start` property to `3.x`
- Implement shadow fading when using the Orthogonal shadow mode
  (like in `master`).

This allows customizing the distance at which directional shadows
start to fade away. Shadow fading will also always start at the same
distance now, regardless of the current shadow mode in use.

This is useful for enclosed levels to prevent shadows from fading
at all with a well-tuned maximum distance.

The default fade start value (0.8) results in fading happening later
in the distance compared to the previous behavior, where fading started
from the last shadow split distance (0.6 in PSSM 4 Splits and
0.1 in PSSM 2 Splits).
2023-11-20 12:41:55 +01:00
lawnjelly ed3d029f5d GLES2 / GLES3 - Use gl_FragColor temporary
On some hardware, modifying gl_FragColor multiple times can cause large performance drops. This PR writes to a standard temporary variable instead, and copies across to gl_FragColor once only at the end of the fragment shader.

This could potentially lead to large gains in performance on affected hardware.
2023-11-07 11:53:25 +00:00
lawnjelly 6ff370030a Fix glGet overflows by using 64 bit versions
Certain glGet operations require 64 bit versions according to the GLES spec.
The previous code was susceptible to overflow bugs,  especially running under ANGLE.
2023-10-16 13:47:11 +01:00
Rémi Verschelde 5f9cbe514d
Merge pull request #75468 from Ansraer/four_is_overkill
[3.x] Add support for 3 dir shadow splits
2023-10-01 22:50:57 +02:00
lawnjelly 857d884026 Initialize `GLWrapper` earlier in `Storage::initialize()`
Make sure `GLWrapper` is initialized before `glActiveTexture` is called by other parts of the storage initialize(), to prevent benign warnings.
2023-08-21 08:51:47 +01:00
Rémi Verschelde 98976f9260
Merge pull request #80652 from Benedani/3.x_fix_gles2_skinning
[3.x] GLES2: Make GPU skinning more consistent with GLES3
2023-08-16 17:14:22 +02:00
Rémi Verschelde dcb097c7a1
Merge pull request #80481 from lawnjelly/clay_unbind_textures
[3.x] Unbind texture slots when changing framebuffer
2023-08-16 17:13:56 +02:00
The Benedani a66e8a29a7 GLES2: Make GPU skinning more consistent 2023-08-15 12:59:39 +02:00
Rémi Verschelde c685501f51
Merge pull request #80325 from lawnjelly/fti2d_check_skel_attach
[3.x] Hierarchical culling - Add extra check to `skeleton_attach_canvas_item`
2023-08-15 09:04:09 +02:00
lawnjelly 5e197fd21e Unbind texture slots when changing framebuffer
Prevent bugs whereby texture still in use.
2023-08-12 11:07:13 +01:00
lawnjelly d7cca42ef6 Hierarchical culling - Add extra check to skeleton_attach_canvas_item
Although this check shouldn't be able to fail currently, it provides a small level of extra logic checking at only small cost in DEV builds.
2023-08-06 10:03:49 +01:00
lawnjelly ad577e3c7e Fix 2D MultiMesh hierarchical culling
Fixes updating local bounds for MultiMeshes used in canvas items by introducing a back link.
2023-08-03 06:49:01 +01:00
lawnjelly 43e181a00a Single Compilation Unit build.
Adds support for simple SCU build.
This speeds up compilation by compiling multiple cpp files within a single translation unit.
2023-07-02 20:13:16 +01:00
Rémi Verschelde 29eeb461f2
Merge pull request #68738 from lawnjelly/faster_canvas_item
[3.x] Canvas item hierarchical culling
2023-06-27 08:40:22 +02:00
Rémi Verschelde d644de8088
Merge pull request #76226 from paddy-exe/fix-node-position-view-3.x
[3.x] Fix `NODE_POSITION_VIEW` shader built-in
2023-06-07 14:46:24 +02:00
lawnjelly b777a9e5f9 Canvas item hierarchical culling
Adds optional hierarchical culling to the 2D rendering (within VisualServer).

Each canvas item maintains a bound in local space of the item itself and all child / grandchild items. This allows branches to be culled at once when they don't intersect a viewport.
2023-04-25 20:17:33 +01:00
Aaron Franke 141783d90f
[3.x] Expose `determinant` in Transform2D, rename internal method 2023-04-22 13:47:47 -05:00
Patrick 67d3fe4075 [3.x] Fix NODE_POSITION_VIEW Shader Built-In 2023-04-18 22:11:41 +02:00
Ansraer 54bc6a300e add support for 3 dir shadow splits 2023-03-29 13:40:17 +02:00
Alex Nogueira 01d0b9ad15 Fixed Whitescreen Issue in GLES2.0 Glow Setting
Replaced textureLod with texture2DLod in the tonemapping.glsl shader file.
2023-03-15 18:13:57 +01:00
Ansraer 0227fcc4cc fix shadows pass viewport calculation 2023-03-07 11:22:05 +01:00
Rémi Verschelde a0ddc595a6
Merge pull request #71510 from lawnjelly/gles2_oct_unpack
GLES2 fix octahedral half float unpacking
2023-01-17 10:55:37 +01:00
lawnjelly c6a428b3d6 GLES2 fix octahedral half float unpacking
The strides in _unpack_half_floats() were incorrectly calculated in the case where octahedral normals and tangents were in use.
2023-01-16 11:55:06 +00:00
Rémi Verschelde 1426cd3b3a
One Copyright Update to rule them all
As many open source projects have started doing it, we're removing the
current year from the copyright notice, so that we don't need to bump
it every year.

It seems like only the first year of publication is technically
relevant for copyright notices, and even that seems to be something
that many companies stopped listing altogether (in a version controlled
codebase, the commits are a much better source of date of publication
than a hardcoded copyright statement).

We also now list Godot Engine contributors first as we're collectively
the current maintainers of the project, and we clarify that the
"exclusive" copyright of the co-founders covers the timespan before
opensourcing (their further contributions are included as part of Godot
Engine contributors).

Also fixed "cf." Frenchism - it's meant as "refer to / see".

Backported from #70885.
2023-01-10 15:26:54 +01:00
Rémi Verschelde 6963ba631e
Fix typos with codespell 2022-12-15 12:26:59 +01:00
norrath-hero aca8999cc9 Fix GLES 2 Spotlight Bug
Fixes https://github.com/godotengine/godot/issues/69759
Fixes https://github.com/godotengine/godot/issues/54343
Fixes https://github.com/godotengine/godot/issues/25526
2022-12-11 05:45:45 +08:00
clayjohn f1bafe8131
Take FXAA samples from half-pixel coordinates to improve quality
(cherry picked from commit dbcc0fa2a6)
2022-11-30 15:39:00 +01:00
dzil123 aa0b91ca52 [3.x] Fix shader compiler asan out of bounds 2022-11-17 19:24:15 -08:00
lawnjelly a300505066 Prevent drawing MultiMesh with zero instance count
Issuing a driver drawcall for MultiMesh with zero instances crashes some drivers.
2022-09-15 13:20:12 +01:00
lawnjelly 9b294b298e Fix GLES directional shadow uninitialized data
Valgrind shows directional_shadow.fbo accessed when uninitialized in directional_shadow_create.
2022-09-06 09:21:56 +01:00
Rémi Verschelde 36fc99158d
Merge pull request #63971 from paddy-exe/spatial-shader-built-ins 2022-08-08 15:50:25 +02:00
Rémi Verschelde 144f3ec94e
Merge pull request #51676 from Calinou/shader-add-hint-transparent-texture-3.x
Add `hint_transparent` to use a transparent black placeholder texture (3.x)
2022-08-05 22:34:05 +02:00
Patrick Exner be3d331f26 Backport spatial shader built-ins
Backport of this PR: https://github.com/godotengine/godot/pull/63597
This adds these as new Built-Ins to Spatial Shaders
* Object's Position in World Space
* Camera Position in World Space
* Camera Direction in World Space
* Object's Position in View Space
2022-08-05 21:19:15 +02:00
Rémi Verschelde ccbe083949
Merge pull request #63071 from lawnjelly/skinning2d_bounds 2022-08-05 19:34:48 +02:00
Hugo Locurcio ab9a95f266
Add `hint_transparent` to use a transparent black placeholder texture 2022-08-02 23:32:07 +02:00
Rémi Verschelde 818f1eed31 Code quality: Fix header guards consistency
Adds `header_guards.sh` bash script, used in CI to validate future
changes. Can be run locally to fix invalid header guards.
2022-07-25 14:53:37 +02:00
Hugo Locurcio b03ceaba2f
Document support limitations for OmniLight cubemap shadows in GLES2 2022-07-18 22:18:56 +02:00
lawnjelly 18bb668a2e Fix skeleton 2D stale bounding rect
Adds special logic for handling skeleton bounding rect updates. Previously these were never being updated because the canvas item is never set to "rect_dirty".
2022-07-18 19:47:23 +01:00
Rémi Verschelde 772d071863 SCons: Properly track codegen script dependency for generated GLES headers 2022-07-02 15:52:42 +02:00
lawnjelly f8df04ed50 More low priority redraw request cases
Some more cases of textures etc causing continuous updates in vital updates only mode are fixed.
2022-06-12 06:44:59 +01:00