1
0
Fork 0
Commit Graph

1179 Commits

Author SHA1 Message Date
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 31bc6afcad
Merge pull request #96802 from dsnopek/expose-resource-importer-get-format-version
Expose `ResourceImporter::get_format_version` via `EditorImportPlugin::_get_format_version()`
2024-12-12 16:13:26 -06:00
David Snopek af47df1005 Expose `ResourceImporter::get_format_version` via `EditorImportPlugin::_get_format_version()` 2024-12-12 08:15:28 -06:00
Rémi Verschelde abca8318c4
Merge pull request #98071 from BlueCube3310/res-import-tex-clean
Clean up ResourceImporterTexture
2024-12-12 14:09:45 +01:00
BlueCube3310 0400cbce1e Clean up ResourceImporterTexture 2024-12-12 11:38:40 +01:00
Chaosus 9a8d6628de [Scene] Add `SceneStringName::hover` 2024-12-11 11:11:25 +03:00
Lukas Tenbrink b5c31ebb41 Add contains_char() for single-character 'contains' calls. 2024-12-06 20:23:35 +01:00
Thaddeus Crews 42eb4fbc07
Merge pull request #93831 from what-is-a-git/wav-runtime
Add runtime file loading to `AudioStreamWAV`
2024-12-03 14:40:42 -06:00
what-is-a-git 707f1038c3 Add runtime file loading to AudioStreamWAV 2024-12-02 20:03:53 -05:00
Rémi Verschelde fa264115ce
Merge pull request #98664 from bruvzg/ts_reset_subpixel_shift
[TextServer] Reset subpixel shift on blank glyphs.
2024-12-02 17:20:07 +01:00
hakro 8f5b4cd7fe Style skeleton button on import screen 2024-11-29 00:47:33 +01:00
Thaddeus Crews 1c78b09815
Merge pull request #96544 from SaracenOne/import_thumbnails
Generate thumbnails on imported scenes.
2024-11-27 10:47:02 -06:00
Thaddeus Crews 04786f0ee8
Merge pull request #97824 from TokageItLab/retarget-modifier
Add RetargetModifier3D for realtime retarget to keep original rest
2024-11-26 13:04:47 -06:00
Saracen 74611a74d1 Generate editor thumbnails on imported scenes. 2024-11-24 10:23:56 -08:00
Thaddeus Crews 3d6e712177
Merge pull request #93714 from Calinou/normal-map-invert-y-preserve-alpha-channel
Preserve existing alpha channel when using Normal Map Invert Y import option
2024-11-18 09:23:31 -06:00
Silc Lizard (Tokage) Renew f5b49af99f Add RetargetModifier3D for realtime retarget to keep original rest 2024-11-18 22:44:55 +09:00
A Thousand Ships 68f638cf02
Use `(r)find_char` instead of `(r)find` for single characters 2024-11-17 10:02:18 +01:00
Thaddeus Crews 64ce03f261
Merge pull request #93440 from Calinou/import-size-limit-downsample-if-necessary
Downsample textures on import if necessary for technical reasons
2024-11-13 08:33:40 -06:00
Thaddeus Crews 2ed6d12652
Merge pull request #97363 from reduz/deterministic-gen-suberesources-id
Allow passing UID to importer
2024-11-11 14:18:30 -06:00
Thaddeus Crews 9be806aef1
Merge pull request #92986 from Repiteo/core/ref-instantiate-integration
Core: Integrate Ref `instantiate` where possible
2024-11-11 14:18:15 -06:00
Thaddeus Crews 204f589213
Merge pull request #97551 from lalitshankarchowdhury/resize-audio-waveform
AudioStreamImport: Allow waveform resize
2024-11-11 14:18:00 -06:00
Juan fe34c45d2a
Allow passing UID to importer
This helps, for importers spitting out new resources to the res://
filesystem to actually hash them to generate deterministic UIDs.

