Commit Graph

1793 Commits

Author SHA1 Message Date
Pedro J. Estébanez 4c710780d4 Implement async shader compilation plus caching for GL ES 3
Async. compilation via ubershader is currently available in the scene and particles shaders only.

Bonus:
- Use `#if defined()` syntax for not true conditionals, so they don't unnecessarily take a bit in the version flagset.
- Remove unused `ENABLE_CLIP_ALPHA` from scene shader.
- Remove unused `PARTICLES_COPY` from the particles shader.
- Remove unused uniform related code.
- Shader language/compiler: use ordered hash maps for deterministic code generation (needed for caching).
2021-11-09 12:19:12 +01:00
Rémi Verschelde f9174d1c28
Merge pull request #54625 from bruvzg/surrogates 2021-11-09 00:08:28 +01:00
Rémi Verschelde 4b4e92b3d4
Merge pull request #52944 from RandomShaper/property_pin_control_natural_3.x 2021-11-08 18:53:25 +01:00
Pedro J. Estébanez 4dba25b3ff Add property value pinning 2021-11-08 17:42:27 +01:00
Rémi Verschelde 5f87d5ebea
Merge pull request #54385 from Calinou/colorpicker-overbright-indicator-tweak-icon-3.x 2021-11-08 13:15:35 +01:00
Pedro J. Estébanez 76b7d23a10 Unify determination of default property values 2021-11-08 11:17:49 +01:00
Hugo Locurcio cc2b6acbd2
Improve the appearance of simple parallax in SpatialMaterial
This uses offset limiting to avoid distortion in the distance,
and makes simple (non-deep) parallax more usable overall.
2021-11-07 00:58:04 +01:00
bruvzg 262ec9033a Implement limited surrogate pairs support for platforms with 16-bit wchar_t. 2021-11-06 11:55:06 +02:00
Yuri Sizov ec15227be8 Prevent MeshDataTool from crashing due to invalid bones/weights arrays 2021-11-02 16:52:36 +03:00
Hugo Locurcio cb441dd9eb
Tweak overbright indicator icon to be more visible on white background
An outline is now present on all sides to ensure it's more visible
when the "new" color (on the right of a ColorPicker) is overbright.
2021-10-29 16:20:40 +02:00
Rémi Verschelde 1b65550ec7
clang-format: Various fixes to comments alignment from `clang-format` 13
All reviewed manually and occasionally rewritten to avoid bad auto formatting.
2021-10-28 14:50:32 +02:00
Rémi Verschelde 42d385b312
clang-format: Disable alignment of operands, too unreliable
Sets `AlignOperands` to `DontAlign`.

`clang-format` developers seem to mostly care about space-based indentation and
every other version of clang-format breaks the bad mismatch of tabs and spaces
that it seems to use for operand alignment. So it's better without, so that it
respects our two-tabs `ContinuationIndentWidth`.
2021-10-28 13:23:38 +02:00
Yuri Sizov 7fe0dab69b Add focus font color to Button and derivatives 2021-10-26 17:40:51 +03:00
Sean Kim 8de5b78a97 Fix crash on null image ref in ProceduralSky 2021-10-20 22:55:08 -07:00
Rémi Verschelde 06fc2378de
Merge pull request #51491 from Calinou/glow-add-high-quality-mode-3.x
Add high quality glow mode (3.x)
2021-10-08 07:47:07 +02:00
PouleyKetchoupp 00d4a30b05
Fix editable children errors when packing scene tree at runtime
When packing a scene node which is not the root, errors where caused
by internal checks in is_editable_instance method.

This check can be safely made outside instead.

