Commit Graph

1113 Commits

Author SHA1 Message Date
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
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
f5b49af99f Add RetargetModifier3D for realtime retarget to keep original rest 2024-11-18 22:44:55 +09:00
68f638cf02 Use (r)find_char instead of (r)find for single characters 2024-11-17 10:02:18 +01:00
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
2ed6d12652 Merge pull request #97363 from reduz/deterministic-gen-suberesources-id
Allow passing UID to importer
2024-11-11 14:18:30 -06:00
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
204f589213 Merge pull request #97551 from lalitshankarchowdhury/resize-audio-waveform
AudioStreamImport: Allow waveform resize
2024-11-11 14:18:00 -06:00
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
925b690c98 Core: Integrate Ref::instantiate where possible 2024-11-10 12:41:26 -06:00
b40e04d94f Remove unnecessary condition 2024-11-09 10:42:22 +09:00
3a7efc9edf Merge pull request #98874 from aaronfranke/gltf-preserve-visibility
GLTF: Preserve node visibility on import
2024-11-07 12:36:35 -06:00
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
924732772b GLTF: Preserve node visibility on import 2024-11-05 19:06:08 -08:00
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
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
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
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
562c666e3d Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
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
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
0d350e7108 Set clang-format RemoveSemicolon rule to true
- Set clang-format `Standard` rule to `c++20`
2024-10-25 13:49:43 -04:00
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
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
bbb8c1703b Fix freeze on non-thread-safe custom importers 2024-10-15 11:46:14 -04:00
e4b8cd2948 [Font Importer] Update Unicode block list to Unicode 16.0 2024-10-15 12:40:30 +03:00
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
200ed0971a BasisU: Update to 1.50.0 and add HDR support 2024-10-12 18:02:44 +02:00
77dab88ef0 Fix 3D HDR texture import with lossless compression 2024-10-04 23:38:39 +02:00
c574377a1c AudioStreamImport: Allow waveform resize 2024-09-29 13:58:25 +05:30
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
21f7c8a25f Fix slow editor load on large projects (v2) 2024-09-25 17:36:39 -04:00
9f9ee0c813 SCons: Add unobtrusive type hints in SCons files 2024-09-25 09:34:35 -05:00
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
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
147accdf74 WAV: Fix one frame overflow at the end 2024-09-11 21:57:14 -03:00
b0f99099b4 Add "Use Node Type Suffixes" scene import option 2024-09-09 01:12:14 -07:00
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
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
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
7cd095dea1 Merge pull request #96401 from SaracenOne/filter_improvement
Enforce correct type for silhouette filter.
2024-09-02 18:08:12 +02:00
107f2aea88 Enforce correct type for silhouette filter. 2024-08-31 20:35:09 +01:00
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
d3b51c4efb ResourceImporterWAV: Enable QOA compression by default 2024-08-31 00:42:56 -03:00
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
5a50b3a6c5 WAV stream/importer: Improve compression/loop names and descriptions 2024-08-30 16:31:57 -03:00
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
31253257b3 Attempt applying RESET pose during import. 2024-08-29 22:58:26 +01:00
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
52889ab7ee [Scene] Add SceneStringName::toggled 2024-08-28 15:14:26 +03:00