This PR also fixes the determinism for translations.
2024-11-11 15:22:42 +01:00
tetrapod00 899f5151c3 Standardize terms for renderers in error strings
Use "Forward+", "Mobile", "Compatibility", and "renderer" or "rendering method".
2024-11-10 13:30:44 -08:00
Thaddeus Crews 925b690c98
Core: Integrate `Ref::instantiate` where possible 2024-11-10 12:41:26 -06:00
Logharaa b40e04d94f Remove unnecessary condition 2024-11-09 10:42:22 +09:00
Thaddeus Crews 3a7efc9edf
Merge pull request #98874 from aaronfranke/gltf-preserve-visibility
GLTF: Preserve node visibility on import
2024-11-07 12:36:35 -06:00
Thaddeus Crews 671d6e3230
Merge pull request #98150 from hunterloftis/fix-default-import-threaded
Fix freeze on non-thread-safe custom importers
2024-11-07 12:36:20 -06:00
Aaron Franke 924732772b
GLTF: Preserve node visibility on import 2024-11-05 19:06:08 -08:00
Arseny Kapoulkine 260287b3a1 Rewrite index optimization code for maximum efficiency
While all the previous fixes to optimizeVertexCache invocation fixed the
vertex transform efficiency, the import code still was missing two
crucial recommendations from meshoptimizer documentation:

- All meshes should be optimized for vertex cache (this reorders
  vertices for maximum fetch efficiency)
- When LODs are used with a shared vertex buffer, the vertex order
  should be generated by doing a vertex fetch optimization on the
  concatenated index buffer from coarse to fine LODs; this maximizes
  fetch efficiency for coarse LODs

The last point is especially crucial for Mali GPUs; unlike other GPUs
where vertex order affects fetch efficiency but not shading, these GPUs
have various shading quirks (depending on the GPU generation) that
really require consecutive index ranges for each LOD, which requires the
second optimization mentioned above. However all of these also help
desktop GPUs and other mobile GPUs as well.

Because this optimization is "global" in the sense that it affects all
LODs and all vertex arrays in concert, I've taken this opportunity to
isolate all optimization code in this function and pull it out of
generate_lods and create_shadow_mesh; this doesn't change the vertex
cache efficiency, but makes the code cleaner. Consequently,
optimize_indices should be called after other functions like
create_shadow_mesh / generate_lods.

This required exposing meshopt_optimizeVertexFetchRemap; as a drive-by,
meshopt_simplifySloppy was never used so it's not exposed anymore - this
will simplify future meshopt upgrades if they end up changing the
function's interface.
2024-11-04 06:58:06 -08:00
bruvzg e81a2afbc4
[TextServer] Reset subpixel shift on blank glyphs and import option to enable/disable it. 2024-11-01 10:18:57 +02:00
Clay John 7187c251da
Merge pull request #98620 from zeux/lodgen-cleanup
LOD: Remove "Raycast Normals" and associated "Normal Split Angle" settings
2024-10-30 17:13:57 -07:00
Thaddeus Crews 696ca9db3c
Merge pull request #98039 from aaronfranke/button-icon
Rename internal Button `*_icon` functions to `*_button_icon` to match exposed methods
2024-10-29 19:25:59 -05:00
Thaddeus Crews b7a0971ad2
Merge pull request #97934 from adamscott/give-AThousandShips-a-break
[Codestyle] Set clang-format `RemoveSemicolon` rule to `true`
2024-10-29 19:25:36 -05:00
Aaron Franke 562c666e3d
Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
Arseny Kapoulkine 494fe2fe21 LOD: Remove "Raycast Normals" and associated "Normal Split Angle" settings
"Raycast Normals" was introduced in 4.4 dev and defaulted to "false".
The limited testing results at the time suggested that raycasting
generally reduces normal quality compared to native simplifier results,
at the same time increasing vertex memory and import time.

To play it safe, we introduced a setting that defaulted to false, with
the goal of removing it later in 4.4 development cycle if no regressions
are noticed. Since we already had three dev snapshots and no reports,
this change removes the setting and associated code.

"Normal Split Angle" was only used when raycast normals were enabled;
this change removes it from the settings, but keeps it in the script
binding for compatibility.

Existing meshes import exactly the same after this change (unless they
chose to override raycasting which would be surprising).

split_normals helper was only used in this code path and is also removed
for simplicity; it is unlikely that this code will be useful as is, as
it can only regenerate normals without fixing tangents or updating
positions.
2024-10-28 10:14:04 -07:00
Thaddeus Crews 851516eeec
Merge pull request #97711 from EAinsley/fix#94718
Fix freeze when data chunk size in WAV header is larger than the actual size
2024-10-25 13:03:57 -05:00
Adam Scott 0d350e7108
Set clang-format `RemoveSemicolon` rule to `true`
- Set clang-format `Standard` rule to `c++20`
2024-10-25 13:49:43 -04:00
Hugo Locurcio b8ee61f45d
Add Generate LODs, Shadow Mesh and Lightmap UV2 options to OBJ mesh import
This puts OBJ mesh import on parity with 3D scene import. It's now
possible to have the same level of optimization as imported 3D scenes
while using the OBJ mesh workflow.

