godot/editor
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
..
debugger Add "Game" editor for better runtime debugging 2024-10-30 11:42:17 -03:00
export Merge pull request #98039 from aaronfranke/button-icon 2024-10-29 19:25:59 -05:00
gui Merge pull request #98039 from aaronfranke/button-icon 2024-10-29 19:25:59 -05:00
icons Add "Game" editor for better runtime debugging 2024-10-30 11:42:17 -03:00
import Rewrite index optimization code for maximum efficiency 2024-11-04 06:58:06 -08:00
plugins Merge pull request #69197 from aaronfranke/fix-tiny-convex 2024-10-31 20:14:37 -05:00
project_manager Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
themes Add "Game" editor for better runtime debugging 2024-10-30 11:42:17 -03:00
translations i18n: Sync translations with Weblate 2024-09-17 20:47:16 +02:00
action_map_editor.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
action_map_editor.h Disable Clear All button when not filtering in Editor Settings 2024-05-19 19:29:48 +08:00
add_metadata_dialog.cpp Fix Add Metadata dialog not focusing name field by default 2024-10-23 08:18:13 +08:00
add_metadata_dialog.h Add per-bone meta to Skeleton3D 2024-09-16 16:26:15 +02:00
animation_bezier_editor.cpp Fix mouse clamping in Animation Bezier box select 2024-09-27 22:25:41 -04:00
animation_bezier_editor.h Merge pull request #93860 from CookieBadger/animation-bezier-undo-on-different-animation-fix 2024-07-07 21:58:36 +02:00
animation_track_editor_plugins.cpp Remove empty bind_methods() 2024-08-15 08:24:32 +02:00
animation_track_editor_plugins.h Remove empty bind_methods() 2024-08-15 08:24:32 +02:00
animation_track_editor.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
animation_track_editor.h Set clang-format RemoveSemicolon rule to true 2024-10-25 13:49:43 -04:00
audio_stream_preview.cpp
audio_stream_preview.h
code_editor.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
code_editor.h Code Editor: Add button to toggle between search and search+replace modes 2024-09-08 10:39:06 +02:00
connections_dialog.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
connections_dialog.h Editor: Display deprecated/experimental messages in tooltips 2024-04-18 14:32:04 +03:00
create_dialog.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
create_dialog.h Use InputMap actions consistently across all LineEdit's that filter an underlying Tree or ItemList. 2024-08-31 21:10:27 +02:00
dependency_editor.cpp Merge pull request #95281 from Lunarisnia/fix/project-settings 2024-08-17 00:46:55 +02:00
dependency_editor.h Remove empty bind_methods() 2024-08-15 08:24:32 +02:00
directory_create_dialog.cpp Unify make dir and duplicate dialogs 2024-10-02 14:57:37 +02:00
directory_create_dialog.h Unify make dir and duplicate dialogs 2024-10-02 14:57:37 +02:00
doc_tools.cpp Merge pull request #78656 from Repiteo/typed-dictionary 2024-09-06 22:38:13 +02:00
doc_tools.h Generate docs from GDExtensions using --gdextension-docs with --doctool 2024-05-07 11:45:17 -05:00
editor_about.cpp Unify editor version buttons 2024-09-28 23:26:23 +08:00
editor_about.h Unify editor version buttons 2024-09-28 23:26:23 +08:00
editor_asset_installer.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
editor_asset_installer.h Remove empty bind_methods() 2024-08-15 08:24:32 +02:00
editor_atlas_packer.cpp Use Vector* component-wise min/max/clamp functions where applicable 2024-03-20 13:47:42 +01:00
editor_atlas_packer.h
editor_audio_buses.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
editor_audio_buses.h Organize existing code for editor plugins 2024-04-27 11:59:58 -07:00
editor_autoload_settings.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
editor_autoload_settings.h Fix synchronization of global class name 2024-06-25 18:33:07 -04:00
editor_build_profile.cpp StringName Dictionary keys 2024-08-29 13:39:27 -07:00
editor_build_profile.h Fix typos 2024-07-17 18:53:03 +02:00
editor_builders.py Update pre-commit hooks configuration to use ruff instead of black 2024-05-21 18:02:29 -05:00
editor_command_palette.cpp Use InputMap actions consistently across all LineEdit's that filter an underlying Tree or ItemList. 2024-08-31 21:10:27 +02:00
editor_command_palette.h Use InputMap actions consistently across all LineEdit's that filter an underlying Tree or ItemList. 2024-08-31 21:10:27 +02:00
editor_data.cpp Enforce that custom nodes keep their original type 2024-10-22 18:18:16 +02:00
editor_data.h Add EditorContextMenuPluginManager and refactor menu plugins 2024-09-03 23:59:25 +02:00
editor_dock_manager.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
editor_dock_manager.h Fix first time of Toggle Last Opened Bottom Panel opens Output panel 2024-07-07 12:11:37 -04:00
editor_feature_profile.cpp Add "Game" editor for better runtime debugging 2024-10-30 11:42:17 -03:00
editor_feature_profile.h Add "Game" editor for better runtime debugging 2024-10-30 11:42:17 -03:00
editor_file_system.cpp Emit filesystem_changed only once per frame 2024-10-28 09:09:52 +02:00
editor_file_system.h Emit filesystem_changed only once per frame 2024-10-28 09:09:52 +02:00
editor_folding.cpp Fix for folding "Editable Children" nodes in Scene tree not being saved 2024-07-29 08:12:34 -04:00
editor_folding.h
editor_help_search.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
editor_help_search.h Fix wrong displayed category name in EditorHelpSearch 2024-09-21 00:07:11 +08:00
editor_help.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
editor_help.h Editor: Fix EditorHelpBitTooltip for Signals dock 2024-07-05 16:08:35 +03:00
editor_inspector.compat.inc Display custom data name instead of indices in TileData inspector 2024-05-25 17:21:31 +02:00
editor_inspector.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
editor_inspector.h Merge pull request #96542 from Maran23/inspector-scrolls-away 2024-10-01 17:30:45 +02:00
editor_interface.compat.inc Pass current value to EditorInterface node/property popups 2024-09-03 00:54:55 -04:00
editor_interface.cpp Make the "Quick Open" dialog available via EditorInterface 2024-10-04 11:36:17 -03:00
editor_interface.h Make the "Quick Open" dialog available via EditorInterface 2024-10-04 11:36:17 -03:00
editor_layouts_dialog.cpp [Scene] Add SceneStringNames::text/value_changed 2024-06-19 09:44:38 +02:00
editor_layouts_dialog.h
editor_locale_dialog.cpp [Scene] Add SceneStringName::toggled 2024-08-28 15:14:26 +03:00
editor_locale_dialog.h Split TranslationServer into its own file 2024-08-15 15:00:47 +08:00
editor_log.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
editor_log.h [Scene] Add SceneStringName::toggled 2024-08-28 15:14:26 +03:00
editor_main_screen.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
editor_main_screen.h Add "Game" editor for better runtime debugging 2024-10-30 11:42:17 -03:00
editor_native_shader_source_visualizer.cpp [Editor] Expose more editor settings to documentation 2024-09-12 15:34:49 +02:00
editor_native_shader_source_visualizer.h Improve the editor native shader source visualizer 2024-03-22 00:17:32 +01:00
editor_node.cpp Add "Game" editor for better runtime debugging 2024-10-30 11:42:17 -03:00
editor_node.h Set clang-format RemoveSemicolon rule to true 2024-10-25 13:49:43 -04:00
editor_paths.cpp Create .editorconfig file only on project creation 2024-10-05 14:32:55 +08:00
editor_paths.h Automatically generate the Android debug keystore 2024-04-12 23:53:28 -07:00
editor_properties_array_dict.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
editor_properties_array_dict.h Implement typed dictionaries 2024-09-04 10:27:26 -05:00
editor_properties_vector.cpp Merge pull request #96196 from SaracenOne/bone_editor_revert 2024-08-29 10:36:34 +02:00
editor_properties_vector.h
editor_properties.cpp Merge pull request #98039 from aaronfranke/button-icon 2024-10-29 19:25:59 -05:00
editor_properties.h Merge pull request #90047 from ajreckof/fix-editing-exported-nodes-in-array-as-text 2024-10-25 13:04:00 -05:00
editor_property_name_processor.cpp Add "OpenGL 3", "GLES" and "Linux/*BSD" to editor property capitalization 2024-10-26 16:24:00 +02:00
editor_property_name_processor.h Remove references to deleted capitalize_properties setting 2024-08-21 17:27:54 +02:00
editor_resource_picker.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
editor_resource_picker.h Enforce that custom nodes keep their original type 2024-10-22 18:18:16 +02:00
editor_resource_preview.cpp Implement asynchronous transfer queues, thread guards on RenderingDevice. Add ubershaders and rework pipeline caches for Forward+ and Mobile. 2024-10-02 15:11:58 -03:00
editor_resource_preview.h New Quick Open Dialog 2024-10-01 21:39:16 +02:00
editor_run_native.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
editor_run_native.h
editor_run.cpp
editor_run.h
editor_script.cpp GDExtension: Mark virtual function as is_required in extension_api.json 2024-09-11 16:48:14 -05:00
editor_script.h GDExtension: Mark virtual function as is_required in extension_api.json 2024-09-11 16:48:14 -05:00
editor_sectioned_inspector.cpp Keep advanced toggle on when searching for settings 2024-09-21 21:15:46 +08:00
editor_sectioned_inspector.h Keep advanced toggle on when searching for settings 2024-09-21 21:15:46 +08:00
editor_settings_dialog.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
editor_settings_dialog.h Add Advanced Settings switch to Editor Settings 2024-09-17 12:20:55 +02:00
editor_settings.cpp Fix implementation of property_can_revert() in various classes 2024-10-04 23:02:04 +02:00
editor_settings.h Consolidate remembering window settings into single config 2024-10-01 16:35:36 +02:00
editor_string_names.cpp
editor_string_names.h
editor_translation_parser.cpp Reduce and prevent unnecessary random-access to List 2024-05-04 16:08:55 +02:00
editor_translation_parser.h
editor_translation.cpp Make editor use translation domains 2024-09-17 13:09:44 +08:00
editor_translation.h Improve string extraction of ETR POT file 2024-05-07 22:12:40 -03:00
editor_undo_redo_manager.cpp Discard additional redo on commiting actions 2024-09-24 15:47:55 +02:00
editor_undo_redo_manager.h Expose EditorUndoRedoManager's clear_history() 2024-08-29 19:23:39 +02:00
editor_vcs_interface.cpp GDExtension: Mark virtual function as is_required in extension_api.json 2024-09-11 16:48:14 -05:00
editor_vcs_interface.h GDExtension: Mark virtual function as is_required in extension_api.json 2024-09-11 16:48:14 -05:00
engine_update_label.cpp Fix determining the availability of a new version 2024-06-20 15:56:50 +02:00
engine_update_label.h Rework and simplify update checking logic 2024-05-31 18:49:32 +02:00
event_listener_line_edit.cpp Fix InputEvent device id clash 2024-10-20 21:56:41 +02:00
event_listener_line_edit.h
fbx_importer_manager.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
fbx_importer_manager.h
file_info.cpp Add filter & sort to editor file dialog 2024-09-26 11:08:13 -03:00
file_info.h Add filter & sort to editor file dialog 2024-09-26 11:08:13 -03:00
filesystem_dock.cpp Remove unused FILE_INFO from FileSystem dock 2024-10-30 06:08:52 +01:00
filesystem_dock.h Remove unused FILE_INFO from FileSystem dock 2024-10-30 06:08:52 +01:00
find_in_files.cpp [Scene] Add SceneStringNames::text/value_changed 2024-06-19 09:44:38 +02:00
find_in_files.h Hide Search Results by default. Show it on first search and push it at the end. Add a close button to hide it back. Also switch to Script Editor if a searched line is clicked. 2024-03-16 20:42:05 +01:00
group_settings_editor.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
group_settings_editor.h Add Ctrl + L / Cmd + Shift + G shortcut to focus path bar in FileDialog 2024-03-05 00:02:09 +01:00
groups_editor.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
groups_editor.h
history_dock.cpp [Scene] Add SceneStringName::toggled 2024-08-28 15:14:26 +03:00
history_dock.h
import_defaults_editor.cpp Keep advanced toggle on when searching for settings 2024-09-21 21:15:46 +08:00
import_defaults_editor.h
import_dock.cpp Don't swap Advanced Import Settings button position based on Swap OK Cancel 2024-10-18 23:28:11 +02:00
import_dock.h Add support for resource conversion plugins in filesystem dock. 2024-09-16 15:11:40 +01:00
input_event_configuration_dialog.cpp Fix InputEvent device id clash 2024-10-20 21:56:41 +02:00
input_event_configuration_dialog.h (Un)Fold event categories by double click 2024-05-11 20:38:46 +02:00
inspector_dock.cpp Merge pull request #98039 from aaronfranke/button-icon 2024-10-29 19:25:59 -05:00
inspector_dock.h Set clang-format RemoveSemicolon rule to true 2024-10-25 13:49:43 -04:00
localization_editor.cpp Better undo action names for localization editor 2024-09-21 19:58:17 +08:00
localization_editor.h
multi_node_edit.cpp Fix implementation of property_can_revert() in various classes 2024-10-04 23:02:04 +02:00
multi_node_edit.h [Core] Add LocalVector::has for convenience 2024-05-06 18:03:37 +02:00
node_dock.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
node_dock.h Remove empty bind_methods() 2024-08-15 08:24:32 +02:00
pot_generator.cpp Improve string extraction of ETR POT file 2024-05-07 22:12:40 -03:00
pot_generator.h
progress_dialog.cpp Fix slow importation when window is unfocused 2024-08-27 19:57:38 -04:00
progress_dialog.h Fix slow importation when window is unfocused 2024-08-27 19:57:38 -04:00
project_converter_3_to_4.cpp Set clang-format RemoveSemicolon rule to true 2024-10-25 13:49:43 -04:00
project_converter_3_to_4.h
project_manager.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
project_manager.h Unify editor version buttons 2024-09-28 23:26:23 +08:00
project_settings_editor.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
project_settings_editor.h Fix synchronization of global class name 2024-06-25 18:33:07 -04:00
property_selector.cpp Merge pull request #96400 from Maran23/inputmap-usage-for-filter-and-corresponding-refactor 2024-09-16 13:34:38 +02:00
property_selector.h Use InputMap actions consistently across all LineEdit's that filter an underlying Tree or ItemList. 2024-08-31 21:10:27 +02:00
register_editor_types.cpp Unify particle editors 2024-10-04 22:36:12 +02:00
register_editor_types.h
register_exporters.h
rename_dialog.cpp [Scene] Add SceneStringName::toggled 2024-08-28 15:14:26 +03:00
rename_dialog.h Set clang-format RemoveSemicolon rule to true 2024-10-25 13:49:43 -04:00
renames_map_3_to_4.cpp Implement vertex shading 2024-09-29 00:36:09 +02:00
renames_map_3_to_4.h
reparent_dialog.cpp [Scene] Add SceneStringNames::confirmed 2024-06-19 09:40:54 +02:00
reparent_dialog.h
run_instances_dialog.cpp [Scene] Add SceneStringName::toggled 2024-08-28 15:14:26 +03:00
run_instances_dialog.h
scene_create_dialog.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
scene_create_dialog.h
scene_tree_dock.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
scene_tree_dock.h Enforce that custom nodes keep their original type 2024-10-22 18:18:16 +02:00
script_create_dialog.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
script_create_dialog.h Allow configuring the script filename casing rule 2024-03-05 09:43:29 +01:00
SCsub SCons: Add unobtrusive type hints in SCons files 2024-09-25 09:34:35 -05:00
shader_create_dialog.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
shader_create_dialog.h
shader_globals_editor.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
shader_globals_editor.h Organize existing code for editor plugins 2024-04-27 11:59:58 -07:00
surface_upgrade_tool.cpp [Scene] Add SceneStringNames::confirmed 2024-06-19 09:40:54 +02:00
surface_upgrade_tool.h Set clang-format RemoveSemicolon rule to true 2024-10-25 13:49:43 -04:00
template_builders.py Fix not using encoding="utf-8" when writing to files or reading from them 2024-06-19 23:35:03 +08:00
window_wrapper.cpp Rename internal Button icon to button_icon to match exposed methods 2024-10-29 16:23:03 -07:00
window_wrapper.h Fix PopupPanel menu style 2024-10-20 13:26:45 +02:00