(cherry picked from commit 2f6cf3b8a8)
2021-10-06 09:29:31 +02:00
Rémi Verschelde bd7bea2087
Merge pull request #53233 from metinc/fix-animated-sprite-precision-error 2021-10-05 15:23:51 +02:00
Yuri Sizov 457d48a1f1 Make Theme report property list changes less often 2021-10-04 18:05:23 +03:00
Yuri Sizov 98cf645258 Expose API to retrieve Theme's default font 2021-10-04 17:44:53 +03:00
Yuri Sizov cd45a70f2d Reorganize Theme resource code for better maintainability 2021-10-04 17:09:32 +03:00
boruok 85dd970b81 [3.x] Fix AtlasTexture get_data crash 2021-09-30 22:22:10 +09:00
Metin Celik edcb7b8129 Add half frame to floor() 2021-09-29 20:03:07 +02:00
Duarte David a4fecbb0da
Fixes the normals of SphereMesh when the sphere/hemisphere is oblong
(cherry picked from commits f4ac08a182
and 7d53755ca7)
2021-09-29 10:55:51 +02:00
boruok 768cff7c02 fix atlas texture return null 2021-09-28 16:34:00 +09:00
Rémi Verschelde ac01b1cb1c
Revert "Fixes the normals of SphereMesh when the sphere/hemisphere is oblong"
This reverts commit c4d0074aae.

It caused regression #52965.
2021-09-27 18:27:55 +02:00
John Wigg d484e30247
Fix y billboard shear when rotating camera
Fixes shear effect with `BILLBOARD_FIXED_Y` when the camera is rotated around the z-axis by rotating the mesh correctly into view space.

Also removes shearing effects that occur when rotating the mesh by excluding the model rotation and scale from the billboard matrix.

(cherry picked from commit d3850a0954)
2021-09-21 20:33:11 +02:00
skysphr f53294f874
Added increment_pressed and decrement_pressed icons to scrollbars
(cherry picked from commit e27ab2708f)
2021-09-21 17:14:59 +02:00
gyroninja 9f0d7b70fd
Fail at instantiating if the root node is instantiated
(cherry picked from commit f400c9239e)
2021-09-21 17:14:58 +02:00
Rémi Verschelde be6b7b4f9f
Merge pull request #52475 from tcoxon/fix_43733_3.x
Prevent shaders from generating code before the constructor finishes. [3.x]
2021-09-21 13:53:17 +02:00
Tom Coxon 9e9bac1549 Prevent shaders from generating code before the constructor finishes.
Fixes #43733: "creating SpatialMaterial in a separate thread creates invalid
shaders (temporarily)."

The bug occurred because various setters called in materials' constructors add
materials to queues that are processed on the main thread. This means that
when the materials are created in another thread, they can be processed on the
main thread before the constructor has finished.

The fix adds a flag to affected materials that prevents them from being added
to the queue until their constructors have finished initialising all the
members.
2021-09-21 11:47:51 +01:00
Hugo Locurcio 210ab11643
Write node groups one a single line when saving a `.tscn` file
This makes `.tscn` files more readable by ensuring sections are always
written on a single line.

(cherry picked from commit d33a7367b6)
2021-09-19 11:30:21 +02:00
Rémi Verschelde c33ff6bf6b
Merge pull request #47235 from opl-/fix/25046-3.x 2021-09-16 15:24:09 +02:00
Rémi Verschelde 627577d615
Merge pull request #47346 from nekomatata/heightmap-draw-triangles-3.x 2021-09-16 15:23:06 +02:00
PouleyKetchoupp 389e67aa98
Fix loading packed scene with editable children at runtime
At runtime, packed scenes with nodes marked as editable instance where
saved with node type tags, which prevented the scene to be then loaded
as an instance, causing duplicated nodes in the tree.

This change ensures nodes marked as editable instances and their owned
children are properly set as instances.

That doesn't make a difference in the editor, since such nodes where
already set as instances based on their instance state, but it helps
at runtime where instance states are disabled.