`optimize_indices_for_cache()` is now always called on import as well,
similar to what the 3D scene import already does.
2024-10-25 02:48:42 +02:00
Ainsley Su cd126a041e
No freezing when size in header is too large
Give warning if the size in header mismatch the actual file size. If
data chunk size is greater than the actual data size, try to import by
treating all the remaining data as data chunk and give warning to users.
2024-10-23 16:53:10 +02:00
Hunter Loftis bbb8c1703b Fix freeze on non-thread-safe custom importers 2024-10-15 11:46:14 -04:00
bruvzg e4b8cd2948
[Font Importer] Update Unicode block list to Unicode 16.0 2024-10-15 12:40:30 +03:00
Thaddeus Crews 56ed76a372
Merge pull request #97582 from BlueCube3310/basisu-hdr
BasisU: Update to 1.50.0 and add HDR support
2024-10-14 14:09:57 -05:00
BlueCube3310 200ed0971a BasisU: Update to 1.50.0 and add HDR support 2024-10-12 18:02:44 +02:00
Rob Blanckaert e5ff64d08f SceneImportSettings update_timer should be a oneshot.
SceneImportSettings uses a timer to debounce updates, but the
timer isnt a one shot.  This means after the first update is
scheduled, the dialog keeps re-rendering evne though no update
has been requested.
2024-10-04 21:07:35 -07:00
BlueCube3310 77dab88ef0 Fix 3D HDR texture import with lossless compression 2024-10-04 23:38:39 +02:00
Lalit Shankar Chowdhury c574377a1c
AudioStreamImport: Allow waveform resize 2024-09-29 13:58:25 +05:30
Rémi Verschelde ef7547384c
Merge pull request #95678 from Hilderin/fix-slow-load-on-large-project-v2
Fix slow editor load on large projects (v2)
2024-09-26 12:45:31 +02:00
Hilderin 21f7c8a25f Fix slow editor load on large projects (v2) 2024-09-25 17:36:39 -04:00
Thaddeus Crews 9f9ee0c813
SCons: Add unobtrusive type hints in SCons files 2024-09-25 09:34:35 -05:00
clayjohn 07546006e8 Fix crash when importing a surface with no UVs after another surface in the same OBJ file that had UVs 2024-09-20 19:29:11 -07:00
Rémi Verschelde b998cb1335
Merge pull request #96768 from DeeJayLSP/wav-end
WAV: Fix one frame overflow at the end
2024-09-12 09:25:31 +02:00
DeeJayLSP 147accdf74 WAV: Fix one frame overflow at the end 2024-09-11 21:57:14 -03:00
Aaron Franke b0f99099b4
Add "Use Node Type Suffixes" scene import option 2024-09-09 01:12:14 -07:00
Rémi Verschelde 82688e9e2e
Merge pull request #96094 from SaracenOne/add_3d_skeleton_to_advanced_importer
Add 3D Skeleton Preview to Advanced Importer
2024-09-08 23:21:28 +02:00
Saracen 6532eff7a7 Various improvements to advanced importer skeleton preview.
Better size calculation in advanced importer preview.
Uses the skeleton mesh to calculate the scene's bounding box.
This improves some situations where a mesh instances' scale
does not match its visual representation when a skeleton
is applied.

Advanced importer skeletal preview UX improvement.
Make the visibility of the skeletal preview in the advanced importer
when selecting an animation dependent on a new dedicated toggle button
rather than carrying over whether a skeletal node was or was not previously
selected before selecting the animation.

Advanced importer skeletal preview fix.
Fixes the preview on scaled skeletons in the advanced importer by applying the node's scale
to the preview and generating a skin for it.
2024-09-07 02:09:47 +01:00
Rémi Verschelde d15de6f264
Merge pull request #96292 from AThousandShips/null_check_ref_fix
Cleanup of raw `nullptr` checks with `Ref`
2024-09-03 16:13:55 +02:00
Rémi Verschelde 7cd095dea1
Merge pull request #96401 from SaracenOne/filter_improvement
Enforce correct type for silhouette filter.
2024-09-02 18:08:12 +02:00
Saracen 107f2aea88 Enforce correct type for silhouette filter. 2024-08-31 20:35:09 +01:00
A Thousand Ships 194bdde947
Cleanup of raw `nullptr` checks with `Ref`
Using `is_valid/null` over checks with `nullptr` or `ERR_FAIL_NULL` etc.
2024-08-31 15:01:09 +02:00
DeeJayLSP d3b51c4efb ResourceImporterWAV: Enable QOA compression by default 2024-08-31 00:42:56 -03:00
Rémi Verschelde 77bc419071
Merge pull request #96174 from DeeJayLSP/wav-docs
WAV stream/importer: Improve compression/loop names and descriptions
2024-08-30 23:37:50 +02:00
DeeJayLSP 5a50b3a6c5 WAV stream/importer: Improve compression/loop names and descriptions 2024-08-30 16:31:57 -03:00
Rémi Verschelde 7f86ca057a
Merge pull request #96308 from SaracenOne/attempt_to_reset_imported_scene
Attempt applying RESET pose during import.
2024-08-30 09:59:59 +02:00
Saracen 31253257b3 Attempt applying RESET pose during import. 2024-08-29 22:58:26 +01:00
demolke c409e6d722 Import/export GLTF extras to node->meta
This is useful for custom tagging of objects with properties (for example in Blender) and having this available in the editor for scripting.

- Adds import logic to propagate the parsed GLTF extras all the way to the resulting Node->meta
- Adds export logic to save Godot Object meta into GLTF extras
- Supports `nodes`, `meshes` and `materials` (in GLTF sense of the words)
2024-08-29 19:17:04 +02:00
Yuri Rubinsky 52889ab7ee [Scene] Add SceneStringName::toggled 2024-08-28 15:14:26 +03:00
Rémi Verschelde 5a11abc899
Merge pull request #96198 from DeeJayLSP/qoa-leak
ResourceImporterWAV: Fix memory leak on QOA import
2024-08-28 13:14:27 +02:00
DeeJayLSP e67cc73463 Fix memory leak on QOA import 2024-08-28 08:04:20 -03:00
Aaron Franke 9dd71c6414
ResourceImporterScene: Replace animation bool with an import type string enum 2024-08-27 14:58:18 -07:00
Jeronimo Schreyer 030fd71da2 add support for visualizing bones in Advanced Import Settings
When an imported model Skeleton3D type node is selected, the bones are drawn using lines or octahedrons to provide a clearer reference to their position.
Refactored Skeleton3DGizmoPlugin::redraw now uses a static function to generate bone meshes
2024-08-27 02:10:16 +01:00
Rémi Verschelde 7e8fffa008
Merge pull request #96122 from SaracenOne/fix_post_import_regression
Prevent empty post-import script paths throwing errors.
2024-08-26 22:46:14 +02:00
Saracen 2453911013
Revert "Fix importer preview for models with scaled armatures"
This reverts commit 06709e6865.
2024-08-26 22:25:25 +02:00
Saracen 064f471103 Prevent empty post-import script paths throwing errors. 2024-08-26 16:42:39 +01:00
Rémi Verschelde ac4410ce34
Merge pull request #96079 from adamscott/relative-import-script-path
Add import tab `import_script/path` relative path support
2024-08-25 22:24:28 +02:00
Adam Scott 7e580150f9
Add import tab "import_script/path" relative path support 2024-08-25 12:50:50 -04:00
Saracen 06709e6865 Fix importer preview for models with scaled armatures. 2024-08-25 13:15:26 +01:00
Rémi Verschelde 4b8946102b
Merge pull request #91535 from BlueCube3310/betsy-bc6h
Add Betsy to speed up BC6 compression
2024-08-21 06:38:03 +02:00
BlueCube3310 394ea653aa Add Betsy to speed up BC6 compression 2024-08-18 11:14:05 +02:00
Rémi Verschelde 2e400bc475
Merge pull request #95299 from bruvzg/kern_img
[ImageFont] Fix escape sequence parsing, add note to the docs.
2024-08-16 23:45:44 +02:00
Arseny Kapoulkine 0fde03c0e0 Optimize base and shadow meshes for cache
Previously, vertex cache optimization was ran for the LOD meshes, but
was never ran for the base mesh or for the shadow meshes, including
shadow LOD chain (shadow LOD chain would sometimes get implicitly
optimized for vertex cache as a byproduct of base LOD optimization, but
not always). This could significantly affect the rendering performance
of geometry heavy scenes, especially for depth or shadow passes where
the fragment load is light.
2024-08-16 07:36:12 -07:00
bruvzg 4cc065c2db
[ImageFont] Fix escape sequence parsing, add note to the docs. 2024-08-16 15:48:56 +03:00
Rémi Verschelde f01e052162
Merge pull request #95549 from timothyqiu/split-translation-server
Split `TranslationServer` into its own file
2024-08-16 14:36:16 +02:00
Rémi Verschelde 5847d362de
Merge pull request #95505 from lyuma/import_null_external_animation_library
Avoid `[]` for `external_animation_library` import option
2024-08-16 14:35:20 +02:00
Rémi Verschelde 7865266f24
Merge pull request #94609 from bruvzg/pixel_font_detect
[Font Import] Detect pixel fonts and disable subpixel positioning.
2024-08-16 14:32:14 +02:00
Rémi Verschelde e52cf86661
Merge pull request #94100 from Calinou/obj-import-remove-unused-optimize-mesh
Remove unused Optimize Mesh import option from OBJ mesh import
2024-08-16 10:34:16 +02:00
Rémi Verschelde e58a7530aa
Merge pull request #93727 from zeux/raycast-opt
Disable normal raycaster for LOD generation by default
2024-08-16 10:34:03 +02:00
Haoyu Qiu 7343dc3a5d Split TranslationServer into its own file 2024-08-15 15:00:47 +08:00
Lyuma e7de6f8725 Avoid [] for external_animation_library import option
Some uses of operator[] were causing "rest_pose/external_animation_library": null to be added to the .import file.
2024-08-13 17:53:46 -07:00
Rémi Verschelde 39fc116c5f
Merge pull request #94968 from jsjtxietian/obj-import
Fix obj's name set in wrong order when importing
2024-08-12 18:24:27 +02:00
Rémi Verschelde 9fe4cb6a76
Merge pull request #93284 from rune-scape/missing-import-settings-crash
Avoid crashing when scene import settings are empty
2024-07-31 11:37:34 +02:00
jsjtxietian eab49cf256 Fix obj's name set in wrong order when importing 2024-07-31 14:50:02 +08:00
bruvzg 32bc1c2f33
[Font Import] Detect pixel fonts and disable subpixel positioning. 2024-07-23 20:34:39 +03:00
Rémi Verschelde 2380ed5e1b
Merge pull request #94058 from Hilderin/fix-scene-project-importation-settings
Fix missing options in Project Import Defaults
2024-07-17 11:42:59 +02:00
Hilderin 169e732518 Fix missing options in Project Import Defaults 2024-07-09 09:33:39 -04:00
Hugo Locurcio bbf68306c5
Fix error message being printed when importing an OBJ with no surfaces
An OBJ with no surfaces is valid, and typically happens when
you import an OBJ mesh with no associated MTL file.
2024-07-08 23:14:52 +02:00
Hugo Locurcio 5ee4100e4c
Remove unused Optimize Mesh import option from OBJ mesh import
This option was enabled by default, but it did nothing regardless
of whether it was enabled or not.
2024-07-08 22:58:51 +02:00
Arseny Kapoulkine a13a64eacd Disable normal raycaster for LOD generation by default
Normal raycaster makes LOD generation process >2x slower and often
generates normals that look significantly worse compared to what the
simplifier comes up with by default. This was likely different before
last meshoptimizer upgrade, as the attribute metric was not functioning
properly, but now it looks like it's doing more harm than good.