Co-authored-by: latorril <latorril@gmail.com>
(cherry picked from commit fab88a810c)
2021-09-14 13:41:27 +02:00
Yuri Roubinsky b36b81cbdd
Better port handling connection for `GraphEdit`
(cherry picked from commit 61904d56ea)
2021-09-14 13:41:27 +02:00
Duarte David c4d0074aae
Fixes the normals of SphereMesh when the sphere/hemisphere is oblong
(cherry picked from commit f4ac08a182)
2021-09-14 13:41:26 +02:00
Vincent ea13ff860d
implement individual mesh transform for meshlibrary items
(cherry picked from commit 70108fd850)
2021-09-14 13:41:22 +02:00
opl- a8a52f576e Fix DynamicFont breaking mouse grab in inspector spinners
This was caused by DynamicFont not specifying which property was edited, resulting in the whole inspector property tree being recreated.
2021-09-11 20:12:44 +02:00
Endri Lauson 077083938e Add a new high quality tonemapper: ACES Fitted 2021-09-08 19:12:09 -03:00
Camille Mohr-Daurat 8608ece42f
Merge pull request #50405 from nekomatata/clean-convex-hull-decomposition-3.x
[3.x] Clean convex hull decomposition code
2021-09-06 09:34:50 -07:00
Hugo Locurcio 1ab3ddf94a
Allow using WOFF fonts in DynamicFont
This is already supported by FreeType, but it wasn't exposed.

Adding support for WOFF2 would require linking a Brotli decompression
library in Godot, so only WOFF1 is exposed here.
2021-08-25 08:09:23 +02:00
Hugo Locurcio 33d23281cb
Allow clearcoat, anisotropy and refraction in SpatialMaterial in GLES2
These SpatialMaterial features work just fine in GLES2,
but they were not exposed in the inspector when GLES2 was used.
2021-08-22 02:18:36 +02:00
Rémi Verschelde 6a058cbf39
Merge pull request #51746 from Calinou/add-shader-comment-3.x
Add a comment at the top of generated shaders (3.x)
2021-08-19 00:16:29 +02:00
Yuri Sizov 29f0a0eebf Adjust the material key bit size for ParticlesMaterial 2021-08-18 17:53:24 +03:00
Rémi Verschelde c0fc475078
Merge pull request #51521 from lawnjelly/portals_occluders
Sphere occluders (portals and general use)
2021-08-17 13:55:34 +02:00
Rémi Verschelde 53cc7a9be9
Merge pull request #51648 from pycbouh/editor-merge-custom-theme-3.x
[3.x] Add support for partial custom editor themes
2021-08-17 13:12:49 +02:00
lawnjelly 115f4dce55 Sphere occluders (portals and general use)
Add framework for supporting geometrical occluders within rooms, and add support for sphere occluders.
Includes gizmos for editing.

They also work outside the portal system.
2021-08-17 09:02:06 +01:00
Hugo Locurcio 8dae2f9f00
Add a comment at the top of generated shaders
This comment is useful to determine the origin of ShaderMaterials
converted from built-in material types (such as CanvasItemMaterial
or SpatialMaterial).

The Godot version is also included in case the shader needs to be
regenerated with a newer engine version.
2021-08-16 18:46:55 +02:00
Rémi Verschelde 450f7fdc39
Merge pull request #51690 from QbieShay/rotate-y-fix
fixed rotate y flag causing the position to reset
2021-08-15 12:18:54 +02:00
QbieShay 32c287e01b fixed rotate y flag causing the position to reset 2021-08-15 11:35:22 +02:00
Yuri Sizov ab25266213 Add support for partial custom editor themes 2021-08-14 02:11:54 +03:00
Rémi Verschelde 54d14a912a
Merge pull request #51402 from tinmanjuggernaut/texture_array_anisotropic
[3.x] Add Anisotropic Filter option for TextureArrays
2021-08-13 08:46:22 +02:00
Rémi Verschelde f75d8d5c04
Merge pull request #51589 from Geometror/improve-stylebox-aa-3.x
StyleBox fake AA improvements (make anti aliasing size a float property) [3.x]
2021-08-13 01:33:01 +02:00
Rémi Verschelde 4b514bfdff
Merge pull request #51577 from m4gr3d/update_external_texture_config
Update external texture flag configuration.
2021-08-12 22:55:15 +02:00
Hendrik Brucker 6d05ef9ccb StyleBox fake AA improvements (aa_size float property) 2021-08-12 22:21:34 +02:00
Fredia Huya-Kouadio 2cc1cdc27b Update external texture flag configuration. 2021-08-12 10:46:09 -07:00
Cory Petkovsek fb609b22e4 Add Anisotropic Filtering option for TextureArrays 2021-08-12 23:56:03 +08:00
Rémi Verschelde 07c70efcbb
Merge pull request #51555 from mortarroad/3.x-fix-mipmap-loading
[3.x] Fix loading mipmaps, if the mipmap levels have different formats.
2021-08-12 13:17:10 +02:00
Morris Tabor 0e26f1747b Fix loading mipmaps, if the mipmap levels have different formats.
Fixes https://github.com/godotengine/godot/issues/50647
2021-08-12 12:18:13 +02:00
Morris Tabor fb9685daaa Fix regressions caused by recent particle spread refactor
Caused by https://github.com/godotengine/godot/pull/47310
Fixes https://github.com/godotengine/godot/issues/51043
Fixes https://github.com/godotengine/godot/issues/51424
2021-08-12 11:47:05 +02:00
Hugo Locurcio 0e0af7fa83
Add high quality glow mode
This backports the high quality glow mode from the `master` branch.