This change makes it disabled by default but keeps an easy option to
re-enable it per mesh using LOD parameters for now until we get more
confidence and can remove the code outright.

Because the long term plan would be to disable this feature entirely,
the scripting API isn't changed, and it's just off-by-default there with
no way to re-enable.
2024-07-02 10:18:15 -07:00
Hugo Locurcio 49b4c20f3a
Preserve existing alpha channel when using Normal Map Invert Y import option
While normal maps with RGTC compression cannot contain an alpha channel,
it is possible for Godot to read non-RGTC normal maps that can contain
an alpha channel that custom shaders can read.

The visual output for opaque images (including RGTC normal maps)
is unaffected by this change.
2024-06-28 21:48:36 +02:00
Bastiaan Olij ab0c974f28 Fix default collision shape on imported rigidbody 2024-06-24 10:16:58 +10:00
Hugo Locurcio cd7a708952
Downsample textures on import if necessary for technical reasons
Compression formats are limited to various sizes (16383×16383 for
WebP, 16384×16384 for Basis Universal). If the size is exceeded,
the texture fails to import. To avoid this, textures are now downsampled
with a warning printed when necessary.

The warning is not printed if the user has specified a size limit
and the size limit is being honored.

This also allows setting Size Limit up to 16383 pixels (the lowest
common denominator out of all compression modes), instead of being
limited to 4096 pixels.
2024-06-22 01:50:52 +02:00