Previously, during downsample, every second row was ignored.
Now, when high-quality is used, we sample two rows at once to ensure
that no pixel is missed. It is slower, but looks much better and has
a much high stability while moving.

High quality also takes an additional horizontal sample the width of the
horizontal blur matches the height of the vertical blur.
2021-08-11 17:00:41 +02:00
Rémi Verschelde 69c194736d
VariantParser: Fix uninitialized ResourceParser funcs
They could cause a segfault when parsing values with ID "Resource"
as apparently we never set a valid `func` for it.

Fixes crash part of #42115.

(cherry picked from commit f3aaa713d9)
2021-08-03 09:33:25 +02:00
Rémi Verschelde 9735f2803c
Merge pull request #46800 from The-O-King/normal_compression
[3.x] Implement Octahedral Map Normal/Tangent Attribute Compression
2021-07-30 17:34:47 +02:00
Omar El Sheikh d274284069 Octahedral Normal/Tangent Compression
Implement Octahedral Compression for normal/tangent vectors
*Oct32 for uncompressed vectors
*Oct16 for compressed vectors

Reduces vertex size for each attribute by
*Uncompressed: 12 bytes, vec4<float32> -> vec2<unorm16>
*Compressed: 2 bytes, vec4<unorm8> -> vec2<unorm8>

Binormal sign is encoded in the y coordinate of the encoded tangent

Added conversion functions to go from octahedral mapping to cartesian
for normal and tangent vectors

sprite_3d and soft_body meshes write to their vertex buffer memory
directly and need to convert their normals and tangents to the new oct
format before writing

Created a new mesh flag to specify whether a mesh is using octahedral
compression or not
Updated documentation to discuss new flag/defaults

Created shader flags to specify whether octahedral or cartesian vectors
are being used

Updated importers to use octahedral representation as the default format
for importing meshes

Updated ShaderGLES2 to support 64 bit version codes as we hit the limit
of the 32-bit integer that was previously used as a bitset to store
enabled/disabled flags
2021-07-30 10:29:09 -04:00
Aaron Franke e47018ffa4
[3.x] Fix building with the FreeType module disabled 2021-07-29 21:47:40 -05:00
Yuri Sizov 62f7eb7b2f Fix a crash when trying to load a WebP StreamTexture 2021-07-29 16:00:04 +03:00
Haoyu Qiu 2131b3c61c Fix selection of spaced atlas tile when using priority 2021-07-26 20:05:59 +08:00
Aaron Franke 7dc2edc430
[3.x] Allow reading shaders from .gdshader files 2021-07-19 23:34:23 -04:00
Hendrik Brucker fe616d443a
Fix color properties of particle nodes/material
(cherry picked from commit 3a4a2198ed)
2021-07-15 10:25:35 +02:00
Rémi Verschelde 875045adde
Use modules_enabled.gen.h to improve inter dependency checks
- Fix build with gdscript module disabled. Fixes #31011.
- Remove unused `gdscript` compile option.
- Fix build with regex module disabled.
- Fix ImageLoaderSVG to forward declare thirdparty structs.

(cherry picked from commit f3726ee994)
2021-07-14 23:36:38 +02:00
PouleyKetchoupp 788db5cf47 Clean convex hull decomposition code
Remove unnecessary conversion between triangle data and vertex data
whenever possible.
2021-07-13 11:13:25 -07:00
Hugo Locurcio c0ccc34eeb
Tweak the GradientTexture property hint to follow CurveTexture
This prevents setting too large values and crashing the editor.

Very low values are also no longer allowed since they are generally
not detailed enough to represent complex gradients, leading to confusion.

(cherry picked from commit 2c7813385d)
2021-07-13 10:20:02 +02:00
Rémi Verschelde 9d2cbe2c02
Merge pull request #50328 from nekomatata/convex-hull-simplification-3.x
[3.x] Options to clean/simplify convex hull generated from mesh
2021-07-12 22:34:22 +02:00
Rémi Verschelde 6ec2caf12c
Merge pull request #48763 from QbieShay/plane-offset
[3.x] Added a center_offset property to both plane primitive and quad primitive
2021-07-12 10:32:19 +02:00
PouleyKetchoupp 240c33708c Options to clean/simplify convex hull generated from mesh
Clean: remove duplicate and interior vertices (uses Bullet algorithm)
Simplify: modify the geometry for further simplification (uses VHACD
algorithm)

In the editor, single convex hull now uses the clean option.
Added a new editor entry to create a simplified convex hull, can be
useful for creating convex hull from highly tessellated triangle meshes.

Specific change for 3.x:
Add support for Vector<Vector3> and PoolVector<Vector3> in the convex hull generator.
2021-07-09 17:45:59 -07:00
Hugo Locurcio e7d6f8b8b8
Allow a top and bottom radius equal to 0 in CylinderMesh
The CylinderMesh generation code handles this special case and
avoids generating the top and bottom faces if their radius is equal
to 0. This improves performance by reducing the number of vertices
to draw.

If both values are set to 0, nothing will be visible but the mesh
generation will still succeed.

This also improves the CylinderMesh class documentation.

(cherry picked from commit b4ed84ba2b)
2021-06-29 14:02:22 +02:00
Pedro J. Estébanez cd96e30fee
Remove side effects of scene save
(cherry picked from commit 598fd51277)
2021-06-29 13:13:06 +02:00
PouleyKetchoupp cad2ba013a
Fix export var override in PackedScene at runtime
Regression fix: update_exports is tool only and should be used only in
the editor, otherwise it can cause export variable overrides from
instances to be discarded in favor of the parent's value.

(cherry picked from commit f1587c8a7d)
2021-06-29 13:12:52 +02:00
Hugo Locurcio 11033be5c6
Fix flipped binormal in SpatialMaterial triplanar mapping
This made normal maps on triplanar materials use an inverted Y direction
compared to non-triplanar materials.
2021-06-27 16:32:03 +02:00
Yuri Sizov 7120be9ff5 Overhaul the theme editor and improve user experience
Backport of #49388, #49772.
2021-06-21 01:37:54 +03:00
Yuri Sizov 014cb0c33a Refactor Theme item management in the theme editor
Backport of #46593, #46808, #49227
2021-06-20 20:34:37 +03:00
Rémi Verschelde 6fecaddbec
Merge pull request #49731 from Calinou/cylindermesh-allow-zero-rings-3.x
Tweak CylinderMesh `rings` property hint to allow a value of 0
2021-06-20 00:44:08 +02:00
Hugo Locurcio a82c90ca55
Tweak CylinderMesh `rings` property hint to allow a value of 0
A value of 0 rings is valid and results in a non-subdivided cylinder.

Compared to the previous lowest allowed value (1), a value of 0 halves
the triangle count in any cylinder.
2021-06-19 08:52:24 +02:00
Hugo Locurcio a6a6ad5c08
Add custom debug shape thickness and color options to RayCast
This backports the improved RayCast debug drawing functionality
from the `master` branch.

`ArrayMesh.clear_surfaces()` was also backported from the `master`
branch and exposed because the new debug drawing code requires it.
2021-06-19 06:01:25 +02:00
Marcel Admiraal 7e03bd1671 Remove duplicate WARN_PRINTS macro 2021-06-18 12:57:59 +01:00
PouleyKetchoupp c957035320 Fix external resource cache regression 2021-06-16 16:07:04 -07:00
Rémi Verschelde 465ab36ddf
Merge pull request #49653 from madmiraal/remove-err_prints-3.x
[3.x] Remove duplicate ERR_PRINTS macro
2021-06-16 17:33:22 +02:00
Marcel Admiraal 5a58516231 Remove duplicate ERR_PRINTS macro 2021-06-16 11:56:25 +01:00
Rémi Verschelde de04394c73
Merge pull request #49625 from nekomatata/fix-sub-resource-cache-3.x
[3.x] Fix sub-resource storing the wrong index in cache
2021-06-15 20:39:28 +02:00
PouleyKetchoupp f9abd1ec0e Fix sub-resource storing the wrong index in cache
1. Backport sub-resource cache fixes from master.
Uses a cache by index to keep sub resource indices consistent.

2. The subindex within Resource wasn't synchronized with the path stored in cache when saving a packed scene. It could cause
sub-resources to be swapped when loading the same packed scene in
the same session.

Now the subindex in Resource reflects the sub-resource path in cache,
making saving and loading sub-resources consistent.

Co-authored-by: latorril <latorril@gmail.com>
2021-06-15 09:54:58 -07:00
Rémi Verschelde c45ce768b1
Merge pull request #47854 from mortarroad/3.x-lossless-webp
[3.x] Implement lossless WebP encoding
2021-06-11 19:35:47 +02:00
Morris Tabor 5de08ef1d6 Implement lossless WebP encoding 2021-06-11 18:48:04 +02:00
Yuri Sizov de1ba1f260 Add utility methods to Theme, improve error messages and documentation
Backport of relevant parts of #47251, #49308
2021-06-10 16:44:24 +03:00
Yuri Sizov 83012d6927 Expose missing Theme methods
Backport of relevant, non-breaking parts of #37759
2021-06-10 15:31:23 +03:00
Rémi Verschelde 5d8fe70de5
Merge pull request #49377 from Calinou/readd-dynamicfont-kerning
Readd support for kerning in DynamicFont (3.x)
2021-06-07 14:30:44 +02:00
Rémi Verschelde 80e1585a6e
Style: Cleanup uses of double spaces between words
Or after punctuation. Tried to leave third-party stuff alone, unless it has
been heavily modified for Godot.

(cherry picked from commit c1c76850cb)
2021-06-07 12:06:59 +02:00
Hugo Locurcio c5ed95a526
Readd support for kerning in DynamicFont
DynamicFont kerning was removed in
a9b7843dca.

This readds kerning support and fixes it at the same time.

Co-authored-by: follower <follower@rancidbacon.com>
2021-06-07 02:36:10 +02:00
Rémi Verschelde ac3417005d
Merge pull request #48533 from mortarroad/3.x-convex-hull-ported
[3.x] Port Bullet's convex hull computer to replace of QuickHull
2021-05-22 23:23:15 +02:00
Rémi Verschelde 1d06a7edac
Merge pull request #48974 from trollodel/debug_shapes_update_crash_3.x
Fix crash on debug shapes update if CollisionObject is not in tree
2021-05-22 18:29:31 +02:00
trollodel 7043d6d1c6 Fix crash on debug shapes update if CollisionObject is not in tree
Also fix ConcavePolygonShape not emitting the changed signal
2021-05-22 17:33:51 +02:00